Релевантность

Релевантность - это степень соответствия между поисковым запросом и документом, обычно измеряемая по шкале от 0 до 100, где 100 - показатель наибольшей релевантности.

Многие узлы в PolyAnalyst Grid, такие, как Многомерная матрица, Таксономия, Производные колонки, Фильтрация строк, и другие, используют общий поисковый механизм, применяя PDL-выражение] к набору записей для расчета релевантности каждой записи выражению. PDL-выражения используют простой булевский синтаксис алгебраического типа. Запрос разбивается, после чего поисковый механизм в текстовой колонке ищет соответствующие документы, которые затем ранжируются по релевантности.

Новый метод представляет собой собственную доработку известного в области анализа данных алгоритма Okapi BM25.

Общая информация о расчете релевантности

Последовательность символов, которую выделяет парсер в процессе разбиения (парсинга) текста, мы будем далее называть токеном. Каждый токен имеет категориальный маркер, назначенный парсером. В ходе анализа токен заменяется числовым идентификатором. В системе определяются следующие категории идентификаторов:

  1. Хэш-идентификатор (hi, wi). Каждый словарный токен имеет уникальный хэш-идентификатор. Между рядом токенов и рядом хэш-идентификаторов имеется некоторое сходство форм.

  2. Идентификатор морфологического словаря (идентификатор нормальной формы, fi). Он объединяет морфологически релевантные словоформы. Словоформа может иметь несколько идентификаторов нормальной формы, обычно разных частей речи. И наоборот, идентификатор нормальной формы в целом соответствует нескольким словоформам, каждая из которых имеет ассоциированный модификатор формы и частоту по умолчанию.

  3. Ортогональный идентификатор. Каждая словоформа имеет только один ортогональный идентификатор. Несколько словоформ могут соответствовать одному ортогональному идентификатору. Два слова имеют один общий идентификатор, если они имеют некоторую общую морфологически релевантную форму. Ряд ортогональных идентификаторов для ряда словоформ мы будем называть ортогональной базой.

  4. Идентификатор синонимических групп. Он объединяет идентификаторы нормальной формы, которые соответствуют синонимам. Между идентификаторами нормальной формы и идентификаторами групп синонимов существуют отношение "многих-ко-многим".

Исходя из описаний, можно сделать вывод, что статистику по умолчанию из пункта 2 можно трансформировать в статистику по умолчанию для других пунктов без особых потерь. Но статистика для токенов (пункт 1) может быть трансформирована без потерь только в статистику ортогональных идентификаторов (пункт 3). Трансформация в статистику словоформ зависит от использования дополнительных предположений (например, по постоянному показателю распределения токена как разных частей речи). Статистика по умолчанию для морфологического словаря дает нам основную возможность выполнения поверхностного статистического анализа, зависимого от частей речи, даже без фактического тегирования частей речи.

Часть 2. Расчет релевантности

Рассмотрим запрос:

\[q=[ f_{1}(s_{1}^{1},...s_{1}^{n})...f_{k}(s_{k}^{1},...s_{k}^{m}) ],\]

который удовлетворяет синтаксису языка запросов PolyAnalyst. Изначально данный запрос выполняется в соответствии с правилами булевой алгебры. В результате составляется список соответствующих текстов. Вычисление релевантности предполагает такую организацию найденных текстов, при которой наиболее репрезентативные тексты имеют большую вероятность оказаться в начале списка. Для решения подобной задачи PolyAnalyst использует вариацию широко известной векторной модели, которая дополнительно корректируется для близости терминов запроса. Следует особо отметить, что в отличие от инструментов Интернет-поиска, которые выполняют постраничную репрезентацию, PolyAnalyst выполняет полный поиск по базе (эквивалентно SQL).

С позиции механики расчета релевантности, пользовательский запрос – это ряд токенов, для каждого из которых имеется позиция и уровень репрезентации, определяемый как:

\[Q=(t_{1},p_{1},l_{1}),...(t_{n},p_{n},l_{n})\]

