Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Типа WordNet для русского языка




 

Работа над словарем английского языка WordNet [102] была начата в Принстонском университете (США) в начале 1980-х гг. и продолжается до настоящего времени. Сейчас доступна версия 2.0 этого словаря. Существующая версия Princeton WordNet охватывает общеупотребительную лексику современного английского языка (более 120 тыс. слов). Широкое распространение этот словарь получил благодаря его свободной доступности для научных и исследовательских целей.

В 1996–1999 гг. при финансировании Европейской комиссии был создан многоязычный вариант словаря WordNet – EuroWordNet [98]. Эта лексическая система объединила в себе WordNet-словари английского, датского, испанского, итальянского, немецкого, французского, чешского и эстонского языков, при этом за основу был взят WordNet версии 1.5. В 2007 г. завершилась работа над проектом BalkaNet, объединяющем греческий, болгарский, турецкий, чешский, французский, румынский и сербский языки [93]. Все национальные версии WordNet связаны как с исходным словарем WordNet, так и между собой через специальный межъязыковой индекс (Inter-lingnal-Index, ILI). Все словари EuroWordNet – это коммерческие продукты.

В настоящее время словари WordNet могут применяться в системах информационного поиска (Information Retrieval), вопросно-ответ-ных системах (Q&A Systems), в системах машинного перевода (Machine Translation) и при решении задачи определения значения слов (Word-Sensedisambiguation, WSD).

Что касается проектов словарей WordNet для русского языка, то можно отметить следующее.

В настоящее время известны несколько реализаций WordNet и подобные лексические базы данных для русского языка:

- проект RussNet, разрабатываемый с 1999 г. на филологическом факультете Санкт-Петербургского государственного университета [78];

- проект тезауруса RuThes, используемого в УИС «Россия» [78]. Это закрытый коммерческий ресурс;

- проект русскоязычной версии словаря WordNet компании «Новософт» [41]. Это также закрытый коммерческий ресурс.

Методика и принципы построения словаря проекта RussNet [8] ориентированы на длительный процесс разработки ресурса группой лингвистов без какой-либо автоматизации процесса построения и связи с исходным словарем WordNet. Два других проекта невозможно оценить из-за их закрытости, хотя в последнем используется небольшой англо-русский словарь Миллера для автоматизации построения ресурса.

Рассматриваемая в данной монографии реализация русскоязычной версии словаря WordNet позволяет получить ядро словаря за меньший срок за счет использования доступных словарей и автоматизации процедур построения и редактирования словаря. Ставится задача получения русско-язычной версии WordNet, сопоставимой по числу лексических единиц с английской версией. Для этих целей создана методика, включающая в себя набор алгоритмов и процедур их проверки. Эта методика позволяет значительно сократить время разработки за счет более эффективного использования существующих ресурсов и автоматизации процесса построения словаря WordNet на их основе. Большое внимание в данной методике уделено вопросу интеграции с другими лексическими ресурсами. Однако повышение качества получаемого таким образом словаря связано с его ручной доработкой на каждом этапе построения.

Для создания русскоязычной версии словаря WordNet используются лингвистические ресурсы компании «Руссикон» [70; 74] и словари, свободно распространяемые в Интернете, например Oxford Russian Dictionary, New Oxford Dictionary of English (2nd Edition), New Oxford Thesaurus of English, которые применяются при автоматизированном построении русско-английского словаря WordNet [11; 72; 75]. Для работы со словарем также разработан редактор TenDrow, позволяющий просматривать и редактировать словарные статьи WordNet и иерархии их отношений. Редактор TenDrow используется для чистовой обработки словаря.

Основной целью рассматриваемой методики является построение русско-английского словаря WordNet, включающего в себя лексику русского и английского языков. Разработка такого варианта словаря включает два этапа: построение русскоязычной версии словаря WordNet, описывающего лексику русского языка, и объединение полученного словаря с последней реализацией Princeton WordNet с помощью индекса ILI. При этом наиболее важными аспектами являются редактирование специально подготовленных текстовых файлов и использование набора утилит для внесения изменений в базу данных. Для каждого этапа построения словаря формируется свой набор таких файлов и средств их обработки.

