Как найти релевантность слов в одном документе?

#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 название вашего документа, и скрипт выведет десять наиболее «релевантных» слов в нем.