我使用nltk
将句子分成单词。例如
nltk.word_tokenize("The code didn't work!")
-> ['The', 'code', 'did', "n't", 'work', '!']
令牌化在分割字边界方面效果很好[即从单词中分割标点符号,但有时会过度分割,单词末尾的修饰符会被视为单独的部分。例如,didn't
分为did
和n't
,i've
分为I
和've
。显然这是因为这些单词在nltk
正在使用的原始语料库中被分成两部分,并且在某些情况下可能是合乎需要的。
有没有内置的方法来克服这种行为?可能与nltk's
MWETokenizer
能够将多个单词聚合为短语的方式类似,但在这种情况下,只是将单词组件聚合为单词。
或者,是否有另一个不会分割单词部分的标记化器?
答案 0 :(得分:20)
这实际上是working as expected:
这是正确/预期的输出。对于单词标记化,收缩被认为是两个单词,因为它们是有意义的。
不同的nltk
标记符可以不同方式处理英语收缩。例如,我发现TweetTokenizer
没有将收缩分为两部分:
>>> from nltk.tokenize import TweetTokenizer
>>> tknzr = TweetTokenizer()
>>> tknzr.tokenize("The code didn't work!")
[u'The', u'code', u"didn't", u'work', u'!']
请在以下网址查看更多信息和解决方法: