WordNet很棒,但我很难在nltk中获取同义词.如果您在此处搜索类似于"小"的单词,则会显示所有同义词.
基本上我只需要知道以下内容:
wn.synsets('word')[i].option()where选项可以是上位词和反义词,但获取同义词的选项是什么?
我正在尝试解决一个 nlp 问题,其中我有一个单词字典,例如:
list_1={'phone':'android','chair':'netflit','charger':'macbook','laptop','sony'}
Run Code Online (Sandbox Code Playgroud)
现在,如果输入是 'phone' 我可以轻松地使用 'in' 运算符通过按键获取电话及其数据的描述,但问题是输入是否类似于 'phones' 或 'Phones' 。
我想如果我输入“电话”然后我会得到这样的词
'phone' ==> 'Phones','phones','Phone','Phone's','phone's'
Run Code Online (Sandbox Code Playgroud)
我不知道我可以使用哪个 word2vec 以及哪个 nlp 模块可以提供这样的解决方案。
第二个问题是,如果我给出一个词“狗”,我可以得到“小狗”、“基蒂”、“狗”、“狗”等词吗?
我尝试过类似的方法,但它给出了同义词:
from nltk.corpus import wordnet as wn
for ss in wn.synsets('phone'): # Each synset represents a diff concept.
print(ss)
Run Code Online (Sandbox Code Playgroud)
但它返回:
Synset('telephone.n.01')
Synset('phone.n.02')
Synset('earphone.n.01')
Synset('call.v.03')
Run Code Online (Sandbox Code Playgroud)
相反,我想要:
'phone' ==> 'Phones','phones','Phone','Phone's','phone's'
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Wordnet获取给定单词的同义词.问题是尽管我做的和写在这里一样:在这里,它返回错误.
这是我的代码:
from nltk.corpus import wordnet as wn
import nltk
dog = wn.synset('dog.n.01')
print dog.lemma_names
>>> <bound method Synset.lemma_names of Synset('dog.n.01')>
for i,j in enumerate(wn.synsets('small')):
print "Synonyms:", ", ".join(j.lemma_names)
>>> Synonyms:
Traceback (most recent call last):
File "C:/Users/Python/PycharmProjects/PribliznostneVyhladavanie/testy.py", line 38, in <module>
print "Synonyms:", ", ".join(j.lemma_names)
TypeError
Run Code Online (Sandbox Code Playgroud)
我唯一想要的是说出一个单词并获得同义词列表.有谁知道什么是错的?
编辑:我尝试了另一个建议,我在这里找到stackoverflow.它也不起作用.
syns = wn.synsets('car')
print [l.name for s in syns for l in s.lemmas]
>>> TypeError: 'instancemethod' object is not iterable
Run Code Online (Sandbox Code Playgroud)