Является ли countvectorizer в sklearn только для Engli sh? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь применить векторизатор подсчета для телугу и хинди, которые являются инди c языком. Но векторизатор автоматически заполняет слова.

count_vect = CountVectorizer()
xv=count_vect.fit_transform(['she is a good girl','वो बहुत सुन्दर है','ఇది చాలా లాడిష్ మరియు బాల్య టీనేజ్ కుర్రాళ్ళు మాత్రమే దీనిని ఫన్నీగా చూడవచ్చు', 'దోపిడీ మరియు ఎక్కువగా లోతు లేదా అధునాతనత లేని నేరాలకు సంబంధించిన గ్రాఫిక్ చికిత్సను చూడటం భరించదగినది'])
count_vect.get_feature_names()

вывод выглядит следующим образом:

['girl',
 'good',
 'is',
 'she',
 'दर',
 'बह',
 'అధ',
 'ఇద',
 'ఎక',
 'చదగ',
 'డట',
 'డవచ',
 'తనత',
 'నద',
 'ఫన',
 'భర',
 'మర',
 'రమ',
 'లక',
 'వగ',
 'సన']

Совершенно очевидно, что оно автоматически ограничивает слова телугу и хинди, есть ли способ избежать этого?

1 Ответ

3 голосов
/ 23 апреля 2020

Анализатор, используемый CountVectorizer(), похоже, плохо поддерживает некоторые кодировки. Вы можете определить собственный анализатор, чтобы определить, как разделить слова. Чтобы правильно разделить слова, вы можете использовать регулярное выражение:

import regex 

def custom_analyzer(text):
    words = regex.findall(r'\w{2,}', text) # extract words of at least 2 letters
    for w in words:
        yield w

count_vect = CountVectorizer(analyzer = custom_analyzer)
xv = count_vect.fit_transform(['she is a good girl','वो बहुत सुन्दर है','ఇది చాలా లాడిష్ మరియు బాల్య టీనేజ్ కుర్రాళ్ళు మాత్రమే దీనిని ఫన్నీగా చూడవచ్చు', 'దోపిడీ మరియు ఎక్కువగా లోతు లేదా అధునాతనత లేని నేరాలకు సంబంధించిన గ్రాఫిక్ చికిత్సను చూడటం భరించదగినది'])
count_vect.get_feature_names()

Я использовал regex модуль , потому что он поддерживает больше кодировок, чем модуль re (Благодаря этому ответ для объяснения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...