我正在使用将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
多个单词聚合为短语,但在这种情况下,只是将单词组件聚合为单词.
或者,是否有另一个不会分割单词部分的标记器?
这实际上按预期工作:
这是正确/预期的输出.对于单词标记化,收缩被认为是两个单词,因为它们具有意义.
不同的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'!']
请在以下位置查看更多信息和解决方法:
nltk标记化和收缩
扩展Python中的英语语言收缩
word_tokenizer将收缩(我们,我会)分成不同的词