ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python-比较同义词NLTK

2019-11-20 13:56:07  阅读:455  来源: 互联网

标签:synonym wordnet nlp nltk python


这个问题已经在这里有了答案:            >            All synonyms for word in python?                                     3个
我无法提出一个陌生人的问题,想您会帮我的.

for p in wn.synsets('change'):<br>
    print(p)

获得:

Synset('change.n.01')
Synset('change.n.02')
Synset('change.n.03')
Synset('change.n.04')
Synset('change.n.05')
Synset('change.n.06')
Synset('change.n.07')
Synset('change.n.08')
Synset('change.n.09')
Synset('variety.n.06')
Synset('change.v.01')
Synset('change.v.02')
Synset('change.v.03')
Synset('switch.v.03')
Synset('change.v.05')
Synset('change.v.06')
Synset('exchange.v.01')
Synset('transfer.v.06')
Synset('deepen.v.04')
Synset('change.v.10')

例如,我有一个字符串:

a = 'transfer'

我希望能够识别单词’change’的各种同义词并知道“转移”就是其中之一.我怎么问我的程序:
“’转移’是’变化’的同义词之一吗?”

解决方法:

首先,wordnet索引概念(又称同义词集)并为每个概念链接可能的单词,以下代码显示了这些概念链接到单词“ change”的情况:

>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('change')
[Synset('change.n.01'), Synset('change.n.02'), Synset('change.n.03'), Synset('change.n.04'), Synset('change.n.05'), Synset('change.n.06'), Synset('change.n.07'), Synset('change.n.08'), Synset('change.n.09'), Synset('variety.n.06'), Synset('change.v.01'), Synset('change.v.02'), Synset('change.v.03'), Synset('switch.v.03'), Synset('change.v.05'), Synset('change.v.06'), Synset('exchange.v.01'), Synset('transfer.v.06'), Synset('deepen.v.04'), Synset('change.v.10')]

同义词集具有几个属性,它具有:

>身份证号码
>词性标签
>定义
>引理名称,即可以用来实例化概念的可能单词
>通过N-nymy关系链接到其他同义词集(例如,上位词,下位词,别名)

这是在NLTK中连接以上属性的方法:

>>> wn.synsets('change')[0]
Synset('change.n.01')
>>> wn.synsets('change')[0].offset()
7296428
>>> wn.synsets('change')[0].pos()
u'n'
>>> wn.synsets('change')[0].definition()
u'an event that occurs when something passes from one state or phase to another'
>>> wn.synsets('change')[0].lemma_names()
[u'change', u'alteration', u'modification']
>>> wn.synsets('change')[0].hypernyms()
[Synset('happening.n.01')]

但是,同义词集不一定具有同义词关系.如果我们将同义词定义为具有相似含义的单词,则具有同义词关系的单词(即lemmas).另外,单词的上下文定义单词是否是另一个的同义词.单个单词的含义有限,它是包含概念并通过人类单词实例化含义的“概念”.至少这是典型的语义学理论,请参见http://goo.gl/ZHzlNF中的第2章

因此,当您要问“转移”是“变更”的同义词时,您必须首先:

>定义/选择您在此处所指的概念,并提供使用“转移”的上下文,Google Word Sense消除歧义
>定义您所指的变更概念.

这样就可以比较含义.

也可以看看:

> All synonyms for word in python?
> How to get synonyms from nltk WordNet Python

标签:synonym,wordnet,nlp,nltk,python
来源: https://codeday.me/bug/20191120/2044590.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有