АВТОМАТИЗИРОВАННОЕ ПОСТРОЕНИЕ СПИСКОВ СЕМАНТИЧЕСКИ БЛИЗКИХ СЛОВ НА ОСНОВЕ РЕЙТИНГА ТЕКСТОВ В КОРПУСЕ С ГИПЕРССЫЛКАМИ И КАТЕГОРИЯМИ

А.А. Крижановский
Санкт-Петербургский институт информатики и автоматизации РАН
/ aka at iias dot spb dot su /

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


Введение

Увеличение числа и изменение качества электронных документов на локальных компьютерах и в сети Интернет позволяют адаптировать известные алгоритмы и предлагать новые для более точного поиска. Поиск похожих объектов (similarity search), кроме поиска похожих текстовых документов, включает задачу поиска семантически близких слов, задачу поиска похожих вершин графа. Для поиска синонимов и семантически близких слов применяют методы, учитывающие структуру гиперссылок, частоту словосочетаний и др.

В методах поиска, использующих структуру гиперссылок, учитываются весовые коэффициенты, назначенные каждому документу (в наборе документов с гиперссылками). Это позволяет вычислить относительную важность документа внутри данного набора (концепция авторитетных страниц). Алгоритмы HITS [Kleinberg, 1999] и PageRank (реализован в Google) предназначены для поиска интернет страниц, соответствующих запросу. Эти же алгоритмы позволяют искать похожие страницы (similar pages).

Метод извлечения контекстно связанных слов на основе частотности словосочетаний [Pantel, 2000] предлагается для поиска контекстно похожих слов (КПС) и для машинного перевода. Данными для поиска КПС служат (1) семантически близкие слова из тезауруса, (2) словосочетания из БД с указанием типа связи между словами. Для слова w формируется cohort w, т.е. группа слов, связанных одинаковыми отношениями со словом w, из базы словосочетаний. КПС слова w – это пересечение множества похожих слов (из тезауруса) с cohort w. Работа [Pantel, 2000] интересна формулами, предлагаемыми для вычисления сходства между группами слов.

В данной работе представлен адаптированный HITS алгоритм и его реализация в виде программной системы для поиска семантических синонимов в корпусе текстов с гиперссылками и категориями (Википедиа).

Трудности поиска синонимов определяются рядом причин. Во-первых, автору не известно общепринятой количественной меры для определения степени синонимичности значений слов. Можно утверждать, что одна пара слов более синонимична чем другая, но не ясен способ однозначно указать во сколько раз. Во-вторых, понятие синонимии определено не для слов, а для значений слов, т.е. синонимия неразрывно связана с контекстом. В-третьих, язык – это вечноизменяемая субстанция. Слова могут устаревать или получать новые значения. Особенно активное словообразование и присвоение новых значений словам наблюдается в науке, в её молодых, активно развивающихся направлениях.

Разработанные алгоритмы используют структуру ссылок в текстах, поэтому могут применяться к текстам на любом языке. Ссылки, связывающие страницы друг с другом, указываются экспертом. Предлагаемые алгоритмы применимы к корпусам текстов с гиперссылками и категориями. Эти тексты должны отвечать следующим условиям:

  1. Каждому текстовому документу (статье) соответствует одно или несколько ключевых слов, отражающих содержание статьи. Например, в случае энциклопедии – энциклопедической статье соответствует одно слово – название статьи.

  2. Статьи связаны ссылками. Для каждой статьи определены: набор исходящих ссылок (на статьи, которые упоминаются в данной статье) и входящих ссылок (на статьи, которые сами ссылаются на данную статью).

  3. Каждая статья соотнесена одной или нескольким категориям (тематика статьи). Категории образуют дерево таким образом, что для каждой категории есть родитель-категория (кроме корня) и один или несколько детей-категорий (кроме листьев).