Базовой структурной единицей, формирующей словарную статью WordNet, является синонимичный ряд – синсет, объединяющий лексемы со схожим значением и представляющий некоторое понятие языка. Для каждого синсета определяется толкование, уточняющее значение этого понятия и приводятся примеры употребления лексем синсета в некотором контексте.

Процесс формирования статьи словаря состоит из следующих этапов.

На первом этапе анализируется толковый словарь, из которого выделяются значения слов с толкованиями – прототипы синсетов. Они включают в себя от одного до шести слов-синонимов, полученных по пометам, характеризующим эквивалентность значений слов в словарных статьях толкового словаря. Для всех лексем статьи определяется полная парадигма, т. е. производится привязка статьи к грамматическому словарю, при этом лексемы различаются не только по частям речи, но и по другим признакам, например одушевленности. Затем статья соотносится с аналогичной статьей словаря синонимов – тезауруса «Руссикон», синсеты дополняются синонимами и формируется дерево гипонимии (родовидовых отношений), соответствующее структуре тезауруса.

На втором этапе статья словаря сопоставляется со статьей из словаря Princeton WordNet. Для реализации такого сопоставления используются оксфордские словари [74].

Последовательное воспроизведение отношений синсетов основано на том, что они определяются деревьями гипонимии и меронимии (отношения «часть–целое») исходного словаря WordNet. При этом осуществляется обход этих деревьев в ширину. Для каждого синсета WordNet предпринимается попытка найти синсет среди множества синсетов-прототипов русского словаря, полученных на первом этапе. Такой поиск предполагает использование не только словника синсетов и частотного словаря, как в других реализациях [82; 86], но и толкового словаря. Однако этого часто оказывается недостаточно, поскольку многие синсеты у корней деревьев состоят всего из одной леммы, имеющей множество лексем, например make. Для синсетов словарей анализируются толкования и примеры употребления: они нормализуются, переводятся и сравниваются. Эта косвенная информация значительно повышает качество автоматически получаемого результата.

Последовательный обход деревьев отношений позволяет воспроизвести их структуру в русскоязычной версии словаря WordNet (где это возможно) и определить отношения тождества (EQ-отношения), необходимые для построения индекса ILI [65; 72].

Рассмотрим структуру статьи словаря. Она разработана с учетом существующих реализаций словаря WordNet и форматов его представления.

В состав статьи словаря включен грамматический анализ (GramTree, GramProp, WordForm), в котором для каждой леммы определена полная парадигма. Также определяются словообразовательные отношения между леммами (WordBuild).

Толкование и примеры употребления лексем (Saying_Idiom) привязаны не только к синсетам, но и к отдельным лексемам. Это связано с тем, что в основе WordNet лежит толковый словарь. В частности, это касается такого отношения, как антонимия, которое реализуется за счет последовательной нумерации всех лексем синсета и включения этих номеров в состав отношения SemLexRel.

Синсеты могут быть привязаны к TopOntology – онтологии, выделенной из проекта EuroWordNet [2], которая позволяет загружать вместо/вме-сте TopOntology и другие классификаторы, например рубрикатор ГАСНТИ и/или иерархию WordNet Domains [33].

Та же структура статьи словаря в нотации UML описана в [33].

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

Тезаурус SDK

 

Тезаурус SDK состоит из двух компонентов [64]:

- утилиты сборки;

- библиотеки времени исполнения.

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

- разбиение строки на слова;

- определение информативности слова. Если слово признается неинформативным («стоп-слово»), то оно не помещается в двоичный файл тезауруса;

- лемматизация слов.

Модуль взаимодействия оперирует со специальными объектами (их иногда называют свертками), реализующими интерфейсы ITb32PortableTerm и ITb32TermLexId. Этот модуль доступен через интерфейс ITb32Tokenizer. Описания интерфейсов приведены в работе [67].

Для сравнения объектных представлений терминов используется метод ITb32PortableTerm::GetTextSignature, который возвращает строку, однозначно идентифицирующую термин. В некоторых версиях тезауруса SDK возвращается текстовое представление термина, в других – преобразованный в строку идентификатор лексемы (например, 0xF4567A). В результате реализация модуля взаимодействия должна гарантировать, что объекты с одинаковыми сигнатурами эквивалентны для внешнего мира (в первую очередь для индексатора).

