【发布时间】:2013-03-10 22:56:34
【问题描述】:
我刚开始使用 NLTK,我不太明白如何从文本中获取单词列表。如果我使用nltk.word_tokenize(),我会得到一个单词和标点符号列表。我只需要单词。我怎样才能摆脱标点符号? word_tokenize 也不适用于多个句子:在最后一个单词中添加点。
【问题讨论】:
-
为什么不自己删除标点符号呢?
nltk.word_tokenize(the_text.translate(None, string.punctuation))应该可以在 python2 中使用,而在 python3 中你可以使用nltk.work_tokenize(the_text.translate(dict.fromkeys(string.punctuation)))。 -
这不起作用。文本没有任何反应。
-
NLTK 假设的工作流程是您首先将其标记为句子,然后将每个句子转换为单词。这就是为什么
word_tokenize()不能处理多个句子的原因。要去掉标点符号,可以使用正则表达式或python的isalnum()函数。 -
它确实工作:
>>> 'with dot.'.translate(None, string.punctuation) 'with dot'(注意结果末尾没有点)如果你有类似'end of sentence.No space'的东西可能会导致问题,在这种情况下做改为:the_text.translate(string.maketrans(string.punctuation, ' '*len(string.punctuation)))用空格替换所有标点符号。 -
顺便说一下,isalnum() 方法适用于 Unicode。