CountVectorizer () разделяется на пробел, а не на запятую - PullRequest
0 голосов
/ 04 апреля 2020

Итак, в моем фрейме данных у меня есть столбец «Актеры», который содержит несколько «фамилий, фамилий и имен» актеров.

Например: «Деннис Кристофер, Деннис Куэйд, Даниэль Стерн» как тип «категория»

Когда я использую CountVectorizer().fit_transform(df['Actors']), эта группа будет разбита на 6 слов. Я бы хотел, чтобы функция не учитывала '' (пробел) между именами, а только ", так чтобы в предыдущем примере она была разбита на 3 слова.

vectorizer = CountVectorizer()
Actors_f = vectorizer.fit_transform(df.loc[df['Actors'].notna(), 'Actors'])

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Аналогично этому вопросу: Как обрабатывать число с десятичными или запятыми как одно слово в countVectorizer Вы должны изменить регулярное выражение, которое используется для токенизации ввода.

Как сказано в документации , регулярное выражение по умолчанию:

token_pattern='(?u)\b\w\w+\b'

Что соответствует:

(/u) - символы Юникода

\b - граница слова (например, пробел)

\w - слово

\w+ - слова подряд до ...

\b - граница другого слова ( например, конец строки)

То, что вам нужно, это:

 token_pattern='(?u)[a-zA-Z][a-z ]+'

В частности, символ пробела включен в токен, что делает перехват имени + фамилии одним токеном.

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

0 голосов
/ 04 апреля 2020

Мне удалось сделать это с

bigram_vectorizer = CountVectorizer(ngram_range=(2, 2), min_df=1)
bigram_vectorizer.fit_transform(df['Actors'])
...