nlp - 使用NLTK标记记号,如何去掉标点符号?

我刚开始使用NLTK,我不太明白如何从文本中获得单词列表,如果我使用nltk.word_tokenize(),我会得到一个单词和标点,怎样去掉标点符号?

时间:

例如,你可以定义一个标记符,以便将字母数字字符序列作为标记,并删除其他所有内容:


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']

就像从sent_tokenize()开始,因为word_tokenize()只能在一个句子上工作,你可以用filter()过滤掉标点符号,如果你有unicode字符串,请确保是unicode对象(而不是像'utf-8'这样的编码')。


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)

使用了下面的代码,它删除了所有的标点符号:


tokens = nltk.wordpunct_tokenize(raw)

type(tokens)

text = nltk.Text(tokens)

type(text) 

words = [w.lower() for w in text if w.isalpha()]

...