如何摆脱标点符号使用NLTK tokenizer?

我刚开始使用NLTK,我不太明白如何从文本中获取单词列表。 如果我使用nltk.word_tokenize() ,我会得到一个单词和标点符号列表。 我只需要改为单词。 我怎样才能摆脱标点符号? 此外word_tokenize不适用于多个句子:点被添加到最后一个单词。


看看nltk在这里提供的其他标记化选项。 例如,您可以定义一个标记器,用于挑选字母数字字符序列作为标记并删除其他所有内容:

from nltk.tokenize import RegexpTokenizer

tokenizer = RegexpTokenizer(r'w+')
tokenizer.tokenize('Eighty-seven miles to go, yet.  Onward!')

输出:

['Eighty', 'seven', 'miles', 'to', 'go', 'yet', 'Onward']

你并不需要NLTK去除标点符号。 你可以用简单的python删除它。 对于字符串:

import string
s = '... some string with punctuation ...'
s = s.translate(None, string.punctuation)

或者对于unicode:

import string
translate_table = dict((ord(char), None) for char in string.punctuation)   
s.translate(translate_table)

然后在你的标记器中使用这个字符串。

PS字符串模块还有其他一些可以删除的元素(如数字)。


正如注释中注意到的那样,从sent_tokenize()开始,因为word_tokenize()仅适用于单个句子。 你可以用filter()过滤出标点符号。 如果你有一个unicode字符串,请确保它是一个unicode对象(不是用'utf-8'编码的'str')。

from nltk.tokenize import word_tokenize, sent_tokenize

text = '''It is a blue, small, and extraordinary ball. Like no other'''
tokens = [word for sent in sent_tokenize(text) for word in word_tokenize(sent)]
print filter(lambda word: word not in ',-', tokens)
链接地址: http://www.djcxy.com/p/65161.html

上一篇: How to get rid of punctuation using NLTK tokenizer?

下一篇: Causal Sentences Extraction Using NLTK python