scikit-learn TfidfVectorizer игнорирует определенные слова - PullRequest
0 голосов
/ 30 октября 2018

Я пробую TfidfVectorizer на предложении, взятом из страницы википедии об истории Португалии. Однако я заметил, что метод TfidfVec.fit_transform игнорирует определенные слова. Вот предложение, которое я попробовал:

sentence = "The oldest human fossil is the skull discovered in the Cave of Aroeira in Almonda."

TfidfVec = TfidfVectorizer()
tfidf = TfidfVec.fit_transform([sentence])

cols = [words[idx] for idx in tfidf.indices]
matrix = tfidf.todense()
pd.DataFrame(matrix,columns = cols,index=["Tf-Idf"])

вывод кадра данных:

enter image description here

По сути, это игнорирование слов "Aroeira" и "Almonda".

Но я не хочу, чтобы он игнорировал эти слова, так что мне делать? Я не могу найти в документации нигде, где они говорят об этом.

Другой вопрос: почему слово «the» повторяется? должен ли алгоритм учитывать только одно "the" и вычислять его tf-idf?

Ответы [ 2 ]

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

tfidf.indices - это просто индексы для имен элементов в TfidfVectorizer. Получение слов по этим показателям из предложения является ошибкой.

Вы должны получить имена столбцов для вашей df как TfidfVec.get_feature_names()

enter image description here

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

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

См. Min_df и max_features:
http://scikit -learn.org / stable / modules / генерируется / sklearn.feature_extraction.text.TfidfVectorizer.html

...