Оценка Lucene, точность модели векторного пространства

Я не уверен, что понимаю, как модель векторного пространства используется в оценке люцена.

Я читал здесь (https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html), что lucene оценивает документ как сумму tf-idf каждого запроса термина (если мы опускаем коэффициент координации, поле длина и бусты). Я не понимаю, как используется модель векторного пространства.

Модель пространственного вектора может использоваться для вычисления сходства между вектором tf-idf документа и вектором tf-idf запроса. Это должно дать нам оценку CosSimilarity между запросом и документом. Оценка будет между 0 и 1, поэтому разные запросы будет легко сравнивать.

Почему бы не использовать счет люцена?


person Quentin    schedule 25.06.2015    source источник


Ответы (1)


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

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

s(q, d) = q * d / (||q|| * ||d||)

Учитывая, что q и d являются векторами, подобными [tf(t1) * idf(t1), ...], и что в векторе q tf (t) равно 1 или 0, формула принимает следующий вид:

s(q, d) = ∑( tf(t in d) * idf(t)² )(t in q) / (||q|| * ||d||)

В дальнейшем вы можете заменить ||q|| на 1 / queryNorm(q), учитывая их определение queryNorm = 1 / √sumOfSquaredWeights

s(q, d) = queryNorm(q) * ∑( tf(t in d) * idf(t)² )(t in q) / ||d||

что близко к формуле, которую они приводят в документации:

score(q, d) = queryNorm(q) * coord(q,d) * 
              ∑ ( tf(t in d) * idf(t)² * t.getBoost() * norm(t,d)) (t in q)  

||d||, норма вектора документа, однако, не имеет прямого эквивалента в терминах их формулы.

person Radu Balaban    schedule 25.06.2015
comment
Хорошо, это имеет смысл, так что norm(d) определяется как √numTerms(d)? - person Quentin; 25.06.2015
comment
Нет, это не та же норма - я убрал обозначения в своем ответе. || d || не имеет прямого эквивалентного члена в своей формуле, но может быть включен в координаты (q, d). - person Radu Balaban; 25.06.2015