Первое впечатление, моих студентов, которым я читал лекцию про 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
я видел эту статью, оба эти поисковика закрытые, не знаю где найти про их технологии