Рассмотрим функционирование компонентов тезауруса.

Утилита сборки формирует два файла: двоичный файл словаря и текстовый файл координат, предназначенный для обработки индексатором (программа npNdxBuilder), формирующим два файла двоичных индексов тезаурусных статей.

В файл словаря заносится заголовок (структура ThesaurusHeader), содержащий сигнатуру dwThesaurusDictFileSignature, версию формата (1.0), версию словаря (задается в командной строке), текстовое сообщение фиксированной длины (задается в командной строке) и дату формирования файла.

В процессе сборки выполняются следующие операции.

1. Считывается и анализируется очередная статья исходного текстового представления файла тезауруса.

2. Каждое поле статьи разбивается на слова при помощи вызова ITb32Tokenizer::ParseString. На этой же операции определяется информативность слов поля.

3. Для каждого поля тезаурусной статьи выполняются следующие действия:

- если поле содержит символ * или /, то оно удаляется;

- каждое информативное слово посылается в соответствующий объект вызовом ITb32Tokenizer::Tokenize. Неинформативные слова удаляются, а их количество запоминается. Строковое представление слов будет использоваться при формировании словаря и индексного файла, поэтому их необходимо сохранить рядом с указателем на свертки;

- если в словосочетании обнаружились несколько сверток с одинаковыми сигнатурами, то дубли удаляются (например, словосочетание «поиск поиска» должно быть редуцировано до «поиск»);

- количество уникальных информативных слов поля статьи запоминается.

4. Если оказывается, что в статье существуют несколько полей, содержащих одинаковые множества терминов (сравниваются, естественно, сигнатуры объектов), то дубли удаляются. Равными считаются поля, в которых слова с одинаковыми сигнатурами расположены в одинаковых позициях (например, «газетный сверток» и «газетного над свертком»).

5. Запоминается текущая позиция в файле словаря.

6. Формируется двоичный образ статьи в памяти. Образ состоит из заголовка и последовательности полей. Заголовок тезаурусной статьи (структура ThesaurusArticleHeader) содержит размер двоичного образа статьи в байтах, 2 байта кода отношений и количество ее полей. Если в статье используется одно отношение (симметричное), то оба байта кода имеют одинаковое значение. Для каждого поля статьи формируется заголовок (структура ThesaurusArticleField), содержащий тематическую помету поля. В двоичный образ статьи последовательно заносятся заголовки и текст каждого из полей статьи. Тексты представляются в том же виде, в котором они содержатся в исходном словаре. Желательно удалить начальные и конечные пробелы функциями::KillBeginSpace и::KillEndSpace. Строки на конце ограничиваются нулем. Таким образом, после считывания в память всей статьи можно не копировать строки в дополнительные буферы, а пользоваться ими на месте.

7. Статья записывается в файл словаря. Туда же добавляются нулевые байты для выравнивания позиции на величину, кратную dwThesaurus-DictGranularity (типовое значение – 4).

8. Из полученных выше смещения начала статьи в словаре, идентификатора тезауруса и информации о типе отношения формируется индексный номер статьи в виде 32-битного целого без знака. Для того чтобы в процессе работы программы строилась возрастающая последовательность номеров статей, необходимо принять следующий порядок битовых полей: сначала идентификатор тезауруса, затем смещение в двоичном файле и, наконец, тип отношения. В текстовый файл индекса заносится строка #doc 0x%08X\n.

9. Для каждого слова статьи формируется индексная координата, также в виде 32-битного целого без знака. В нее помещается номер поля, количество значимых слов поля и номер слова в поле. Координата заносится в файл индекса в виде строки #pos 0x%08X\n. Если в командной строке задана опция –lex, то вычисляется числовой идентификатор слова (метод ITb32TermLexId::GetInfo) и выводится строка #lex 0x%08X\n. В противном случае появляется строка с текстовым представлением слова (но не сигнатурой!).

Библиотека времени исполнения производит расширение запроса по тезаурусному словарю и выполняет три функции:

- инициализацию. В качестве параметров эта функция получает имена двоичных файлов словаря и индексов и указатель на модуль взаимодействия с внешним миром;

