Как бы вы динамически фильтровали MoreLikeThis от Lucene?

Итак, позвольте мне попытаться объяснить, что я сделал, и тогда, надеюсь, то, что я прошу, станет более понятным. Я анализирую документы и пытаюсь оценить их на основе слов, которые часто встречаются в некоторых документах, несмотря на то, что они редко встречаются во всем индексе. До сих пор я получил довольно интересные результаты и могу видеть tf и idf для каждого термина в данном документе.

Чтобы оценить документ в целом, я хочу сделать что-то, связанное с tf-idf, но я не хочу использовать каждый термин в документе. Прямо сейчас я жестко запрограммировал некоторые фильтры, чтобы избавиться от слишком распространенных слов (слов, чей idf слишком низок, чтобы иметь для меня значение) и слишком необычных слов (слов с действительно высокими показателями idf; по моему опыту, они обычно опечатки).

Есть ли хороший способ динамически отфильтровывать выбросы в idf?
Вместо:

if (idf > x && idf < y)
   include the word

Я хочу сделать что-то вроде:

if (idf is in the 60th percentile of idfs for the index)
   include it      

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


person Kmanc    schedule 22.07.2014    source источник


Ответы (1)


Один из последних шагов в процессе оценки выполняется Сходство. Я считаю, что вам нужно только развивать свое личное сходство. DefaultSimilarity (очевидно) класс по умолчанию, используемый Lucene. Он расширяет TFIDSimilarity. Я предлагаю вам прочитать код обоих классов, чтобы понять, как разработать свой собственный класс.

После того, как класс разработан, если он называется KmancSimilarity, вот как запустить его:

Directory dir = <your dir>;
IndexReader index = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(index);
searcher.setSimilarity(new KmancSimilarity());

continue your code...

Я работал с версией 4.8, поэтому не знаю, действительна ли она для других.

Я надеюсь, что это полезно.

person Juliano ENS    schedule 23.07.2014