Rambler's Top100 изменено 22.03.2004
Здесь отражено развитие програмной реализации Системы осмысленного поиска.

Термины.
ЕЯ текст – текст на естественном языке.
Суть слова – простая форма слова, имеющая некоторый набор свойств, описывающих это слово.
Семантическая сеть – набор связей между сутями.
Связывание слова – подчинение данного слова связью к семантической сети.
Качество связывания слов – отношение числа связанных слов к общему числу слов предложения или текста.
Понимание текста - связывание слов.
Анализатор текста – программа, которая из ЕЯ текста создает семантические сети.
Смыслосеть – семантическая сеть.
База знаний – хранилище семантических сетей.

1997г:

Начато написание программы. Язык программирования выбран Visual Prolog.

2000г:

  1. Создана первая версия анализатора русского текста. Скорость работы: порядка нескольких секунд на предложение. Алгоритм – простой перебор всех возможных вариантов связывания слов. Качество связывания около 60%. Процент ошибок ниже 10% от числа созданных связей. Связывала в том числе и местоимения внутри и между предложениями. Недостатки:
  1. создан поисковый движок, который может искать среди семантических сетей заданную семантическую сеть.
  2. создан внутренний упрощенный язык для работы с базой знаний. Этот язык является независимым от конкретного человеческого языка.
  3. создано ядро обработки упрощенного языка, выполняющее команду поиска в базе знаний запросов на упрощенном языке минуя анализатор ЕЯ. Так что можно заниматься разработкой поискового движка вне зависимости от качества анализатора ЕЯ текстов. В принципе это ядро вмонтировано в поисковый движок.

2001г:

  1. Создан более быстрый анализатор. Скорость связывания 10слов в секунду даже для длинных предложений из 10-12слов. Качество связывания 50%. Недостатки: при невозможности полного связывания всех слов в предложении перебор вариантов начинал длиться секунды и более.
  2. Создан поисковый движок, который может выполнять в том числе и команды, управляющие базой знаний: удалить, добавить смыслосеть или часть её.

2002г:

  1. Создан анализатор более быстрый (20-30сл/с). Недостатки те же. Качество связывания 55%. Процент ошибок ниже 5% от числа созданных связей (сказывается накопление опыта по русскому языку).
  2. Поисковый движок теперь может обрабатывать команды с участием переменных. Пример: делаем запрос с найти “_Х продаёт масло”, после выполнения запроса переменная _Х имеет значения со ссылками на разные смыслосети, которые были найдены. Теперь запрос “участник автомобильной выставки _Х” – будут найдены смыслосети, где участвуют значения из переменной _Х.
  3. Поисковый движок может обрабатывать логику НЕ, ИЛИ, И.
  4. Поисковый движок может обрабатывать функции.
  5. Создан механизм, позволяющий использовать правила-знания при поиске смыслосети. Ввод правил-знаний реализован пока только на внутреннем упрощенном языке. Введенные правила-знания позволяют эмулировать процесс мышления. Недостатки – не реализована возможность самостоятельного обучения Системы, каждое правило-знание нужно вводить вручную. Так же пока представляет сложность обучить Систему путем ввода ЕЯ текстов из толковых словарей или энциклопедий. Пример правила-знания: “тигр это хищник”, “хищник охотится на животных”. Если теперь дать Системе запрос “тигр охотится на животных” Система ответит “ДА” и выдаст найденные смыслосети.

