最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【整理】WordNet

关系 crifan 2087浏览 0评论
Natural Language Toolkit — NLTK 3.4.5 documentation
-》
WordNet
去搞清楚:
是什么
用来干什么
WordNet
WordNet | A Lexical Database for English
WordNet – 维基百科,自由的百科全书
“WordNet是一个由普林斯顿大学认识科学实验室在心理学教授乔治·A·米勒的指导下建立和维护的英语字典。开发工作从1985年开始,从此以后该项目接受了超过300万美元的资助。 由于它包含了语义信息,所以有别于通常意义上的字典。WordNet根据词条的意义将它们分组,每一个具有相同意义的字条组称为一个synset。”
【Python&NLP】关于WordNet,我的一些用法和思路(二) – 知乎
python WordNet的使用方法(整理版) – King_John的专栏 – CSDN博客
WordNet Interface
【总结】
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:
from nltk.corpus import wordnet
或:
from nltk.corpus import wordnet as wn
  • 类比说明
    • 如果:WordNet 数据库
    • 那么:
      • 每一条数据:代表的是一个词义
        • 其主键是:Synset
>>> 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:编号
所以可以指定词性:
>>> wn.synsets('dog', pos=wn.VERB)
[Synset('chase.v.01')]
注:WordNet中的4个词性:
  • wordnet.VERB=动词
  • wordnet.NOUN=名词
  • wordnet.ADJ=形容词
  • wordnet.ADV=副词
去看看定义definition:
>>> 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
 
以及有哪些示例:
>>> len(wn.synset('dog.n.01').examples())
1
>>> print(wn.synset('dog.n.01').examples()[0])
the dog barked all night
查看其他的词条=还原词性后的单词=lemma=全称是lemmatization:
>>> 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
反义词:
>>> good = wn.synset('good.a.01')
>>> good.lemmas()[0].antonyms()
[Lemma('bad.a.01.bad')]
查询两个词之间的语义相似度
>>> dog = wn.synset('dog.n.01')
>>> cat = wn.synset('cat.n.01')
>>> dog.path_similarity(cat)
0.2
注意:
  • 名词和动词被组织成了完整的层次式分类体系
    • 形容词和副词没有被组织成分类体系
      • 所以不能用path_distance
      • 形容词和副词最有用的关系是similar to
>>> 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 Interface
python WordNet的使用方法(整理版) – King_John的专栏 – CSDN博客

转载请注明:在路上 » 【整理】WordNet

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.175 seconds, using 21.92MB memory