Keva

Рейтинг
80
Регистрация
27.11.2000
Интересы
Software development, linguistics, BMW, dogs, girls ;-)

Я тут провел некоторое тестирование на досуге. Суть методики такова.

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

Текст был заиндексирован двумя способами - с

точной лемматизацией и с вероятностным стеммингом. При вероятностном

стемминге запоминались все выделенные варианты основы слова. Соответственно,

был построен индекс текста по всем таким, как строгим, так и нестрогим

ключам.

Далее в первом варианте для всех лексем, присутствующих в индексе, были порождены все

графически различные формы, каждая из которых, независимо от того,

встретилась ли она сама в тексте или нет, подвергалась вероятностной

лемматизации, и построенные основы подавались на поиск. Результаты поиска по

всем формам точной лексемы объединялись, после чего результаты

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

по нестрогим основам идентификаторов с списком найденных по идентификатору

лексемы идентификаторов.

Вот результаты тестирования:

289117 objects at all

518875 objects (fuzzy)

289094 objects (correct)

Расшифровываю:

Полнота поиска: 289096 / 289117 = 0.9999 ~= 1.0

Шум: (518875.0 - 289117) / 289117 ~= 0.79

Точность поиска: 289094.0 / 518875 ~= 0.56

Модификация методики заключается в том, что поиск ведется не по всем формам, а по наиболее вероятным, то есть с

порождением формальных основ из наиболее вероятных форм. Тогда результаты - вот такие:

289117.000000 objects at all

405015.178310 objects (fuzzy)

235683.787824 objects (correct)

Полнота поиска: ~= 0.82

Шум: ~=0.40

Точность поиска: ~= 0.58

Вот такие вот есть результаты.

Основа слова (даю НЕ академическое определение) - это та его часть, которая не изменяется при образовании словоформ. Назовем ее истинной основой. В некоторых реализациях морфоанализаторов слово может иметь несколько "основ" - например, морфоанализатор ИПС "Артефакт" (Пархоменко, Травкина, Назарова) у слов типа "ложка" полагает наличие двух основ, "ложк" и "ложек". Другие анализаторы (мой, например) допускают наличие чередований в основе, и основой в данном случае считает "лож".

Пример этот - очень удачный, так как иллюстрирует достоинства и недостатки обоих подходов при реализации нечеткой морфологии (стеммера). В первом случае при реализации поиска с использованием только нечеткой морфологии сильно страдает полнота - потери достигают 40% (в случае русского языка), во втором полнота поиска будет близкой к 100% (скажем, 0.95 - 0.97, потери за счет слов типа "идти-шел"), но вот точность падает, так как растет количество ложных отождествлений. Например, эта самая основа "лож" - ее ж порождает и слово "ложь".


А \свежесобра\ - явная ошибка. Какое слово можно сделать из этой основы?

Да, в случае этого, осмысленного (!) слова это действительно ошибка. Однако если взять какое-либо другое слово с тем же "хвостом", например, "забранный", то из фрагмента "забра" вполне можно породить некоторое количество совершенно корректных форм.


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

Да, это было бы хорошо. Если Вам, конечно, это интересно

Основа слова (даю НЕ академическое определение) - это та его часть, которая не изменяется при образовании словоформ. Назовем ее истинной основой. В некоторых реализациях морфоанализаторов слово может иметь несколько "основ" - например, морфоанализатор ИПС "Артефакт" (Пархоменко, Травкина, Назарова) у слов типа "ложка" полагает наличие двух основ, "ложк" и "ложек". Другие анализаторы (мой, например) допускают наличие чередований в основе, и основой в данном случае считает "лож".

Пример этот - очень удачный, так как иллюстрирует достоинства и недостатки обоих подходов при реализации нечеткой морфологии (стеммера). В первом случае при реализации поиска с использованием только нечеткой морфологии сильно страдает полнота - потери достигают 40% (в случае русского языка), во втором полнота поиска будет близкой к 100% (скажем, 0.95 - 0.97, потери за счет слов типа "идти-шел"), но вот точность падает, так как растет количество ложных отождествлений. Например, эта самая основа "лож" - ее ж порождает и слово "ложь".


А \свежесобра\ - явная ошибка. Какое слово можно сделать из этой основы?

Да, в случае этого, осмысленного (!) слова это действительно ошибка. Однако если взять какое-либо другое слово с тем же "хвостом", например, "забранный", то из фрагмента "забра" вполне можно породить некоторое количество совершенно корректных форм.


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

Да, это было бы хорошо. Если Вам, конечно, это интересно

Смысл использовать, безусловно, есть. Она может использоваться как дополнение к словарному анализатору, но может и самостоятельно.

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

Тестировать, естественно, на как можно большем массиве слов.

С уважением, Keva.

Смысл использовать, безусловно, есть. Она может использоваться как дополнение к словарному анализатору, но может и самостоятельно.

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

Тестировать, естественно, на как можно большем массиве слов.

С уважением, Keva.

Originally posted by sergeev:
... не думаю что господа из Яндекса или Рамблера - будут настолько сильно стараться, чтобы именно Авантикс ... убрать из поисковиков своих.

Да, вы правы, сезон охоты на Авантикс никто открывать не будет. Но только, например, если он будет находиться по запросу, скажем, "детское порно" (извините, не хотел обидеть, но много спамеров таких), занимаясь авиабилетами, то вполне может попасть под частую гребенку.

Originally posted by euhenio:
А что значит нечеткая?

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


Есть ли возможность получить из исходного слова словоформу в заданном падеже, лице, числе, ...и тд? И обратно?

Нет, это делает как раз словарная морфология (cм. подробнее на http://linguist.nm.ru/) А нечеткая обычно используется для тех слов, которые не распознаны словарным анализатором, либо в тех случаях, когда применения нечеткой морфологии достаточно. Фактически, это стеммер с большим словарем.

Originally posted by euhenio:
А что значит нечеткая?

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


Есть ли возможность получить из исходного слова словоформу в заданном падеже, лице, числе, ...и тд? И обратно?

Нет, это делает как раз словарная морфология (cм. подробнее на http://linguist.nm.ru/) А нечеткая обычно используется для тех слов, которые не распознаны словарным анализатором, либо в тех случаях, когда применения нечеткой морфологии достаточно. Фактически, это стеммер с большим словарем.

Если сайт - действительно об упаковке, то не думаю, что забанит.

А насчет ЕЯ - так тут в принципе все плохо :-) Есть в настоящий момент только одна искалка, которая действительно неплохо обрабатывает запросы на естественном языке - это в свое время разработанный в МедиаЛингве "Следопыт" или, как мы его называли тогда, "Следопут" Скорее всего, trial version и сейчас можно взять на сайте МЛ.

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

Очевидно, что ни одна из больших поисковых машин не может себе такого позволить - просто железа не хватит. Увы

А простое игнорирование так называемых "стоп-слов" никоим образом не приближает нас к истинно нечеткому поиску.

Наверное, самым лучшим приближением из относительно простых является построение запроса из всех поданных слов, объединяемого оператором "ИЛИ", с "правильным" ранжированием.

Всего: 238