Python NLTK没有正确地取出标点符号

时间:2014-04-10 04:56:39

标签: python nltk punctuation

我已经定义了以下代码

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']。我不完全确定为什么它没有正确地取出标点符号。我需要单独检查每个角色吗?

1 个答案:

答案 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字符串方法,只传入第二个参数,指定要删除的字符。

然后,您可以在新列表中执行词形还原。