Часть 3
Исследовав другие документы базы данных на предмет вхождения в них этих терминов, мы, естественно, найдем, что «это» не встречается очень часто, в то время как слово «Зипфа» довольно редко. Напрашивается очевидный вывод: слово «Зипфа» должно стать термином, в тоже время которое не следует отвергнуть, как препятствие. Чтобы избавиться от лишних слов и в то же время поднять рейтинг значимых слов, вводят параметр инверсная частота термина. Значение этого параметра тем меньше, чем чаще слово встречается в документах базы данных. Вычисляют его по формуле: Инверсная частота термина и= log (количество документов в базы данных / количество документов с термином и)
Теперь каждому термину можно присвоить весовой коэффициент, который отображает его значимость: Вес термина и в документе j =частота термина в документе j х инверсная частота термина и Наверное, в нашем примере термин не получит нулевой или близкий к нулю вес, поскольку практически во всех текстах встречается это слово. Термин же «Зипфа», напротив, приобретет высокий вес. Современные способы индексирования не ограничиваются анализом перечисленных параметров текста. Поисковая машина может строить весовые коэффициенты с учетом местоположения термина внутри документа, взаимного расположения терминов, частей речи, морфологических особенностей и т. п. Как термины могут выступать не только отдельные слова, но и словосочетания.
Джорж Зипф (George K. Zipf) опубликовал свои законы в1949 году. Пять лет после этого знаменитый математик Беноит Мандлеброт (Benoit Mandlebrot) внес небольшие изменения в формулы Зипфа, добившись более точного соответствия теории практике. Без этих законов сегодня не обходится ни одна система автоматического поиска информации. Как видите, математический анализ разрешает машине с хорошей точностью, безучастия человека, распознать семантическую суть текста.
Представление базы данных. Итак, мы разобрались, как поисковая машина «понимает» суть текста. Теперь необходимо организовать всю коллекцию документов так, чтобы можно было легко отыскать в ней нужный материал. База данных должна взаимодействовать с пользовательским запросом. Запросы могут быть простыми, которые состоят из одного слова, и сложными, с нескольких слов, связанных логическими операторами.
Простой запрос оправдывает свое название. Пользователь вводит слово, машина ищет его в списке терминов и выдает все связанные с термином
ссылки. Структура такой базы данных проста. Взаимодействие со сложными запросами требует более утонченной организации.
Матричное представление базы данных. Наиболее простой способ представить элементы базы данных в форме, удобной для разнообразного поиска, потом создать матрицу документ термин. Предположим, база данных имеет 8 документов (Д1, Д2,...Д8), в которых помещаются 12терминов. Если термин входит в документ, в соответствующей клеточке ставится единица, в противном случае нуль (в реальной системе все более сложнее: кроме всего прочего учитываются еще и весовые коэффициенты терминов).Составим, например, такой запрос: корабли в бутылках.
Система обработает запрос: удалит стоп слова и, возможно, проведет морфологический анализ. Останется два термина: корабль и бутылка. Система будет искать все документы, где встречается хотя бы один из терминов. Посмотрим на матрицу. Указанные в запросах термины есть в документах: Д1, Д2,Д4, Д7, Д8. Они и будут выданы в ответ на запрос.
Однако нетрудно заметить, что документы Д4 и Д7 не удовлетворяют нашим ожиданиям они из области виноделия и никакого отношения к строительству моделей кораблей в бутылках не имеют. Впрочем, система все сделала правильно, ведь, с ее точки зрения, термины корабль и бутылка равноценные.
Источник: Журнал "Бизнес и безопасность"
Продолжение далее