使用word_tokenize忽略单词nltk python3之间的标点符号

问题描述 投票:0回答:1

我正在使用NLTK word_tokenize忽略单词之间的字符。

如果我有一个句子:

test = 'Should I trade on the S&P?'

[word_tokenize方法将标准普尔分为

'S','&','P','?'

有没有一种方法可以使该库忽略单词或字母之间的标点符号?预期输出:'S&P','?'

python python-3.x nltk
1个回答
0
投票

让我知道您的句子如何使用。我添加了一些带有标点符号的附加测试。在最后部分,从WordPunctTokenizer正则表达式修改了正则表达式。

from nltk.tokenize import RegexpTokenizer

punctuation = r'[]!"$%&\'()*+,./:;=#@?[\\^_`{|}~-]?'
tokenizer = RegexpTokenizer(r'\w+' + punctuation + r'\w+?|[^\s]+?')

# result: 
In [156]: tokenizer.tokenize(test)
Out[156]: ['Should', 'I', 'trade', 'on', 'the', 'S&P', '?']

# additional test:
In [225]: tokenizer.tokenize('"I am tired," she said.')
Out[225]: ['"', 'I', 'am', 'tired', ',', '"', 'she', 'said', '.']
© www.soinside.com 2019 - 2024. All rights reserved.