Предотвращение расщепления при апострофиях при токенизации слов с помощью nltk
Я использую 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
способен агрегировать несколько слов в фразы, но в этом случае просто агрегировать компоненты слов в слова.
кроме того, есть ли другой токенизатор, который не разделяет части слов?
1 ответов
Это на самом деле работает, как ожидалось:
это правильный / ожидаемый результат. Для обозначения слов сокращения считаются двумя словами, потому что они имеют смысл.
разные nltk
tokenizers ручка английский язык сокращения по-разному. Например, я обнаружил, что 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'!']
подробнее информация и обходные пути по адресу: