我正在使用NLTK word_tokenize忽略单词之间的字符。
如果我有一个句子:
test = 'Should I trade on the S&P?'
[word_tokenize方法将标准普尔分为
'S','&','P','?'
有没有一种方法可以使该库忽略单词或字母之间的标点符号?预期输出:'S&P','?'
让我知道您的句子如何使用。我添加了一些带有标点符号的附加测试。在最后部分,从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', '.']