Применение технологий Semantic Web в задаче поиска по коллекциям текстовых документов

Первое впечатление, моих студентов, которым я читал лекцию про Semantic Web, было пронизано идеей о том, что Semantic Web каким-то хитрым способом, но все-таки поможет сделать поиск в Интернет более качественным. Тем более, как одно из приложений Семантической Паутины, авторы данного проекта указывают поиск с учетом семантики. Думаю, что эта идея посетила большинство из тех, кто что-то слышал о Semantic Web тоже.

Однако, посмотрим, чего реально в этой отрасли добился Semantic Web.

Самый наивный подход, который мог бы быть здесь использован, продемонстрирован в проекте SHOE. Ребята предлагают владельцам всех сайтов в Интернете описать свои ресурсы в терминах онтологий проекта, либо использовать готовое средство для создания собственной онтологии для семантической аннотации веб страниц. Авторы утверждают, что на основе семантического описания страниц их система может искать документы. В качестве запроса пользователь должен указать понятие и дополнительные ограничения. Система демонстрируется средствами Java аплета, загружаемого на сайте проекта. Однако последний у меня так и не заработал ни в Opera ни в IExplorer :-( (проверял в январе 2009).
Нужно заметить, что статья с описанием проекта в работающем состоянии датирована 2000-ым годом (напомню знаменитая Semantic Web вышла в 2001 и сама ссылается на данный проект, да и James Hendler - собственно соавтор обеих статей).

Далее нужно упомянуть проект SWOOGLE, который смачно пережевал Миха Зимин. Я лишь скажу, что RDF и OWL документы, которые ищет SWOOGLE и то, что хотят получить пользователи от поисковых систем, сейчас - две большие разницы.

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

Попробуем и мы чего-то поискать с помощью семантики!

Вот замечательный пример, который придумали мои студенты:
Пусть коллекция документов состоит из двух документов.
D1. Стоимость полетов в космос превышает стоимость жд билета в Москву.
D2. Пункт продажи жд билетов в Москве находится здесь.
А пользователь задает следующий запрос.
Q: купить жд билет в москве.
Замечание: для простоты разбора примера предложения документов были упрощены.
Задача: определить какой документ коллекции более релевантен запросу.

Для начала представим документы и запрос в виде набора триплетов. Затем пронумеруем все триплеты, а также понятия (или ресурсы в терминологии RDF), которые получились в результате семантического анализа. Каждый из Вас может это проделать ради интереса самостоятельно. Но вот, что получилось у меня:

документ № триплета S P O
D1 1 1 2 3
2 4 5 6
3 7 8 9
4 10 5 6
5 11 8 12
D2 6 13 14 15
7 16 14 12
8 17 22 18
9 19 20 21
Q 10 17 23 12
11 19 20 21
12 20 23 12

Где S P O - идентификаторы ресурсов общего RDF графа.
В общем-то и не важно какую табличку мы в итоге получили, важно другое:
1. мы ее получили! (пусть и руками).
2. при проведении определенных операций с этой таблицей, мы можем получить новые строки, которые будут соответствовать новым триплетам, представляющим соответствующий документ или запрос.

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

Если вернуться к нашему примеру, и применить еще одну операцию логическго вывода к исходной матрице, то мы увидим, что триплетное представление документа D2 полностью содержит триплеты запроса. Это говорит нам о том, какой документ можно предоставить пользователю в качестве ответа системы.

Для математически точных оценок релевантности нам потребуется ввести дополнительное понятие - достоверность триплета.

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

Таким образом, по "некоему критерию" можно ввести показатель достоверности каждого триплета в нашей итоговой таблице.

Теперь вспомним про векторное представелние текста, о частотах термов, метрике TF*IDF и том, что порядок слов в документе в этой модели ни начто не влияет.

А теперь триплет назовем термом, показатель его достоверности - относительной частотой TF*IDF, и ...

Вот, теперь мы можем взять любой поисковый движок на основе вектроной модели, и посчитать релевантность документов коллекции.

Дело осталось за малым:

  • построить триплетное представлние текстовых документов
  • научиться проводить логический вывод в лингвистической онтологии
  • придумать критерий оценки достоверности триплетов

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

Комментарии

SW в задаче поиска

Случайно наткнулся на статью, в которой рассказывается про технологии SW, там есть ссылки на 2 реально работающих поисковика, использующих технологии SW.

Мне показалось, что GOOGLE работает лучше)))

Однако, можно поглазеть:
http://moreintelligentweb.net/post/470

не случайно

не случайно, это один из сайтов сообщества webofdata.ru
я видел эту статью, оба эти поисковика закрытые, не знаю где найти про их технологии