我是nltk
的新手,我发现wordnet功能非常有用。它提供了synsets
,hypernyms
,similarity
等等。但是它没有给出像'德里'这样的位置之间的相似性 - '海德拉巴'显然因为这些单词不在wordnet语料库中。
所以,我想知道,如果我能以某种方式更新wordnet语料库或在不同的语料库上创建wordnet,例如从维基百科中提取的与旅行相关的页面集?如果我们可以在不同的语料库上创建wordnet,那么格式是什么,做同样的步骤,有什么限制?
请您指出描述上述问题的链接。我搜索了互联网,谷歌搜索,阅读部分nltk书,但我没有一个提示上面的问题。
请原谅我,如果这个问题听起来完全荒谬的话。答案 0 :(得分:2)
为了灵活地测量像Dehli或Hyderabad这样的特定术语的语义相似性,你想要的不是像WordNet那样手工制作的东西,而是来自的自动学习的相似性度量非常大的数据库。这些是statistical similarity方法。当然,您希望避免自己在数据上训练这样的模型......
因此,可能有用的一件事是Google距离(wikipedia,original paper)。用R(code)这样的语言来实现这样的措施似乎相当简单,原始论文报告了与WordNet达成87%的协议。
答案 1 :(得分:1)
Wordnet中的相似性度量按预期工作,因为Wordnet测量语义相似性。从这个意义上说,两者都是城市,所以它们非常相似。您正在寻找的可能是geographic similarity
。
delhi = wn.synsets('Delhi', 'n')[0]
print delhi.definition()
# a city in north central India
hyderabad = wn.synsets('Hyderabad', 'n')[0]
print hyderabad.definition()
# a city in southern Pakistan on the Indus River
delhi.wup_similarity(hyderabad)
# 0.9
melon = wn.synsets('melon', 'n')[0]
delhi.wup_similarity(melon)
# 0.3
有一个名为Geowordnet的Wordnet扩展程序。我有点像你一样遇到了同样的问题,并试图用一些扩展来统一Wordnet:wnext。希望有所帮助。