對於一個項目,我想測量文本中「以人爲本」的詞的數量。我打算使用WordNet來完成這項工作。我從來沒有使用它,我不太清楚如何處理這個任務。我想使用WordNet來計算屬於某些同義詞的詞的數量,例如sysnets的「人」和「人」。WordNet:遍歷synsets
我想出了以下(簡單)的代碼:
word = 'girlfriend'
word_synsets = wn.synsets(word)[0]
hypernyms = word_synsets.hypernym_paths()[0]
for element in hypernyms:
print element
結果:
Synset('entity.n.01')
Synset('physical_entity.n.01')
Synset('causal_agent.n.01')
Synset('person.n.01')
Synset('friend.n.01')
Synset('girlfriend.n.01')
我的第一個問題是,如何正確遍歷上位?在上面的代碼中,它打印出來就好了。然而,當使用'if'語句時,例如:
count_humancenteredness = 0
for element in hypernyms:
if element == 'person':
print 'found person hypernym'
count_humancenteredness +=1
我得到'AttributeError:'str'對象沒有屬性'_name''。當一個詞確實屬於'人'或'人類'同義詞時,我可以使用什麼方法遍歷我的單詞的上位詞並執行動作(例如,增加人類中心的數量)。
其次,這是一種有效的方法嗎?我假設遍歷幾個文本並迭代每個名詞的上位詞將需要相當長的一段時間..也許還有另一種方式來使用WordNet來更有效地執行我的任務。
感謝您的幫助!