Как извлечь семантическую родственность из текстового корпуса - PullRequest
1 голос
/ 25 мая 2011

Цель состоит в том, чтобы оценить семантическую взаимосвязь между терминами в большом текстовом корпусе, например, «полиция» и «преступность» должны иметь более сильную семантическую взаимосвязь, чем «полиция» и «гора», поскольку они имеют тенденцию сосуществовать в одном и том же контексте.

Простейший подход, о котором я читал, состоит в извлечении IF-IDF информации из корпуса.

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

Я встречал поисковик Lucene: http://lucene.apache.org/

Как вы думаете, подходит ли это для извлечения IF-IDF?

Что бы вы порекомендовали сделать, что я пытаюсь сделать, как с точки зрения техники, так и с точки зрения программного обеспечения (с предпочтением Java)?

Заранее спасибо!

Mulone

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Это очень легко, если у вас есть люценовый индекс.Например, чтобы получить корреляцию, вы можете использовать простую формулу count (term1 и term2) / count (term1) * count (term2).Где количество хитов из результатов поиска.Кроме того, вы можете легко вычислить другие показатели семнтики, такие как chi ^ 2, информационный прирост.Все, что вам нужно, это получить формулу и преобразовать ее в условия count из Query

0 голосов
/ 26 мая 2011

Да, Lucene получает данные TF-IDF.Алгоритм Carrot ^ 2 является примером программы семантического извлечения, построенной на Lucene.Я упоминаю об этом, поскольку в качестве первого шага они создают корреляционную матрицу.Конечно, вы, вероятно, можете легко построить эту матрицу самостоятельно.

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

...