- расширение запроса. Данная функция получает массив указателей на свертки, соответствующих словам запроса, и генерирует массив терминов запроса. Термин представляет собой множество слов, представленных в виде сверток и объединенных операторами И, ИЛИ и др.;

- освобождение ресурсов.

К библиотеке времени исполнения предъявляются следующие требования:

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

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

Рассмотрим принципы организации тезауруса.

Тезаурус разбивается на статьи. Статья состоит из заглавного термина и терминов, связанных некоторыми отношениями с заглавным термином. Обычно в статье содержатся термины, связанные с заглавным термином одним отношением [30; 68]. Таким образом, информация о термине в общем случае может находиться в нескольких тезаурусных статьях. На этапе поиска такая организация увеличивает время выборки данных из тезауруса, но в то же время устраняет дублирование информации и упрощает процедуру ведения тезауруса [36; 85].

Отношения между терминами разбиваются на симметричные и несимметричные.

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

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

Статья с симметричным отношением выглядит следующим образом:

 

партнер #1 * заглавный термин

&1 * словообразовательные аналоги

партнер #1

партнерский #1

партнерство #1

партнерский #1

партнерство #1

 

Здесь #1 – тематическая помета; &1 – номер отношения.

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

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

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

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

Пример статьи с несимметричным отношением:

 

консервы #1

&5 &6 * родовидовое отношение

крабоконсервный #1

крабо-консервный #1

молочноконсервный #1

молочно-консервный #1

мясоконсервный #1

мясо-консервный #1

 

Здесь &5 – родовидовое отношение (консервы – крабоконсервный); &6 – обратное видородовое отношение (крабоконсервный – консервы).

Тезаурус оформляется в виде файла в формате ASCII-DOS и разбивается на статьи. Признаком начала статьи является строка

 

*** Тезаурусная статья ***

 

Такая строка должна располагаться в начале каждой статьи (в частности, она является первой строкой файла тезауруса). За последней статьей тезауруса никаких дополнительных строк нет (последняя строка последней статьи является последней строкой файла тезауруса).

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

Первая строка статьи содержит заглавный термин, после которого идет тематическая помета типа # N, где N – номер тематической пометы.

Далее располагаются группы строк, содержащие один или несколько терминов, связанных с заглавным термином одинаковым отношением (например, все термины группы – синонимы заглавного термина).

Для симметричных отношений первая строка группы имеет вид & N, где N – номер отношения (целое положительное число, не меньше 1), для несимметричных отношений – вид & N 1 & N 2, где N 1 – номер отношения между заглавным термином статьи и термином группы; N 2 – номер отношения между термином группы и заглавным термином статьи.

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

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

Приведем примеры тезаурусных статей:

 

*** Тезаурусная статья ***

партнер #1 * заглавный термин

&2 * синонимы

компаньон #1

бизнес-партнер #1

союзник #1

 

*** Тезаурусная статья ***

партнер #1 * заглавный термин

&9 * квазисинонимы

совладелец #1

сотрудник #1

 

*** Тезаурусная статья ***

партнер #1 * заглавный термин

&10 * ассоциации

единомышленник #1

коллега #1

товарищ по несчастью #1

 

*** Тезаурусная статья ***

Александр #1

&11 * разговорные формы имен

Саша #1

Сашка #1

Санька #1

Санечка #1

Шурок #1

Шурик #1

Информация об отношениях в тезаурусе представляется в виде файла в формате ASCII. Для каждого отношения выделяется отдельная строка.

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

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

 

&1 0.95 * словообразовательные аналоги

&3 0.9 * синонимы

&5 0.95 * родовидовое отношение

&6 0.4 * видородовое отношение

&9 0.7 * квазисинонимы

&10 0.2 * ассоциации

&11 0.9 * разговорные формы имен

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

Тезаурус RCO for Oracle

 

Тезаурус RCO for Oracle – единственный программный продукт, позволяющий значительно расширить возможности информационного поиска Oracle Text при работе c базами данных, содержащими документы на русском языке. Он предназначен для системных интеграторов и разработчиков приложений, использующих возможности информационного поиска, а также для отделов автоматизации производства средних и крупных предприятий.

Этот тезаурус задействует такие технологии, как лексико-грамматичес-кий и статистический анализ текста, алгоритмы автоматической классификации, рубрицирования и реферирования, нечеткого поиска [40; 60; 89].

