WordSyn 5.0 уже на подходе WordSyn 5: разделение функционала по версиям

WordSyn: работа с n-граммами

Только что закончил кусок кода, который будет получать синонимы для указанной пары слов. Эти синонимы будут формироваться на основе статистических данных о встречаемости слов в русскоязычной литературе. Для примера приведу результат поиска синонимов для двухсловника “толстый живот”. В таблице ниже представлены все пары синонимов для этого двухсловника. В скобках указывается количество раз, сколько данная пара встречалась во время обработки текстов, что можно принимать за вес данной пары синонимов, что, в свою очередь, позволит выбрать наиболее подходящие синонимы. Пары синонимов идут в порядке возрастания весов, так что последние 5 пар можно считать наиболее удачными.

массивное брюхо  (4)
полная утроба  (5)
сытое пузо  (7)
беременный живот  (8)
полный бункер  (9)
полное пузо  (10)
хороший желудок  (13)
толстая мозоль  (16)
жирное пузо  (23)
круглое пузо  (28)
тяжелый живот  (29)
солидный живот  (30)
круглое брюхо  (42)
полный бурдюк  (47)
толстое пузо  (72)
полный живот  (73)
полное брюхо  (81)
жирный живот  (106)
сытое брюхо  (126)
гладкий живот  (146)
жирное брюхо  (155)
толстое брюхо  (297)
круглый живот  (423)
полный желудок  (457)
толстый кишечник  (471)
толстый живот  (538)
сытый желудок  (562)
полная жизнь  (1206)
хорошая жизнь  (2277)

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

массивное брюхо  (4)
полная утроба  (5)
сытое пузо  (7)
беременный живот  (8)
полный бункер  (9)
полное пузо  (10)
хороший желудок  (13)
толстая мозоль  (16)
жирное пузо  (23)
круглое пузо  (28)
тяжелый живот  (29)
солидный живот  (30)
круглое брюхо  (42)
полный бурдюк  (47)
толстое пузо  (72)
полный живот  (73)
полное брюхо  (81)
жирный живот  (106)
сытое брюхо  (126)
гладкий живот  (146)
жирное брюхо  (155)
толстое брюхо  (297)
круглый живот  (423)
полный желудок  (457)
толстый кишечник  (471)
толстый живот  (538)
сытый желудок  (562)

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

сытое пузо  (7)
беременный живот  (8)
полное пузо  (10)
хороший желудок  (13)
жирное пузо  (23)
круглое пузо  (28)
тяжелый живот  (29)
солидный живот  (30)
толстое пузо  (72)
полный живот  (73)
жирный живот  (106)
гладкий живот  (146)
круглый живот  (423)
полный желудок  (457)
толстый кишечник  (471)
толстый живот  (538)
сытый желудок  (562)

Если же сделать предположение, что мы не можем называть целое его частью, и уберем слова “желудок” и “кишечник”, то получится вот что:

сытое пузо  (7)
беременный живот  (8)
полное пузо  (10)
жирное пузо  (23)
круглое пузо  (28)
тяжелый живот  (29)
солидный живот  (30)
толстое пузо  (72)
полный живот  (73)
жирный живот  (106)
гладкий живот  (146)
круглый живот  (423)
толстый живот  (538)

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

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

солидный пласт  (10)
толстый налет  (11)
жирный пласт  (13)
жирный мазок  (27)
густой мазок  (28)
тяжелый пласт  (49)
мощный налет  (51)
толстый покров  (52)
мощный слой  (68)
густой ряд  (79)
плотная корка  (81)
гладкая кора  (99)
толстая кора  (100)
толстый пласт  (106)
густой покров  (122)
мощный пласт  (131)
плотная оболочка  (153)
толстая корка  (206)
густой слой  (849)
плотный слой  (895)
плотный ряд  (933)
толстый слой  (8496)

Как видно из двух приведенных примеров, программа очень хорошо справилась с подбором стопроцентно подходящих пар синонимов.

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

Да, и последнее: проверка с помощью таблицы n-грамм будет присутствовать только в лицензии W3.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Комментарии (6) на запись “WordSyn: работа с n-граммами”

  1. dungan пишет:

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

  2. Мастер пишет:

    Как я уже писал ранее, я написал программу, которая обработала библиотеку, содержащую 74000 книг на русском языке общим объемом 14 гигабайт. Обработка заняла около 2 недель непрерывной работы программы, после чего еще около месяца я занимался упорядочиванием пар синонимов.

  3. verner пишет:

    запомнить все…

    Для примера приведу результат поиска синонимов для двухсловника “толстый[...]…

  4. GTAlex пишет:

    с грамматикой языка синонимайзер работает ?
    падежи, род, число и т.д.

    где если не секрет можно качнуть 74 тыщи книг ?

  5. Мастер пишет:

    Да, работает. Именно для этого и нужен морфологический движок.
    Книги ищите - их в нете полно…

  6. GTAlex пишет:

    видимо секрет …
    ну что ж
    спасибо что не отказал

Оставить комментарий