Как я могу использовать CountVectorizer, чтобы получить количество фраз без подсчета слов в фразе? - PullRequest
0 голосов
/ 09 мая 2019

Я работаю над проектом НЛП и надеюсь на токенизацию предложений и подсчет различных токенов.Иногда я надеюсь, что несколько слов будут фразой и не будут считать слова внутри фразы.

Я нашел CountVectorizer в scikit-learn полезным для подсчета фраз, но я не мог понять, как удалить словавнутри фраз.

Например:

words = ['cat', 'dog', 'walking', 'my dog']
example = ['I was walking my dog and cat in the park']
vect = CountVectorizer(vocabulary=words, ngram_range=(1,2))
dtm = vect.fit_transform(example)
print(dtm)

Я получил:

>>> vect.get_feature_names()
['cat', 'dog', 'walking', 'my dog']
>>> print(dtm)
  (0, 0)    1
  (0, 1)    1
  (0, 2)    1
  (0, 3)    1

Что я хочу, это:

>>> print(dtm)
  (0, 0)    1
  (0, 2)    1
  (0, 3)    1

Но яхотите сохранить 'dog' в словаре, потому что он может появиться сам по себе в другом тексте.

1 Ответ

0 голосов
/ 09 мая 2019

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

Следовательно, одно решение может использовать CountVectorzier как то, что вы сделали. Aftwerwards, переберите слова, чтобы найти слова, которые содержатся в более длинных фразах, а затем минус количество более длинных фраз из более коротких фраз, содержащихся в первом результате CountVectorizer.

...