Инкрементальный IDF (обратная частота документов)

11

В приложении для интеллектуального анализа текста одним простым подходом является использование эвристики для создания векторов в виде компактных разреженных представлений документов. Это хорошо для настройки пакета, когда весь корпус известен априори, так как для требуется весь корпусi d ftfidfidf

idf(t)=log|D||{d:td}|

где - термин, - документ, - корпус документа, а (не показан) - словарь.д д тtdDT

Однако, как правило, новые документы поступают со временем. Один из вариантов - продолжать использовать существующий до пор, пока не будет получено определенное количество новых документов, и пересчитать его. Однако это кажется довольно неэффективным. Кто-нибудь знает схему постепенного обновления, которая (возможно, приблизительно) сходится к значению, если все данные были просмотрены заранее? Или, в качестве альтернативы, есть другая мера, которая отражает то же понятие, но может быть вычислена поэтапно?idf

Существует также связанный с этим вопрос о том, остается ли хорошей мерой с течением времени. Поскольку idf охватывает понятие частоты слов в корпусе, вполне возможно, что более старые документы в корпусе (скажем, например, что мой корпус включает в себя более 100 лет журнальных статей), поскольку частоты разных слов меняются со временем. В этом случае может быть целесообразно выбрасывать старые документы, когда приходят новые, по сути, используя скользящее окно . Можно что при вычислении новых векторов можно также сохранить все предыдущие векторы , а затем, если мы хотим получить документы, скажем, 1920–1930 гг., Мы можем использовать рассчитанный по документам в этом диапазоне дат. Имеет ли этот подход смысл?я д е я д е я д пidfidfidfidf

Edit: Существует отдельный , но связанный с этим вопрос о словаре . Со временем появятся новые словарные термины, которых раньше не было, поэтомунужно будет расти, и, следовательно, длина вектора . Кажется, что это не будет проблемой, так как нули могут быть добавлены к старым векторам .| T | я д ф я д фT|T|idfidf

TDC
источник
глупый вопрос: это проблема хранить знаменатель для каждого т? Как влияет соотношение | t | к | д | как выглядит (в общем)?
Штеффен
Извините, может быть, уравнение не совсем понятно - - это обратная частота документа для термина t, а не в момент времени . Таким образом, в момент времени вас будет вектор длиныт.е. размер словаря (который также может измениться). Я внесу соответствующие изменения. т т | T |idf(t)tt|T|
TDC
1
Я понял уравнение. Мой вопрос был следующим: если сохранение словаря не проблема, то вместо: | T | IDFs один магазины | T | знаменатели (уравнения) + количество документов. Инкрементное обновление не проблема, и IDF рассчитывается на лету. У меня такое чувство, что я что-то упустил.
Штеффен
Таким образом, вы имеете в виду что-то вроде, учитывая новый документ , если у нас есть значение , мы просто добавляем его к знаменателю дляdd:tdt:td
tdc
точно. Если это возможно?
Штеффен

Ответы:

6

Хорошо, спасибо Штеффену за полезные комментарии. Я думаю, что ответ довольно прост в конце. По его словам, все, что нам нужно сделать, это сохранить текущий знаменатель (назовите его ):z

z(t)=|{d:td}|

Теперь, учитывая новый документ , мы обновляем знаменатель просто:d

z(t)=z(t)+{1iftd0otherwise

Затем мы должны были бы пересчитать на основе нового вектора .tfidfidf

Аналогично, чтобы удалить старый документ, мы уменьшаем числитель аналогичным образом.

Это делает означает , что мы должны либо хранить весь матрицу, а также матрицы (удвоение требования к памяти), или мы должны вычислить оценку при необходимости (увеличение вычислительных затрат). Я не вижу никакого способа обойти это.tftfidftfidf

Во второй части вопроса, эволюции векторов течением времени, кажется, что мы можем использовать описанный выше метод и сохранить набор «ориентирных» векторов (знаменателей) для разных диапазонов дат (или, возможно, подмножеств содержимого) , Конечно, - это плотный вектор длины словаря, поэтому его хранение будет занимать много памяти; однако это, вероятно, предпочтительнее, чем пересчет векторов когда это необходимо (что снова потребовало бы сохранения матрицы или вместо ).з з я д ф т фidfzzidftf

TDC
источник