首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用NLTK标记器消除标点符号?

如何使用NLTK标记器消除标点符号?
EN

Stack Overflow用户
提问于 2013-03-21 20:22:08
回答 9查看 223.1K关注 0票数 138

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

EN

回答 9

Stack Overflow用户

发布于 2013-03-22 02:19:49

看看nltk为here提供的其他标记化选项。例如,您可以定义一个标记器,该标记器将字母数字字符序列选作令牌,并删除其他所有字符:

代码语言:javascript
复制
from nltk.tokenize import RegexpTokenizer

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

输出:

代码语言:javascript
复制
['Eighty', 'seven', 'miles', 'to', 'go', 'yet', 'Onward']
票数 184
EN

Stack Overflow用户

发布于 2016-12-08 01:51:33

下面的代码将删除所有标点符号以及非字母字符。从他们的书里抄来的。

http://www.nltk.org/book/ch01.html

代码语言:javascript
复制
import nltk

s = "I can't do this now, because I'm so tired.  Please give me some time. @ sd  4 232"

words = nltk.word_tokenize(s)

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

print(words)

输出

代码语言:javascript
复制
['i', 'ca', 'do', 'this', 'now', 'because', 'i', 'so', 'tired', 'please', 'give', 'me', 'some', 'time', 'sd']
票数 34
EN

Stack Overflow用户

发布于 2013-03-22 01:19:21

正如注释以sent_tokenize()开头所指出的,因为word_tokenize()只适用于单个句子。您可以使用filter()过滤掉标点符号。如果你有一个unicode字符串,确保它是一个unicode对象(而不是像‘utf-8’这样的编码的'str‘)。

代码语言:javascript
复制
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)
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15547409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档