#python #nltk #word #tf-idf #tfidfvectorizer
#python #nltk #word #tf-idf #tfidfvectorizer
Вопрос:
Я хочу найти релевантность некоторых слов (например, экономика, технология) в одном документе.
В документе около 30 страниц, идея состоит в том, чтобы извлечь весь текст и определить релевантность слов для этого документа.
Я знаю, что TF-IDF используется в группе документов, но возможно ли использовать TF-IDF для решения этой проблемы? Если нет, то как я могу сделать это на Python?
Комментарии:
1. Вы могли бы создать вектор IDF из большей коллекции decuments. Вам нужно что -то, с чем можно сравнить, чтобы определить базовый уровень.
2.
IDF
Часть TF-IDF делает этот подход нелогичным, поскольку он предполагает, что высокая частота в одном документе, но низкая частота в документах, имеет большое значение. Возможно, было бы немного лучше просто учитывать частоту терминов и отбрасывать стоп-слова3. Возможно, использование алгоритма суммирования сработает?
Ответ №1:
Используя NLTK и один из его встроенных корпусов, вы можете сделать некоторые оценки того, насколько «релевантно» слово:
from collections import Counter
from math import log
from nltk import word_tokenize
from nltk.corpus import brown
toks = word_tokenize(open('document.txt').read().lower())
tf = Counter(toks)
freqs = Counter(w.lower() for w in brown.words())
n = len(brown.words())
for word in tf:
tf[word] *= log(n / (freqs[word] 1))**2
for word, score in tf.most_common(10):
print('%8.2f %s' % (score, word))
Измените document.txt
название вашего документа, и скрипт выведет десять наиболее «релевантных» слов в нем.