-》
WordNet
去搞清楚:
是什么
用来干什么
WordNet
“WordNet是一个由普林斯顿大学认识科学实验室在心理学教授乔治·A·米勒的指导下建立和维护的英语字典。开发工作从1985年开始,从此以后该项目接受了超过300万美元的资助。 由于它包含了语义信息,所以有别于通常意义上的字典。WordNet根据词条的意义将它们分组,每一个具有相同意义的字条组称为一个synset。”
【总结】
WordNet
- 是什么:英语字典
- 核心和特点:
- 包含了语义信息
- 不是普通的字典
- 关系
- 关系种类
- 主要都是同义词,同义关系=synonymy
- 举例
- shut和close
- car和automotive
- 指的是:在很多语境下都可以互换interchangeable
- 还有其他关系
- 反义词,反义关系=antonymy
- 上下位关系hypernymy/hyponymy
- 整体和部分关系(meronymy)
- 继承关系(entailment)
- 同义词被分组合并成一个:synset
- synset=同义词集合:
- 包含
- 各种类型单词
- 名词Nouns
- 动词verbs
- 形容词adjectives
- 副词adverbs
- 都有
- gloss:简短,概要的定义
- 大多数:一句话
- 描述了此synset中单词的用法
- 是什么
- 每一个具有相同意义的字条组
- 表达了一个唯一的概念concept
- 无序的集合
- 总数:11.7万个
- 总体上
- 不同synset互相关联
- 记录不同synset之间的语义关系
- 通过:conceptual relations=逻辑概念上的关系
- 注意
- 不同形式表现不同含义的单词:会被放到不同的synset中
- -》每一个 形式-含义 对 在wordnet中是唯一的
- 词汇结构=关系
- 九大类
- 上下位关系=hyperonymy, hyponymy or ISA (动词、名词)
- 最多:占了近80%
- 蕴含关系=整体-部分Holonymy(动词)
- 相似关系(名词)
- 成员部分关系(名词)
- 物质部分关系(名词)
- 部件部分=部分-整体关系=Meronymy(名词)
- 致使关系=转指关系=Metonymy(动词)
- 相关动词关系(动词)
- 属性关系(形容词)
- 目的:
- 既是一个字典,又是一个辞典
- 比单纯的辞典或词典都更易于使用
- 用于:
- 文本分析
- 人工智能应用
- NLP自然语言处理
- 输出结果
- 名词网络
- 最顶层:11个抽象概念
- =基本类别始点(unique beginners)
- 比如:
- 实体(entity,“有生命的或无生命的具体存在”)
- 心理特征(psychological feature,“生命有机体的精神上的特征)
- 缺点
- 中文支持度不够好
- 词条太少
- 共11.7万
- 中文:4.2万
- 中文名词:2.7万
- 没有一些常见的词汇:
- 城市:上海、伦敦
- 其他
- 共产党
- 普通话
- 汉语词义存在错误
- 部分词条存在结构性问题
- 网球问题
- 消歧问题
- 词性较少
【WordNet技术细节】
背景:NLTK中集成了WordNet
-》去NLTK中导入(使用)WordNet:
1 2 3 | from nltk.corpus import wordnet 或: from nltk.corpus import wordnet as wn |
- 类比说明
- 如果:WordNet 数据库
- 那么:
- 每一条数据:代表的是一个词义
- 其主键是:Synset
1 2 3 | >>> wn.synsets( 'dog' ) # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE [Synset( 'dog.n.01' ), Synset( 'frump.n.01' ), Synset( 'dog.n.03' ), Synset( 'cad.n.01' ), Synset( 'frank.n.02' ), Synset( 'pawl.n.01' ), Synset( 'andiron.n.01' ), Synset( 'chase.v.01' )] |
WordNet的输出:
- 三部分:
- =word.pos.nn
- =词义.词性.编号
- 举例说明:
- dog.n.01
- dog:词义
- n:词性,none,名词
- 01:编号
所以可以指定词性:
1 2 | >>> wn.synsets( 'dog' , pos = wn.VERB) [Synset( 'chase.v.01' )] |
注:WordNet中的4个词性:
- wordnet.VERB=动词
- wordnet.NOUN=名词
- wordnet.ADJ=形容词
- wordnet.ADV=副词
去看看定义definition:
1 2 3 4 | >>> wn.synset( 'dog.n.01' ) Synset( 'dog.n.01' ) >>> print (wn.synset( 'dog.n.01' ).definition()) a member of the genus Canis (probably descended from the common wolf) that has been domesticated by man since prehistoric times; occurs in many breeds |
以及有哪些示例:
1 2 3 4 | >>> len (wn.synset( 'dog.n.01' ).examples()) 1 >>> print (wn.synset( 'dog.n.01' ).examples()[ 0 ]) the dog barked all night |
查看其他的词条=还原词性后的单词=lemma=全称是lemmatization:
1 2 3 4 5 6 | >>> wn.synset( 'dog.n.01' ).lemmas() [Lemma( 'dog.n.01.dog' ), Lemma( 'dog.n.01.domestic_dog' ), Lemma( 'dog.n.01.Canis_familiaris' )] >>> [ str (lemma.name()) for lemma in wn.synset( 'dog.n.01' ).lemmas()] [ 'dog' , 'domestic_dog' , 'Canis_familiaris' ] >>> wn.lemma( 'dog.n.01.dog' ).synset() Synset( 'dog.n.01' ) |
注:
中文含义:
狗=家犬domestic dog=(由狼演化来的)食肉类哺乳动物Canis familiaris
反义词:
1 2 3 | >>> good = wn.synset( 'good.a.01' ) >>> good.lemmas()[ 0 ].antonyms() [Lemma( 'bad.a.01.bad' )] |
查询两个词之间的语义相似度
1 2 3 4 | >>> dog = wn.synset( 'dog.n.01' ) >>> cat = wn.synset( 'cat.n.01' ) >>> dog.path_similarity(cat) 0.2 |
注意:
- 名词和动词被组织成了完整的层次式分类体系
- 形容词和副词没有被组织成分类体系
- 所以不能用path_distance
- 形容词和副词最有用的关系是similar to
1 2 | >>> beau.similar_tos() [Synset( 'beauteous.s.01' ), Synset( 'bonny.s.01' ), Synset( 'dishy.s.01' ), Synset( 'exquisite.s.04' ), Synset( 'fine-looking.s.01' ), Synset( 'glorious.s.03' ), Synset( 'gorgeous.s.01' ), Synset( 'lovely.s.01' ), Synset( 'picturesque.s.01' ), Synset( 'pretty-pretty.s.01' ), Synset( 'pretty.s.01' ), Synset( 'pulchritudinous.s.01' ), Synset( 'ravishing.s.01' ), Synset( 'scenic.s.01' ), Synset( 'stunning.s.04' )] |
更多代码示例详见:
转载请注明:在路上 » 【整理】WordNet