2003г:

  1. создан анализатор текста, который освободился от главного недостатка предыдущих анализаторов: теперь не обязательно все слова в предложении должны быть связаны и описаны. То есть скорость разбора слабо зависит от числа возможных связей в предложении. Резко увеличилась скорость связывания – от 1000слов в секунду до 3000слов/сек. Недостатки: качество связывания упало до 45%. Формула расчета: (ЧислоСвязанных + ЧилоНеизвестных)/СловВсего. Процент ошибок вырос примерно до 15% от числа созданных связей. Этот движок был написан под задачу поисковой машины в интернете, где основным условием было увеличение скорости разбора. Но по моим оценкам качество связывания этого анализатора можно поднять и до 60% без особых затрат. Чем я руководствуюсь говоря так:
    1. в текущей версии быстрого анализатора нет обработки связей деепричастий (они могут обрабатываются по типу как и причастия, которые у меня в основном реализованы, так что это не составит труда реализовать), нет обработки местоимений внутри предложения (так как местоимения были у меня реализованы в предыдущих версиях, то они легко реализуемы по прототипу и я их пока не делал, а это еще 100% от их числа), нет подчинения 80% предлогов (сейчас частично предлоги связываются с причастиями и глаголами).
    2. Я беру любой текст и пропускаю через анализатор, получаю статистику по предлогам, деепричастиям (местоимения пока опускаю). Делаю пересчет для будущей версии анализатора, в котором это все будет реализовано по формуле: ЧислоСвязанныхБудет = ЧислоСвязанных_Сейсас + 0.8*Число_Предлогов + 0,2*Число_Деепричастий + ЧислоСловНеизвестных. Тут нужно заметить, что неизвестное слово на самом деле иногда рвет две связи, а значит на каждое неизвестное слово теряется примерно 1.5 связей. Полученное число делю на ВсегоСловТекста и получаю процент связывания до 70%. Это очень даже не плохо для интернет-поисковой машины.
    3. Нужно еще учесть что числа в ЕЯ тексте считаются как СловВсего, но не обрабатываются анализатором.

2004г:
март
Блин, мой морфологический модуль, вернее не модуль а база данных, так мала и крива…, что она не знает почти все причастия, а те что знает на самом деле причисляет к прилагательным :) . Я не говорю уже про инфо по словообразованию, которой вообще нет. Понятно что синтактический анализатор ЕЯ текста не может разобрать входной текст корректно. Я думаю из 20% ошибок анализатора 10% происходят из-за морфологии и к тому же как минимум 5% от общего числа слов недосвязывается тоже из-за морфологии.
Сейчас синтактический анализатор имеет такую статистику:
Файл УК РФ (размер .ТХТ 341кБ
),

связей создано

прелож.всего

всего слов

Слов неизвестных

несвязанных

из них предлогов

из них дееприч

из них наречия

из них предикат

несвязы-ваемых

списков

% по связ

% по несв

слов в сек

22649

3692

44960

5102

21535

4610

6

208

114

1574

1009

81%

77.5%

1194

Пояснения. “Связей создано” – количество слов, которые удалось во внутренний смысл связать.
“Предложений всего” – сколько предложений в тексте. “Слов всего” – число слов без знаков препинания. “Слов неизвестных” – слова, которые неизвестны морфологическому модулю, соответственно они не могут участвовать в семантических связях и вдобавок вносят ошибки при разборе. “Слов несвязанных” – слова, которые анализатор не смог связать в семантическую сеть. “Из них …” - сколько из несвязанных слов по данной части речи
. “Из них несвязываемых” – слова, которые не имеют смысла (например: “однако”, “конечно”, …). “Списков” – сколько обнаружено и создано списков И/ИЛИ. “По связано” – процент связываемости, вычисленный по формуле на основе Слов_Связано:
% = (Слов_связано + Предлогов + Предикативов + Предложений)/(Слов_Всего – Несвязываемых – Неизвестных)
Тут нужно заметить, что Предлоги и Предикативы я учитываю как будто они связаны, так как на поисковый смысл они особо не влияют. Количество предложений учтено для соответствия 100%-м связывания при связывании всех слов.
“% по несвязанным” – процент связываемости, вычисленный на основе числа несвязанных слов по формуле:
% = 1 – (Слов_Несвязано – СловНеизвестно – Предлоги – Предикативы – Несвязываемые)/Слов_всего
Дело в том, что часть связей устанавливается ошибочно, поэтому, как видно, существует разница между процентами ПоСвязано и ПоНесвязано, которая отражает ошибочность. На самом деле процент ошибок связывания я оцениваю как 25% от числа установленных связей. И как ранее я писал, 10% из них из-за кривой морфологии.
Я считаю, что процент связываемости получается достаточный (при условии использования нормального модуля морфологии, который есть у любой поисковой машины) для того чтобы можно было делать коммерческий вариант поиска текстовой информации.
В связи с этим Я думаю так: что если найти на дальнейшую разработку команду в 5толковых программистов и бюджет тысяч 100уе, то за год можно коммерческий поисковик сделать.

Автор: Ермолаев Дмитрий Сергеевич

назад в раздел

на главную страницу

Rambler's Top100