Токены с одной и той же позицией \(pi\) считаются принадлежащими к одному термину запроса. Уровень репрезентации \(li=[0..3\)] определяет, что слово ищется точно – 0, с учетом морфологии – 1, с учетом синонимов – 2, либо с точностью до гипонимов – 3. В самом конце любой запрос может быть представлен в форме ряда токенов только нулевого уровня, возможно с достаточно широкими позициями.

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

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

Более того, для каждого базового измерения рассчитывается понижающий фактор \(q \leq 1\), который зависит в основном от главной части речи словоформы. Относительная значимость для существительных равна 1, глаголов – 0,9, прилагательных – 0,8, наречий – 0,3. Остальные части речи имеют фактор 0,1. Значимость словоформ из списка стоп-слов дополнительно снижается в 10 раз.

Следовательно, если имеется мера \(r\) ортогональной базы

\(r=(h_{1},c_{1}),-(h_{N},c_{N})\),

где \(hi\) – словоформа, \(ci\) – частота по умолчанию, а \(hi\) имеет распределение \(Pi(POS)\) по частям речи в соответствии с морфологическим словарем, то понижающий фактор равен:

\[q(r)=\sum_{i} \sigma(h_{i}) \cdot \tilde{c_{i}}\sum_{POS}W(POS) \cdot P_{i}(POS),\]

где

\(\tilde{c_{i}}=\frac{c_{i}}{\sum_{i}c_{i}}\);

\(W(POS)\) – фактор веса для части речи, как было указано выше;

\(δ(hi)\) = 1, если словоформа \(hi\) не входит в список стоп-слов, в противном случае – 0,1;

\(Pi(POS)\) – априорная вероятность соответствия \(hi\) как данной части речи;

Часть 3. Базовая функция релевантности

Рассмотрим текстовую базу в которой содержится N документов \({T1 - TN}\). Длину текста \(Ti\) обозначим как \(L(Ti)\). Общая длина базы равна:

\[L_{S}=\sum_{i}L(T_{i})\]

Измерение \(r\) ортогональной базы состоит из словоформ \({w1 - wK}\). Обозначим общее число словоформ, относящихся через базу к \(r\), как \(L(r)\), в тексте \(Ti\) – как \(L(Ti, r)\). В этом случае частота по умолчанию \(P(r)\) измерения \(r\) равна \(L(r)/LS\).

В качестве базовой меры \(α\) релевантности текста \(Ti\) относительно \(r\) мы будем использовать логарифм биномиальной вероятности больших отклонений (т.е. логарифм вероятности нахождения текста с высокой концентрацией \(r\)), который можно эффективно приблизить:

\[\alpha(p,L,N)=q(r) \cdot \ln \sum_{k=N+1}^{L}C_{L}^{k} p^{k}(1-p)^{L-k},\]

где

\(N=L(Ti, r)\); \(p=P(r)\); \(L=L(Ti)\);

\(q(r)\) – понижающий фактор.

Значение \(α\) изменяется от 0 до -∞. Чем меньше значение \(α\), тем выше релевантность текста. Для удобства мы будем проецировать \(α\) на диапазон [0..1]:

\[R=(\frac{\ln(1-\alpha)}{1+\ln(1-\alpha)})^y\]

Значение \(R\) и есть релевантность.

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

Часть 4. Построение ортогональной базы согласно имеющемуся тексту (поиск ключевых терминов)

Текст \(T\) представлен в форме

\[\vec{w}={(w_{i},c_{i})},\]

где \(wi\) – словоформа,

\(ci\) – число словоформ.

С помощью морфологического словаря можно изменить представление каждого \(wi\) из словоформы до набора нормальных форм:

\(wi - {(f1,p1 - ci), - , (fN,pN - ci)}\).

Здесь \(fi\) – идентификатор нормальной формы, \(pN\) – априорная вероятность того, что \(wi\) сыграет роль \(fN\) формы. В результате мы меняем репрезентацию текста с \(\vec {w}\) до

\(\vec f=\{(f_{i},\tilde c_{i})\}\).

