我正在使用python2.7中的nltk模块。下面是我的代码
from nltk.corpus import wordnet as wn
listsyn1 = []
listsyn2 = []
for synset in wn.synsets('dog', pos=wn.NOUN):
print synset.name()
for lemma in synset.lemmas():
listsyn1.append(lemma.name())
for synset in wn.synsets('paw', pos=wn.NOUN):
print synset.name()
for lemma in synset.lemmas():
listsyn2.append(lemma.name())
countsyn1 = len(listsyn1)
countsyn2 = len(listsyn2)
sumofsimilarity = 0;
for firstgroup in listsyn1:
for secondgroup in listsyn2:
print(firstgroup.wup_similarity(secondgroup))
sumofsimilarity = sumofsimilarity + firstgroup.wup_similarity(secondgroup)
averageofsimilarity = sumofsimilarity/(countsyn1*countsyn2)
当我尝试运行这段代码时,我得到错误“AttributeError:'unicode'object has no attribute'wup'u similarity'”。谢谢你的帮助。在
相似性度量只能由}(即
Synset
对象而不是Lemma
或{str
类型)访问。在[出来]:
^{pr2}$当您获得
.lemmas()
并从Synset
对象访问.names()
属性时,您将得到str
:[出来]:
您可以使用
hasattr
函数检查哪些对象/类型可以访问某个函数或属性:[出来]:
最有可能的是,您需要一个类似于https://github.com/alvations/pywsd/blob/master/pywsd/similarity.py#L76的函数,它可以最大化跨两个synset的
wup_similarity
,但请注意,有许多注意事项,如预词素化是必要的。在所以我想你应该用
.lemma_names()
来避免它。或许,你可以这样做:但最有可能的结果是不可解释和不可靠的,因为在synset-lookup-bot之前,在外循环和内环中没有词义消歧。在
相关问题 更多 >
编程相关推荐