Алексей Колосов

1,106 views

Published on

Алгоритм полнотекстокового поиска с обучением на основе статистических данных

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,106
On SlideShare
0
From Embeds
0
Number of Embeds
125
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Алексей Колосов

  1. 1. Алгоритм полнотекстокового поиска с обучением на основе статистических данных Алексей Колосов
  2. 2. Оглавление <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  3. 3. <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  4. 4. Задача <ul><li>Имеется портал, посвященный ответам на вопросы пользователей. Ответы на вопросы формируют специалисты-консультанты </li></ul><ul><li>Имеются базы документов, поиск по которым может позволить найти ответ </li></ul><ul><li>Необходимо снизить нагрузку специалистов, отвечающих на вопросы </li></ul>
  5. 5. Рабочий процесс Не помогло? До: После: Помогло?
  6. 6. Обработка данных Вопрос пользователя (произвольный рус./англ. текст) Ссылки на документы Вход Выход Поисковая система
  7. 7.
  8. 8. Поиск по теме сообщения - результаты
  9. 9. Практические задачи <ul><li>Автоматический подбор документов, содержащих нужную пользователям информацию, на основе полного текста вопроса </li></ul><ul><ul><ul><li>Поиск одинаковых или очень похожих вопросов (фильтрация дубликатов) </li></ul></ul></ul><ul><ul><ul><li>Подбор близких по смыслу документов, которые могут также заинтересовать пользователя </li></ul></ul></ul><ul><ul><ul><li>Быстрый поиск по ключевым словам </li></ul></ul></ul>
  10. 10. Отличия данного вида поиска от поиска в Интернете <ul><li>Запрос состоит из нескольких предложений, а не из нескольких слов </li></ul><ul><li>Авторы страниц заинтересованы в адекватности результатов поиска (нет SEO) </li></ul><ul><li>Количество документов невелико (десятки тысяч) </li></ul><ul><li>Все документы посвящены одной тематике или ряду близких тематик </li></ul>
  11. 11. <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  12. 12. Функции системы (подзадачи)
  13. 13. <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  14. 14. Обработка запросов <ul><li>Фильтрация шумовых слов </li></ul><ul><li>Выявление словосочетаний </li></ul><ul><li>Раскрытие форм слов (с меньшим весом) </li></ul><ul><li>Раскрытие синонимов (с меньшим весом) </li></ul>
  15. 15. Выявление словосочетаний – знаки препинания ( при индексировании) <ul><li>Примеры: </li></ul><ul><li>issue - tracking tools => [N, N + 0.25] </li></ul><ul><li>... the issue , but{stop word} tracking changes ... => [N, N + 3 ] </li></ul><ul><li>Object . Method () => </li></ul><ul><li>Object[N], Method[N + 0.25] </li></ul><ul><li>… some object . Method A shows… => object[N], Method[N + 1 5 ] </li></ul>
  16. 16. Выявление словосочетаний - семантика <ul><li>Несмотря на грамматические ошибки, пользователи обычно применяют корректные сочетания слов для описания технической сути проблемы. </li></ul><ul><li>Построение концептуального графа позволяет отфильтровать несвязанные слова и грамматически неверные конструкции. </li></ul>
  17. 17. Пример запроса <ul><li>Hi there! </li></ul><ul><li>i have a script test with a bunch of checkpoints , but when it hits a checkpoint cannot be verified, the execution of the script stops and any tests after the failed checkpoint do not get executed. </li></ul><ul><li>Thank's in advance. </li></ul><ul><li>Randy </li></ul>
  18. 18. Концептуальный граф - фрагмент
  19. 19. Отфильтрованные предложения
  20. 20. Результаты разбора <ul><li>Словосочетания, по которым должен производиться поиск </li></ul><ul><li>Каждое словосочетание имеет свой вес </li></ul><ul><li>Поскольку текст может содержать несколько вопросов / касаться нескольких тем, словосочетания объединяются оператором OR </li></ul><ul><li>В результате разбора задача поиска по тексту сводится к задаче поиска по набору словосочетаний, решаемой с помощью предлагаемого алгоритма </li></ul>
  21. 21. <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  22. 22. Поисковый алгоритм <ul><li>Факторы, влияющие на релевантность: </li></ul><ul><li>Операторы поиска ( AND, AND NOT, OR, “exact phrase”, и т.п .) </li></ul><ul><li>Скорректированный вес ключевых слов </li></ul><ul><li>Позиции слов в документе и знаки препинания </li></ul><ul><li>Вес проиндексированного поля </li></ul><ul><li>Результаты морфологического разбора запроса </li></ul>
  23. 23. Используемая модель <ul><li>Для моделирования документа или запроса используется векторная модель: </li></ul><ul><li>The native methods of the control => </li></ul><ul><li>[the (0.333), native(0.166), methods(0.166), of (0.166), control(0.166)] </li></ul><ul><li>[0, 5] [1] [2] [3] [4] </li></ul>
  24. 24. Процесс поиска
  25. 25. Релевантность по словам где – вес соответсвующих слов, вычисленный по формуле tf.
  26. 26. Релевантность по словосочетаниям <ul><li>Словосочетания, повторяющиеся в тексте запроса несколько раз, имеют больший вес (зависящий от количество повторений) </li></ul><ul><li>Чем длиннее словосочетание, тем более узкий смысл оно имеет = > тем больше смысловая близость между документами, содержащими эту фразу </li></ul><ul><li>Чем дальше слова расположены друг от друга, тем меньше вероятность того, что они связаны </li></ul>
  27. 27. Релевантность по словосочетаниям. Факторы <ul><li>Количество искомых словосочетаний, встречающихся в документе </li></ul><ul><li>Количество слов в искомых словосочетаниях </li></ul><ul><li>Расстояние между словами словосочетаний в документе и знаки препинания (слова должны быть в одном предложении) </li></ul>
  28. 28. Есть ли словосочетание в тексте? <ul><li>Слова, расположенные далеко друг от друга (а также разделенные знаками препинания), скорее всего, не связаны между собой </li></ul><ul><li>Слова, расположенные в разных предложениях, скорее всего, не связаны между собой. </li></ul><ul><li>Контекстное окно должно учитывать и то, и другое </li></ul>
  29. 29. Словосочетание есть в документе, если... <ul><li>...( расстояние между каждой парой слов ) < M, где M – величина, на которую искуственно увеличивается позиция слова после конца предложения. </li></ul><ul><li>Пример: AJAX applications testing </li></ul><ul><li>AJAX web applications are, indeed, difficult for testing . => сум. расстояние: 7 </li></ul><ul><li>No AJAX applications . Testing desktop applications is another task. => </li></ul><ul><li>сум. расстояние: 16 </li></ul>
  30. 30. Релевантность по словосочетаниям - формула среднее арифметическое релевантностей по каждому из рассматриваемых словосочетаний p i , выделенных из запроса q . Здесь w pi – вес словосочетания в запросе, R p - релевантность документа словосочетанию p i , вычисляемая по следующей форумле: где – количество слов в словосочетании p i , – суммарное расстояние между каждым из этих слов в рассматриваемом документе d j , вычисленное для каждого вхождения в документ словосочетания p i .
  31. 31. Итоговая релевантность <ul><li>Словосочетания должны иметь больший вес, однако отсутствие совпадений по словосочетаниям не означает отсуствие релевантности </li></ul><ul><li>Релевантность считается отдельно по каждому полю, каждое поле имеет свой вес </li></ul><ul><li>Итоговая релевантность не должна зависеть от алгоритма вычисления ее слагаемых </li></ul>
  32. 32. Итоговая релевантность - формула где – косинус угла между векторами запроса q и документа d j , характеризующий их близость по ключевым словам , R phrase – релевантность по словосочетаниям, W field – вес проиндексированного поля
  33. 33. <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  34. 34. Эксперимент. Формула оценки качества поиска где rel i – релевантность, проставленная асессором [0..2] , i – порядковый номер результата в выдаче p = 10 – количество оцениваемых результатов
  35. 35. Результаты экспериментов Среднее качество « top 10 » результатов ( discounted cumulative gain) , max=10,51 Количество запросов
  36. 36. <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  37. 37. Обучение <ul><li>Явная оценка неэффективна (оценивают качество документов только 0,23% пользователей) </li></ul><ul><li>Имеется подробная статистика об использовании портала </li></ul><ul><li>Если автоматически подобранные документы не помогли, запрос пользователя поступает к специалистам = > известна «полезность» каждого набора результатов для поиска по тексту </li></ul><ul><li>Систему обучают пользователи, не делая ничего дополнительно </li></ul>
  38. 38. Особенности: <ul><li>при локальном поиске нет смысла учитывать «авторитетность» страницы (ссылки на нее) </li></ul><ul><li>никто не заинтересован в искусственном продвижении какой-либо страницы из локальной базы по определенным запросам засчет внестраничных факторов </li></ul><ul><li>прямая корректировка веса слов позволяет точно настраивать алгоритм </li></ul>
  39. 39. Оценка качества при поиске по тексту <ul><li>Хорошие результаты поиска: </li></ul>Хорошие результаты – просмотренные документы Плохие результаты – просмотренные документы Плохие результаты поиска: Плохие результаты – документы с первой страницы результатов
  40. 40. Оценка качества при обычном поиске <ul><li>Хорошие результаты поиска: </li></ul>Хорошие результаты – просмотренные документы Хорошие результаты – просмотренные документы
  41. 41. Оценка качества при обычном поиске <ul><li>Плохие результаты поиска: </li></ul>Плохие результаты – все показанные документы с номерами [ 0 , N-1], где N – номер первого просмотренного документа Плохие результаты – документы с первой страницы результатов Плохие результаты – просмотренные документы
  42. 42. Корректировка весов после поиска <ul><li>Величина должна сходиться к «идеальному» весу = > следующее изменение меньше, чем предыдущее </li></ul><ul><li>Корректировка весов не должна приводить к обнулению веса </li></ul><ul><li>Первая корректировка не должна приводить к делению на ноль или сильному изменению веса </li></ul>
  43. 43. Корректировка весов после поиска где – текущий скорректированный вес ключевого слова в индексе (измененный ранее в результате обработки статистики), – вес ключевого слова, изначально вычисленный по формуле tf . Значение n берется в зависимости от полезности обрабатываемого результата. Если результат является плохим, берется n = 1, если хорошим – берется n = 2. K > 0 – константа.
  44. 44. Корректировка весов при изменении документа <ul><li>Изменение документа должно приводить к пересчету весов </li></ul><ul><li>Небольшие исправления не должны приводить к потере скорректированного веса </li></ul><ul><li>Новый вес должен быть тем ближе к старому (скорректированному), чем ближе по смыслу новая и старая версии документов </li></ul>
  45. 45. Корректировка весов при изменении документа - формула w i , j = tf i , j + cos ( d ’ j , d j ) · ( tf i , j - w’ i , j ) здесь cos ( d ’ j , d j ) – схожесть старой версии документа d j и новой версии документа d ’ j , вычисленная как косинус угла между их векторами , tf i , j – вес слова в новой версии документа, w’ i , j – скорректированный вес слова в старой версии документа.
  46. 46. <ul><li>Постановка задачи </li></ul><ul><li>Функции системы </li></ul><ul><li>Обработка запросов </li></ul><ul><li>Поисковый алгоритм </li></ul><ul><li>Эксперименты </li></ul><ul><li>Обучение </li></ul><ul><li>Перспективы развития </li></ul>
  47. 47. Обучение распознаванию фраз <ul><li>По поведению пользователей можно судить о правильности разбиения запроса на фразы </li></ul><ul><li>Подсчет количества фраз в хороших и плохих результатах поможет определить, какие пары слов являются связанными </li></ul><ul><li>Сохранение полученных данных позволит правильно провести разбиение при следующем поиске </li></ul><ul><li>Накопленные данные можно использовать для автоматизированного создания шаблонов (при расширении поддержки какого-либо языка, или для поддержки нового языка) </li></ul>
  48. 48. Обучение распознаванию фраз. Пример <ul><li>Запрос: expanding XML entities => [expanding, XML], [XML, entities] </li></ul><ul><li>Хорошие результаты: просмотрено (10), expanding + XML (1), XML + entities (9) </li></ul><ul><li>Рейтинг [XML, entities]++ </li></ul>
  49. 49. Обучение распознаванию фраз. Пример <ul><li>Фразы с высоким рейтингом: </li></ul><ul><li>[XML, entities] [web, tests] [file, names] </li></ul><ul><li>Шаблон: </li></ul><ul><li>существительное ед.ч. + существительное мн.ч. = словосочетание </li></ul>
  50. 50. Выводы <ul><li>В системе автоматизации формирования ответа службы поддержки необходимо применять поиск по ключевым словам и словосочетаниям </li></ul><ul><li>Применение концептуальных графов упрощает поиск словосочетаний </li></ul><ul><li>Использование статистики может улучшить качество разбиения запросов на словосочетания </li></ul>
  51. 51. Вопросы?
  52. 52. Выявление близких по смыслу слов <ul><li>Близкими по смыслу словами могут считаться: </li></ul><ul><li>Слова одной части речи </li></ul><ul><li>Употребляемые в одном и том же отношении </li></ul><ul><li>С одним и тем же словом </li></ul><ul><li>Пример: купить в магазине, купить в супермаркете, купить в гипермаркете, купить в бутике </li></ul><ul><li>= > [ магазин, супермаркет, гипермаркет, бутик ] </li></ul>

×