Максимизация ожидания многомерной байесовской модели Lucene Term Vector - PullRequest
3 голосов
/ 21 февраля 2011

Я пытаюсь реализовать алгоритм максимизации ожиданий для кластеризации документов.Я планирую использовать Lucene Term Vectors для нахождения сходства между 2 документами.Существует два вида ЭМ-алгоритмов, использующих наивный байесовский метод: многомерная модель и полиномиальная модель.Проще говоря, полиномиальная модель использует частоты различных слов в документах, а многомерная модель просто использует информацию о том, присутствует ли слово в документе (логический вектор).

Я знаю, чтовекторы терминов в Lucene хранят термины, представленные в текущем документе, вместе с их частотами.Это именно то, что нужно для полиномиальной модели.

Но многомерная модель требует следующего: Вектор, который хранит наличие или отсутствие определенного термина.Таким образом, все термины во всех документах должны обрабатываться этим вектором.

Например:

doc1: поле CONTENT имеет следующие термины: это мир удовольствия.

doc2: поле CONTENT имеет следующие термины: этот удивительный мир полон саркастических людей.

теперь вектор, который мне нужен, должен быть

<это мир удовольствия, удивительно полногосаркастические люди> (он содержит все слова во всех документах)

для doc1 значение этого вектора <1 1 1 1 1 1 0 0 0 0>

для doc2 vakueэтого вектора <1 1 0 1 0 0 1 1 1 1>

Есть ли способ сгенерировать такой булев вектор в Lucene?

1 Ответ

2 голосов
/ 22 февраля 2011

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

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

В этом блоге описывается генерация векторов объектов из документов Lucene / Solr, хотя я не думаю, что это идет намного дальше, чем вы уже сделали.

...