zoukankan      html  css  js  c++  java
  • NLTK库WordNet的使用方法实例


    1、在代码中引入wordnet包

    >>>from nltk.corpus import wordnet as wn
    

    2、查询一个词所在的所有词集(synsets)

    >>>wn.synsets('dog')
    [Synset('dog.n.01'), Synset('frump.n.01'), 
    Synset('frank.n.02'), Synset('pawl.n.01'), 
    Synset('andiron.n.01'), Synset('chase.v.01')]

    3、查询一个同义词集的定义

    >>> wn.synset('apple.n.01').definition()
    'fruit with red or yellow or green skin and sweet to tart crisp whitish flesh'

    4、查询词语一个词义的例子

    >>> wn.synset('dog.n.01').examples()
    ['the dog barked all night']

    5、查询词语某种词性所在的同义词集合

    >>> wn.synsets('dog',pos=wn.NOUN)
    [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')]

    注:pos值可以为——NOUN,VERB,ADJ,ADV…

    6、查询一个同义词集中的所有词

    >>> wn.synset('dog.n.01').lemma_names( )
    ['dog', 'domestic_dog', 'Canis_familiaris']

    7、输出词集和词的配对——词条(lemma)

    >>> wn.synset('dog.n.01').lemmas( )
    [Lemma('dog.n.01.dog'),
     Lemma('dog.n.01.domestic_dog'), 
     Lemma('dog.n.01.Canis_familiaris')]

    8、利用词条查询反义词

    >>> good = wn.synset('good.a.01')
    >>> good.lemmas()[0].antonyms()
    [Lemma('bad.a.01.bad')]

    9、查询两个词之间的语义相似度

    path_similarity函数,值从0-1,越大表示相似度越高

    >>> 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')]  

    附:

    10. 其他词汇关系:蕴含、反义词

    蕴含:entailments()

    以上的分析多是针对名词,对于动词,也存在关系。这里只有列出了一种蕴含的关系:
    entailments()方法,同样由一个词集调用:

    >>> wn.synset('walk.v.01').entailments()#走路蕴含着抬脚
    [Synset('step.v.01')]

    反义词:antonyms()

    由一个词条调用:wn.lemma(‘supply.n.02.supply’)

    >>> wn.lemma('supply.n.02.supply').antonyms()
    [Lemma('demand.n.02.demand')]
    >>>

    注意所用词语的词性,笔者试着对形容词取反义词:

    >>> wn.lemma('hot.a.01.hot').antonyms()#hot对cold,中间的词性标记为a,而不是n或v
    [Lemma('cold.a.01.cold')]
    >>>
  • 相关阅读:
    css3
    ubuntu /mac 终端命令大全
    MarkDown的语法的简要规则
    向github上传一个项目
    datatable 去掉默认功能
    datatable 自定义筛选
    vuex
    es6入门教程
    datatable 指定添加排序,根据列的值来设置颜色
    在ios上块点击出现闪黑底
  • 原文地址:https://www.cnblogs.com/qq874455953/p/10792575.html
Copyright © 2011-2022 走看看