我想知道是否有一种简单的方法可以在WordNet中获取名词的同义词。似乎形容词的同义词很容易获得。
for ss in wn.synsets('beautiful'):
print(ss)
for sim in ss.similar_tos():
print(' {}'.format(sim))
我在另一个SO问题中找到了上面的代码,它对形容词很有效。但是当我的单词是'gasoline'或'fire'时,结果很糟糕。理想情况下,我希望得到一个与这个网站非常相似的单词列表。
我尝试过的另一种方法效果很好,但非常缓慢:
def syn(word, lch_threshold=2.26):
for net1 in wn.all_synsets():
try:
lch = net1.lch_similarity(wn.synset(word))
except:
continue
# The value to compare the LCH to was found empirically.
# (The value is very application dependent. Experiment!)
if lch >= lch_threshold:
yield (net1, lch)
for x in syn('gasoline.n.1'):
print x
这也是从另一个SO问题中发现的。有没有一种更简单的方式来获取像上面链接中提供的名词的同义词?
wn.synsets('word')
单独给出同义词,但对于名词而言并不有趣。形容词仍需以上述第一种方法提供的额外步骤。使用该方法查询名词将得到空结果,使用您提供的引文同形还原词也是如此。我提供的第二种方法对名词效果很好(定义很重要),但会非常缓慢,因为需要遍历整个同义词集合。似乎通过网络爬虫获取所需信息更加容易。 - Ted Petrouwn.synsets('word')
不会返回同义词!它会返回给定单词的不同语义概念。例如,wn.synsets('cat')
返回[Synset('cat.n.01'), Synset('guy.n.01'), ... Synset('caterpillar.n.02'), ... Synset('vomit.v.01')]
。 - char bugs