我已经定义了以下代码
exclude = set(string.punctuation)
lmtzr = nltk.stem.wordnet.WordNetLemmatizer()
wordList= ['"the']
answer = [lmtzr.lemmatize(word.lower()) for word in list(set(wordList)-exclude)]
print answer
我之前已经打印过排除,引号“是其中的一部分。我希望答案是[该]。但是,当我打印答案时,它显示为['”the']。我不完全确定为什么它没有正确地取出标点符号。我需要单独检查每个角色吗?
答案 0 :(得分:1)
从wordList
创建集合时,它将字符串'"the'
存储为唯一元素,
>>> set(wordList)
set(['"the'])
因此使用set difference将返回相同的集合,
>>> set(wordList) - set(string.punctuation)
set(['"the'])
如果您想删除标点符号,可能需要类似的内容,
>>> [word.translate(None, string.punctuation) for word in wordList]
['the']
这里我使用translate
字符串方法,只传入第二个参数,指定要删除的字符。
然后,您可以在新列表中执行词形还原。