Н-грамм для письма в склеарн - PullRequest
0 голосов
/ 28 октября 2018

Я хочу сделать метод n-грамм, но буква за буквой

Обычные N-грамм:

sentence : He want to watch football match

result:
he, he want, want, want to , to , to watch , watch , watch football , football, football match, match

Я хочу сделать это, но буква за буквой:

word : Angela 

result:
a, an, n , ng , g , ge, e ,el, l , la ,a

Это мой код, использующий Sklearn, но он все еще слово за словом, а не буква за буквой:

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(ngram_range=(1, 100),token_pattern = r"(?u)\b\w+\b")

corpus = ['Angel','Angelica','John','Johnson']

X = vectorizer.fit_transform(corpus)
analyze = vectorizer.build_analyzer()
print(vectorizer.get_feature_names())
print(vectorizer.transform(['Angela']).toarray())

1 Ответ

0 голосов
/ 29 октября 2018

Существует параметр 'analyzer', который делает то, что вы хотите.

Согласно документации : -

анализатор : string, {'word', 'char', 'char_wb'} или callable

Должна ли функция состоять из n-граммов слова или символа.Опция 'char_wb' создает n-граммы символов только из текста внутри границ слова;n-граммы на краях слов дополняются пробелом.

Если передан вызываемый объект, он используется для извлечения последовательности признаков из необработанного необработанного ввода.

По умолчанию для него установлено слово, которое вы можете изменить.

Просто сделайте:

vectorizer = CountVectorizer(ngram_range=(1, 100),
                             token_pattern = r"(?u)\b\w+\b", 
                             analyzer='char')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...