Oracle Text, являясь компонентом СУБД Oracle Database, представляет собой высокопроизводительную информационно-поисковую систему, обладающую широким спектром возможностей, среди которых можно выделить следующие:

- работу с документами, хранящимися как в СУБД Oracle, так и в файловой системе и Интернете;

- поддержку более 150 различных форматов документов;

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

- мощные лингвистические опции, такие как поиск с учетом словоформ, расширение запросов при помощи тезауруса, тематический анализ, кластерный анализ и т. д.

Это позволяет задавать в запросах одновременно контекстные и реляционные ограничения, а также выполнять администрирование реляционных и полнотекстовых индексов едиными средствами.

Тезаурус RCO for Oracle решает проблему полноценной реализации всех существующих функций Oracle Text для русского языка, а именно:

- поиск документов с учетом всех грамматических форм слов запроса, повышающий полноту и точность выдаваемых результатов;

- поиск слов, близких по написанию (нечеткий поиск);

- расширение запроса синонимами, более общими и более частными понятиями на основе тезауруса общей лексики русского языка;

- поиск документов по ключевым темам, которые автоматически выделяются при индексировании;

- выявление смысловых связей между темами документов, что позволяет расширять или уточнять запрос ассоциативно близкими темами;

- составление общих и тематических рефератов документов;

- автоматическое построение иерархических рубрикаторов и классификация документов по рубрикам;

- наглядное представление результатов поиска;

- поддержка всех кодовых страниц русского языка.

Морфологический анализатор RCO позволяет обрабатывать более 110 тыс. слов, заданных в морфологическом словаре, а также любые неизвестные слова, анализируя их по аналогии с похожими словами. Используемый при этом словарь лингвистических данных для русского языка помимо словооснов включает в себя 6 тыс. окончаний, 1,5 тыс. моделей словоизменения, 200 суффиксов, что соответствует 2,5 млн распознаваемых словоформ.

В состав тезауруса RCO for Oracle вошло около 75 тыс. слов и словосочетаний, объединенных в 22 тыс. гипонимических рядов (22 тыс. ги-перонимов), в том числе 17 тыс. синонимических рядов, охватывающих 45 тыс. слов.

Тезаурус RCO основан на открытых стандартах и спецификациях Oracle. В нем предусмотрена возможность интеграции с существующими приложениями, использующими Oracle Text, что позволяет расширить их функциональные возможности. Это касается не только прикладных решений, но и других продуктов корпорации Oracle:

- Oracle Ultra Search – средства для организации поиска по разнородным информационным ресурсам, бесплатно поставляемого в составе Oracle Database;

- Oracle Internet Application Server – средства для создания интернет- и интранет-приложений, содержащего портлет для поиска по документам и формам портала и использующего Oracle Text;

- Oracle Collaboration Suite – средства для организации коллективной работы, включающего электронную и голосовую почту, средства публикации, календарь и использующего поиск Ultra Search;

- Oracle Content Management SDK (бывшего Internet File System) – средства для управления документами различной природы с возможностью поддержания структуры каталогов, разграничением прав доступа, ведения версий документов, использующего Oracle Text для поиска.

В настоящее время существуют коммерческие версии тезауруса RCO for Oracle для Windows NT/2000 и различных UNIX-платформ (SUN Sparc Solaris, SCO UnixWare, Compaq Tru64 Unix, HP UX, IBM AIX, Linux).

Широкий спектр алгоритмов анализа текста и лингвистического обеспечения, входящего в RCO for Oracle, позволяет получить не только средства поиска документов, но и мощный аналитический инструмент, обладающий следующими функциями:

- маршрутизации и классификации потока документов (например, сообщений новостной ленты, электронной почты);

- представления тематической структуры исследуемого информационного массива;

- представления динамики изменения тематического поля вокруг интересующего предмета/объекта;

- выявления ассоциативных связей между темами/объектами.

Таким образом, тезаурус RCO for Oracle позволяет использовать все преимущества продуктов корпорации Oracle для организации полнотекстового поиска. А учет словоформ русского языка значительно облегчает поиск нужных документов при решении задач из различных предметных областей. Кроме того, RCO for Oracle существенно упрощает задачу поиска в корпоративных архивах.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...