Данная структура не является абстрактным измышлением. Она имеет конкретное воплощение в структурах типа вики (wiki), получивших широкое распространение в последнее время в Интернете, например, в виде электронной онлайн энциклопедии Википедиа (на русском, английском и других языках) (http://wikipedia.org). Анализ сетевого ресурса Википедиа представлен в [Holloway et al., 2005].

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

Вики ресурсы

Кратко осветим тему вики ресурсов, поскольку Википедия является вики ресурсом. Перечислим значения слова. Вики (Wiki) – это тип сайтов, предоставляющих пользователям простой способ для добавления и изменения страниц сайта и, в особенности, предназначенных для совместной работы. Вики – это «простейшая онлайн база данных, которая, возможно, работает» [WhatIsWiki, 2005]. Также вики – это часть программного обеспечения (ПО) на стороне сервера, позволяющая пользователям создавать и редактировать содержание Интернет страниц с помощью любого Интернет броузера. Язык вики поддерживает гиперссылки (для создания ссылок между вики страницами) и является наглядным (по сравнению с HTML) и безопасным (нет JavaScript и Cascading Style Sheets) [Wiki, 2006].

Вики технологию изобрёл Ward Cunningham в 1995 г. Прелесть вики в том, что у каждой страницы есть ссылка “редактировать эту страницу”. Пользователи могут редактировать страницы, читатели легко превращаются в писателей.

Чтобы вносить правки, пользователи регистрируются. У каждой страницы есть ссылка “страница истории”. Ссылка ведёт на страницу, где указаны изменения, список авторов, упорядоченный по времени, и комментарии авторов к изменениям.

Концепция «свободного редактирования» имеет свои достоинства и недостатки. Открытость в редактировании текстов привлекает простых (технически не подкованных) пользователей, что позволяет развивать уже существующие вики ресурсы. К проблемам стоит отнести борьбу с вандализмом недружественных, а точнее, невежественных пользователей. Эта проблема решается благодаря возможности отката (в БД хранится история всех правок) и наличию истории страницы (указывается кто, что и когда правил). Решение об откате принимает администратор ресурса.

Тематическая связность авторитетных страниц

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

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

Возможны следующие решения задачи:

  1. Решение HITS алгоритма. Авторитетные страницы (по данной тематике) содержат не только большое число входных ссылок, но и пересекаются между собой. Это обеспечивается hub страницами, содержащими ссылки сразу на несколько авторитетных страниц (одной тематики). Т.о., научившись вычислять значения authority и hub страницы, получаем набор авторитетных страниц (тематически связанных), соответствующих запросу (здесь – слову, для которого ищем синонимы).

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

HITS Алгоритм

В работе [Kleinberg, 1999] предлагается для поиска Интернет страниц (соответствующих запросу пользователя) использовать информацию, заложенную в гиперссылки. Демократическая природа Интернет позволяет использовать структуру ссылок как указатель значимости страниц (эта идея есть и в алгоритме PageRank). Страница p, ссылаясь на страницу q, полагает q авторитетной, стоящей ссылки. Для поиска существенно, что страница q соответствует тематике страницы p.

Каждой релевантной странице (найденной в алгоритме с помощью поискового сервера) сопоставляются веса a и h, которые показывают соответственно насколько страница является авторитетной и насколько она является хорошей hub страницей. В [Kleinberg, 1999] предлагаются следующие формулы для итеративного вычисления:


(1)



(2)

где hj и aj показывают, насколько страница j является хорошим указателем на релевантные страницы (т.е. hub) и насколько страница j является авторитетной страницей.

Таким образом, задачу поиска похожих Интернет страниц Kleinberg сводит к задаче поиска похожих вершин в графе на основе вычисления весов вершин.

Задача поиска похожих вершин в графе на основе весов hub и authority

Дан направленный граф G=(V, E), где V – вершины (страницы), E – дуги (ссылки), v – вершина графа. Для каждой страницы v известны два списка: Г+(v) – это страницы, на которые ссылается данная статья, и Г¯(v) – это страницы, ссылающиеся на данную статью. Для каждой вершины определены значения двух весовых коэффициентов authority и hub: .

Необходимо найти набор вершин A, похожих на вершину v. Степень сходства (между v и A) будет тем выше, чем больше будет hub-вершин H, указывающих и на v и на вершины из A. При этом вершины А являются авторитетными, т.е. на них указывают многие вершины той же тематической направленности, что и исходная вершина v.

Формализуем понятия: похожие вершины и авторитетные вершины, т.е. формализуем постановку задачи.

Необходимо найти множество вершин A, которые являются (i) авторитетными вершинами для исходной вершины v (т.е. значение (3) велико относительно других подмножеств вершин той же мощности), (ii) похожими на исходную вершину v в смысле наличия множества вершин H, ссылающихся одновременно и на исходную вершину v и на вершины из А (4). H – это hub-вершины, т.е. значение (5) велико относительно других подмножеств вершин той же мощности. Задача – выбрать множество A авторитетных вершин и H hub вершин в значении (6), где k – это один из параметров алгоритма.



(3)



(4)


(5)



(6)

Назначение весов hub и authority вершинам-страницам может быть выполнено с помощью HITS алгоритма (формулы (1) и (2)).

Адаптированный HITS алгоритм с использованием методов кластеризации

HITS алгоритм был адаптирован с учётом таких возможностей вики ресурсов, как: наличие двух списков страниц для каждой статьи (кто ссылается на данную статью Г¯(v), на кого ссылается данная статья Г+(v)), наличие у статей категорий, определяющих их тематическую принадлежность.

Адаптированный алгоритм поиска включает шаги:

  1. В корневой набор включаются те страницы, на которые ссылается исходная страница (вместо поиска с помощью поискового сервера в оригинальном HITS алгоритме).

  2. В базовый набор включаются страницы, которые связаны ссылками с корневым набором.

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

  4. Алгоритм кластеризации на основе категорий статей (шаг отсутствует в оригинальном алгоритме).

Предлагается следующий алгоритм кластеризации статей (шаг 4) на основе категорий статей. Определим структуры данных, используемые в алгоритме и представим псевдокод алгоритма.

Переменные и структуры данных алгоритма кластеризации.

Clusters – список кластеров, которые нужно построить.

Для каждого ребра e определены следующие поля:

Для кластера-вершины c определены такие поля:

Входные параметры.

MaxClusterWeight – максимально разрешённый вес кластера. При вычислении веса кластера учитываются: число статей в кластере, веса объединяемых кластеров.

Процесс кластеризации состоит из двух шагов: предобработка (инициализация массива кластеров, присвоение начальных значений полям вершин и рёбер) и сам алгоритм кластеризации.


Предобработка

(две косые черты '//' отделяют комментарий от псевдокода)


  1. Построить кластеры (массив Clusters) по категориям: изначально каждый кластер соответствует отдельной вершине (категории). Приписать каждому кластеру (за счёт содержащихся в кластере категорий):

  1. articles| = число статей, которые ссылаются на категории в кластере,

  2. c weight = 1 + |с articles| // изначально вес кластера – это число категорий в кластере (изначально одна категория) и число статей, которые ссылаются на эту одну категорию,

  3. c category_id[0] = category id // присваиваем кластеру уникальный идентификатор id первой (и единственной пока) категории, добавленной в кластер (у каждой категории и статьи Википедиа есть уникальный идентификатор).

      1. Для каждого ребра между категориями создать ребро между кластерами. Каждому ребру e, соединяющему два кластера c1 и c2 определить вес так:

e weight = c1 weight + c2 weight


Алгоритм

  1. E sorted = sort(e weight); // сортировка рёбер по весу

  2. while(|E sorted| > 0 && (E sorted [0] < MaxClusterWeight)) BEGIN

  3. e = E sorted[0]; // v1, v2 – вершины смежные ребру e

  4. E sorted = E sorted \ Г(v2); // удалить из упорядоченного массива рёбер рёбра смежные v2

  5. merge(e); // объединить вершины-кластеры v1 и v2 в кластер v1, т.е. добавить вершину v2 в кластер v1, изменив свойства v1 так:

    1. v1 weight += v2 weight; // увеличить размер кластера (число категорий и статей)

    2. |v1 articles| += |v2 articles|; // увеличить число статей

    3. |v1 edges| += |v2 edges|; // увеличить число рёбер

    4. v1 category_id[] += addUnique(v2 category_id[]); // добавили категории без повторов

  6. passEdges(); // все рёбра смежные вершине v2 передать вершине v1 (рёбра без повторений, это не мультиграф).

  7. Esorted = Esorted \ edge (v1, v2); // удалить ребро (v1, v2);

  8. updateEdgesOfMergedCluster; // обновить указатели на вершины, удалить ребра (вершины и рёбра, смежные удаляемой вершине)

  9. updateEdgeWeight(v1); // пересчитать значения весов для всех рёбер смежных v1

  10. remove(Clusters, v2); // удалить кластер v2 из массива кластеров

  11. E sorted = sort(e weight) // пересортировка рёбер, сложность O(N), т.к. нужно обновить порядок только тех рёбер, которые смежны вершине v1

  12. END

  13. Return Clusters


Результат работы алгоритма – это кластеры категорий (Clusters). По кластеру категорий получаем кластер статей.

Заметим, что одна статья может ссылаться на несколько категорий. Поэтому одна статья может принадлежать нескольким кластерам. Но категория принадлежит ровно одному кластеру.

Реализация

Данные. Система Synarcher работает с данными Википедиа в MySQL формате (структура таблиц соответствует требованиям системы MediaWiki - основа для работы Википедиа). Поиск синонимов проводился на основе данных английской и русской версии энциклопедии Википедиа. Вероятно, система Synarcher сможет искать синонимы и на других вики-ресурсах, основанных на MediaWiki.

Требования к ПО. Для запуска системы Synarcher на стороне клиента требуется Jave Runtime Environment (JRE) версии не ниже 1.3.0. Система тестировалась в операционных системах Windows XP и Mandrake Linux.

Клиент-серверная архитектура. Ресурсы Википедиа доступны благодаря слаженной работе на стороне сервера таких программ и сервисов, как: MySQL, Apache, php, MediaWiki. Общедоступный сервер Википедиа (http://en.wikipedia.org) не использовался, поскольку данная реализация поиска синонимов требует значительной вычислительной нагрузки БД. Поэтому обрабатывалась локально установленная база данных MySQL Википедиа.

Интерактивный режим работы с графом. Результаты поиска представлены в виде графа. Вершины соответствуют названиям статей энциклопедии (статья – это гипертекстовая страница), дуги указывают наличие гиперссылок между статьями. Пользователь может раскрыть вершину (отобразить список соседей), спрятать соседей, пометить вершину как синоним. Изначально пользователь вводит слово, и система выполняет автоматический поиск синонимов. Затем пользователь помечает (опция rate/unrate) те слова, которые действительно являются синонимами (работа в интерактивном режиме с таблицей или визуальным представлением графа). Данная клиент-серверная система настроена так, что параметры поиска для каждого искомого слова и список отобранных пользователем синонимов хранятся на компьютере пользователя.

Представление в виде графа результатов поиска синонимов основывается на программе TouchGraph WikiBrowser V1.02 (http://www.touchgraph.com). Экран делится на две части вертикальной полосой, с левой стороны можно задать параметры поиска, посмотреть энциклопедическую статью, соответствующую выбранному слову, посмотреть результаты в табличном и текстовом виде, с правой стороны представлена часть вики графа (Рис. 1).



Рис.
1 Результаты поиска синонимов к слову “дорога” в виде таблицы, текста (поле Output) и графа


Эксперименты

Эксперименты проводились с локальной версией английской энциклопедии Википедиа, соответствующей онлайн версии от 8 марта 2005. Английская Википедиа включала 901,861 страниц, 18,380,035 гиперссылок, русская – 30,161 страниц, 468,771 гиперссылок.

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

В ходе интерактивного поиска с помощью программы Synarcher для слова robot экспертом были найдены следующие семь синонимов: android, golem, homunculus, domotics, replicant, sentience, parahumans (подчёркнуты синонимы, присутствующие в тезаурусах WordNet и Moby; значения слов см. http://en.wikipedia.org). WordNet 2.0 содержит только два синонима к слову robot. Это automaton и golem.

Для слова astronaut c помощью программы были выбраны четыре синонима: cosmonaut, taikonaut, spationaut, space tourist. WordNet предлагает два синонима: spaceman, cosmonaut. Moby Thesaurus 1.0 не содержит слова robot, а слову astronaut в нём соответствуют 79 слов, из которых шесть слов можно отнести к синонимам или словам близким по значению: aeronaut, cosmonaut, pilot, rocket man, rocketeer, spaceman.

Итак, для слов astronaut и robot было найдено два и шесть синонимов, отсутствующих в тезаурусах WordNet и Moby.

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

Заключение

В работе представлен адаптированный HITS алгоритм для поиска синонимов и близких по смыслу слов в корпусах текстов с гиперссылками и категориями. Алгоритм реализован в программе Synarcher, осуществляющей поиск в английской и русской версиях энциклопедии Википедиа. Программа будет доступна по адресу http://sourceforge.net/projects/synarcher.

Проведён ряд экспериментов, показывающих возможность успешного поиска синонимов с помощью данной программы. Для слов robot и astronaut были найдены синонимы, отсутствующие в тезаурусах WordNet и Moby. Это можно объяснить свойствами источника данных (энциклопедии Википедиа): наличие статей и на классическую для энциклопедии тематику (наука, искусство, политика и др.) и на самую современную тематику (база обновляется, буквально, каждый день), большое количество статей (в английской версии их число превысило размер энциклопедии Британника).

Предложенное решение задачи поиска синонимов может использоваться в поисковых системах (расширение запросов с помощью тезаурусов [Браславский, 2004]), в системах машинного перевода, при составлении словарей синонимов.

Благодарности

Автор выражает благодарность «Фонду содействия отечественной науке» за поддержку.

Список литературы:

[Браславский, 2004] Браславский П. Автоматические операции с запросами к машинам поиска интернета на основе тезауруса: подходы и оценки // Компьютерная лингвистика и интеллектуальные технологии: Труды Междунар. конф. Диалог'2004. - М.: Наука, 2004. - С. 79-84. 4.

[Holloway et al., 2005] Holloway T., Bozicevic M., Borner K. Analyzing and Visualizing the Semantic Coverage of Wikipedia and Its Authors // 2005. http://arxiv.org/abs/cs/0512085

[Kleinberg, 1999] Kleinberg J. Authoritative sources in a hyperlinked environment. Journal of the ACM 46(5), 1999, 604-632 http://www.cs.cornell.edu/home/kleinber/

[Pantel, 2000] Pantel P. and Lin D.. Word-for-Word Glossing with Contextually Similar Words // In Proceedings of ANLP-NAACL 2000 - pp.78-85, Seattle, Washington, 2000 http://www.cs.ualberta.ca/~lindek/papers.htm

[WhatIsWiki, 2005] What Is Wiki? // 2005. http://wiki.org/wiki.cgi?WhatIsWiki

[Wiki, 2006] Wiki // 2006 http://en.wikipedia.org/wiki/Wiki