Векторная модель текста и TF-IDF

Почему для задачи тематической классификации предлоги, союзы и местоимения практически бесполезны?

Метод мешка слов

В разреженных векторных моделях словам даётся вес.

В самом простом случае вес = кол-во употреблений слова в документе.

  • Вес слова зависит от длины текста

  • Предлоги и союзы — самые "значимые" слова

Вес = кол-во употреблений слова в документе, делённое на длину документа

nwi=wijwj2nw_i = \frac {w_i} { \sqrt { \sum_j w_j^2 } }
  • Предлоги и союзы — самые "значимые" слова

Если отсортировать слова по убыванию частоты их употребления, получим следующий график:

Плотность распределения Ципфа:

f(rank;s,N)=1Z(s,N)ranksf(rank; s, N) = \frac {1} {Z(s, N) rank^s}

rankrank — порядковый номер слова после сортировки по убыванию частоты,

ss — коэффициент скорости убывания вероятности,

NN — количество слов,

Z(s,N)=i=1NisZ(s, N) = \sum^N_{i=1}i^{-s} — нормализационная константа

  • Частотных слов мало и они неинормативны

  • Редких слов много, они информативны, но на них сложно опираться

Баланс частотности и информативности

  • Чаще встречается в документе - более характерен для этого документа

  • Реже встречается в корпусе - более информативен

TFTF — term frequency — значимость слова в рамках документа:

TF(w,d)=WordCount(w,d)Length(d)TF(w, d) = \frac {WordCount(w, d)} {Length(d)}

где WordCount(w,d)WordCount(w, d) — кол-во употреблений слова ww в документе dd, Length(d)Length(d) — длина документа d в словах.

IDFIDF — inverse document frequency — специфичность слова:

IDF(w,c)=Size(c)DocCount(w,c)IDF(w, c) = \frac {Size(c)} {DocCount(w, c)}

где DocCount(w,c)DocCount(w, c) — кол-во документов в коллекции cc, в которых встречается слово ww, а Size(c)Size(c) — размер коллекции в документах.

Алгоритм взвешивания признаков по TF-IDF

  1. Применить нормализацию текста (стемминг или лемматизацию), выделить базовые элементы

  2. Построить частотный словарь DocCount(w,c)DocCount(w, c)для всех ww

  3. Проредить слова по частоте

  4. Для каждого документа dd:

    1. Для каждого слова ww из документа ww найти WordCount(w,d)WordCount(w, d)

      • Записать результирующий вектор в позицию ww значение TFIDF(w,d,c)=TF(w,d)IDF(w,c)TF-IDF(w, d, c) = TF(w, d)IDF(w,c)

    2. Записать вектор документа в таблицу признаков документов коллекции

Last updated

Was this helpful?