Как использовать биграммы + триграммы + словарный запас слов в countVectorizer? - PullRequest
0 голосов
/ 10 мая 2019

Я использую текстовую классификацию с наивными байесовскими и countVectorizer для классификации диалектов.Я прочитал исследовательскую работу, в которой автор использовал комбинацию:

bigrams + trigrams + word-marks vocabulary 

Он подразумевает здесь под словесными знаками слова, характерные для определенного диалекта.

Как я могунастроить эти параметры в countVectorizer?

словесные знаки

Так что это примеры словесных знаков, но это не то, что у меня есть, потому что у меня арабский.Поэтому я перевёл их.

word_marks=['love', 'funny', 'happy', 'amazing']

Они используются для классификации текста.

Также в этом посте: Понимание аргумента `ngram_range` в CountVectorizer в sklearn

Был ответ:

>>> v = CountVectorizer(ngram_range=(1, 2), vocabulary={"keeps", "keeps the"})
>>> v.fit_transform(["an apple a day keeps the doctor away"]).toarray()
array([[1, 1]])  # unigram and bigram found

Я не мог понять вывод, что здесь означает [1,1]?и как он смог использовать Ngram со словарем?не оба ли они взаимоисключающие?

1 Ответ

2 голосов
/ 11 мая 2019

Вы хотите использовать аргумент диапазона n_gram для использования биграмм и триграмм. В вашем случае это будет CountVectorizer (ngram_range = (1, 3)).

См. Принятый ответ на этот вопрос для получения более подробной информации.

Пожалуйста, приведите пример "словесных знаков" для другой части вашего вопроса.

Возможно, вам придется запустить CountVectorizer дважды - один раз для n-граммов и один раз для своего собственного словаря с метками слов. Затем вы можете объединить два выхода из двух CountVectorizer, чтобы получить единый набор функций n-граммов и пользовательских словарных отсчетов. Ответ на поставленный выше вопрос также объясняет, как указать пользовательский словарь для второго использования CountVectorizer.

Вот SO ответ о сцеплении массивов

...