如何摆脱标点符号使用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