Определяет ли TfidfVectorizer n-граммы с использованием python regular expressions?Тонковый шаблон для n-грамма в TfidfVectorizer в python
Эта проблема возникает при чтении документации для scikit-learn TfidfVectorizer. Я вижу, что шаблон для распознавания n-граммов на уровне слова - token_pattern=u'(?u)\b\w\w+\b'
. У меня возникли проблемы с тем, как это работает. Рассмотрим случай с двумя графами. Если я это сделаю:
In [1]: import re
In [2]: re.findall(u'(?u)\b\w\w+\b',u'this is a sentence! this is another one.')
Out[2]: []
Я не нашёл ни одного битрама. Принимая во внимание:
In [2]: re.findall(u'(?u)\w+ \w*',u'this is a sentence! this is another one.')
Out[2]: [u'this is', u'a sentence', u'this is', u'another one']
находит некоторые (но не все, например u'is a'
и все другие, даже сосчитать биграммы отсутствуют). Что я делаю неправильно при интерпретации функции символа \b
?
Примечание: Согласно обычной документации выражение модуля, то \b
символ в re предполагается:
\ б соответствует пустой строке, но только в начале или в конце слова. Слово определяется как последовательность буквенно-цифровых символов или символов подчеркивания, поэтому конец слова обозначается пробелом или буквенным или несимвольным символом.
Я вижу вопросы решения проблемы идентификации п-граммы в питоне (см 1, 2), поэтому вопрос второстепенный: Я должен сделать это и добавить присоединился н-г перед кормлением моего текста TfidfVectorizer?