Подобная трансформация сопровождается некоторой потерей информации, поскольку значения \(\tilde {c}\) стали рациональными. Для снижения потерь все исходные значения \(ci\) умножаются на коэффициент масштабирования (сдвиг влево на 7 бит). Далее мы увидим, что все компоненты вектора \(\vec {f}\) по своей конструкции полностью независимы, следовательно, их можно использовать в процессе расчета релевантности.

Пусть \(\vec {F}=\{(F_{i},\tilde C_{i})\}\) будет вектором нормальных форм, который построен вышеописанным способом, для целой базы; \(LS\) – общая длина базы (общее число токенов во всех документах). Вектор \(\vec {f}\) означает текст, а \(C= \sum c_{i}\) – общую длину текста. Таким образом, значимость элементов \(\vec {f}\) для текста \(T\) равна:

\[R_{i}=R(W(POS(f_{i})) \cdot \alpha(\frac{\tilde C_{i})}{L_S \ \text{shl} \ 7},C \ \text{shl} \ 7, \tilde c_{i} ))\]

В дальнейшем, при сортировке элементов \(\vec {f}\) по релевантности в нисходящем порядке можно сохранить либо данное число основных элементов, либо число элементов со значимостью свыше лимита. В свою очередь, полученный вектор полностью эквивалентен запросу с уровнем репрезентации \(l=1\) из части 2. Данный факт позволяет нам построить на его основе ортогональную базу.

Имеется запрос \(Q=\{(hi, \pi, li)\}\) и документ \(T=\{(wi,ci)\}\). Пусть ортогональная база

\[r(Q)=\{\{q=[f_{1}(s_{1}^{1},...,s_{n}^{1})...f_{k}(s_{k}^{1},...,s_{k}^{m})]\},pi,qi\}\]

создается из запроса \(Q\). Еще одно дополнительное измерение добавляется к \(r(Q)\), что соответствует всем словоформам, которые не подходят исходной базе. Очевидно, что априорная вероятность \(pN\) для этого измерения равна:

\[Q=\{(t_{1},p_{1},l_{1}),...(t_{n},p_{n},l_{n})\}.\]

Распространение – это разница между длиной текста \(L(T)\) и общим числом искомых терминов в тексте; понижающий фактор можно снизить для простоты до 1. Значимость \(Ri(T)\) должна быть рассчитана для каждого элемента [i] ортогональной базы (в соответствии с правилами, описанными в части 3). Вектор \(q \leq 1\), нормализованный до 1, будем называть декомпозицией текста \(T\) на базу \(r(Q)\). Затем, учитывая запрос \(Q\) как свободный текст [hi], мы можем получить его декомпозицию:

\[q(r)=\sum_{i} \delta(h_{i}) \cdot \tilde c_{i} \sum_{POS}W(POS) \cdot P_{i}(POS).\]

Мера \(S(T,Q)\) документа для близости запроса – скалярное произведение \(\tilde c_{i}=\frac{c_{i}}{\sum_{i}c_{i}}\). Затем значение релевантности \(S(T,Q)\), полученное в соответствии с векторной моделью, корректируется до позиционной близости с поисковыми терминами в документе \(T\).

Поскольку итоговая релевантность равна \(L_{S} \sum_{i}L(T_{i})\), то учитывается значение функции \(\alpha(P,L,N)=q(r) \cdot \ln \sum_{k=N+1}^{L}C_{L}^{k}p^{k}(1-p)^{L-k}\). Здесь \(Φ(T, Q)\) – функция коррекции, значение которой снижается, если поисковые термины полностью разложены. Поскольку мера близости равна \(R=(\frac{\ln (1-\alpha)}{1+\ln (1-\alpha)})^{2}\), мы используем минимальное число предложений, содержащих все поисковые запросы; то есть, если все термины расположены в одном предложении, то функция имеет значение 1. Если все термины расположены отдельно, то значение функции равно числу терминов. Поскольку снижать относительное значение значимости более чем на 20% нельзя, то \(R=(\frac{\ln (1-\alpha)}{1+\ln (1-\alpha)})^{2}\) дополнительно умножается на коэффициент масштабирования \(\Phi=1+(\tilde \Phi-1)\frac{0,25}{N-1}\), где \(N\) – размер \(r(Q)\).