如何打印单词的所有引理名而不在NLTK语法集中多次重复其同义词和词性标记?

2024-09-23 22:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在找一个单词的语法集。以下是我的代码:

from nltk.corpus import wordnet as wn
from nltk import pos_tag

def getSynonyms(word1):
    synonymList1 = []
    for data1 in word1:
        wordnetSynset1 = wn.synsets(data1)
        tempList1=[]
        for synset1 in wordnetSynset1:
            synLemmas = synset1.lemma_names()
            for i in xrange(len(synLemmas)):
                word = synLemmas[i].replace('_',' ')
                tempList1.append(pos_tag(word.split()))
        synonymList1.append(tempList1)
    return synonymList1

word1 = ['study']

syn1 = getSynonyms(word1)

print syn1

输出如下:

^{pr2}$

如我们所见,'study','NN'出现了不止一次

如何为每个同义词只打印一次而不重复?在

所以每个同义词只代表一个同义词


Tags: infromposimportfortag同义词nltk
2条回答

不要总是附加到for循环中的列表中,而是在tempList1.append(pos_tag(word.split()))行中。你应该检查你试图添加的元素是否已经在列表中了。有一个简单的if语句检查就可以了。在

if pos_tag(word.split()) not in tempList1:
   tempList1.append(pos_tag(word.split()))

这是一个不会添加两次的元素。在

syn1=设置(getSynonyms(word1))

将返回的列表放入集合将删除重复项。我在这里假设顺序并不重要,因为集合没有定义的顺序。在

相关问题 更多 >