我正在尝试为句子中的单词创建一个通用的同义词标识符(即"a"或"the"),我在python中使用自然语言工具包(nltk).我遇到的问题是nltk中的同义词查找器需要一个词性参数才能链接到它的同义词.我试图解决的问题是使用nltk中存在的简化词性标记,然后减少第一个字母以便将此参数传递给同义词查找器,但这不起作用.
def synonyms(Sentence):
Keywords = []
Equivalence = WordNetLemmatizer()
Stemmer = stem.SnowballStemmer('english')
for word in Sentence:
word = Equivalence.lemmatize(word)
words = nltk.word_tokenize(Sentence.lower())
text = nltk.Text(words)
tags = nltk.pos_tag(text)
simplified_tags = [(word, simplify_wsj_tag(tag)) for word, tag in tags]
for tag in simplified_tags:
print tag
grammar_letter = tag[1][0].lower()
if grammar_letter != 'd':
Call = tag[0].strip() + "." + grammar_letter.strip() + ".01"
print Call
Word_Set = wordnet.synset(Call)
paths = Word_Set.lemma_names
for path in paths:
Keywords.append(Stemmer.stem(path))
return Keywords
Run Code Online (Sandbox Code Playgroud)
这是我目前正在处理的代码,正如你所看到的那样,我首先将输入变为lematizing以减少我将长期运行的匹配数量(我计划在成千上万的句子上运行),并且理论我会在此之后产生这个词,以进一步发挥这种作用并减少我产生的冗余单词的数量,但是这种方法几乎总是以下面的形式返回错误:
Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud)