Склонение имен существительных и прилагательных готово!

Итак, всего несколько часов мне понадобилось для того, чтобы сделать склонение имен существительных и имен прилагательных в нужные падежи и числа (а в случае с прилагательными - еще и в нужный род). К сожалению, моя база синонимов почему-то не содержит глаголов, что, в общем-то, весьма и весьма удивительно.
Continue reading »

Первый скриншот синонимайзера

Я не хотел публиковать никакие скриншоты до тех пор, пока не будет показать хоть что-то более-менее серьезное и работоспособное. Но сегодня я закончил очередной кусок, который не грех и показать. Итак, увидеть его вы можете здесь.
Continue reading »

Первые результаты работы синонимайзера

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

Я взял обычный художественный текст с сервера Проза.ру и обработал его своим синонимайзером. И вот какая статистика:

Continue reading »

Cмена движка базы данных

После некоторых размышлений я пришел к выводу сменить движок базы данных. Мой выбор пал на SqLite - систему встроенных кроссплатформенных баз данных. Для своей работы она требует только одну и провайдер для .NET приложений.
Continue reading »

Пишу враппер для DLL-ки

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

Как отображать результаты синонимизации

Одной из задач синонимайзера в ручном режиме является отображение результатов синонимизации. При этом должны выполняться следующие требования:

  • измененное слово должно выделяться (цветом и/или жирным шрифтом)
  • должна быть возможность изменять замененное слово на другое из списка доступных синонимов

Continue reading »

И снова морфология

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

Решение первое: программа написана на прологе, скомпилирована в и даже имеет файл хендлера для С++. У программы есть большой словарь, что является плюсом. Правда, не совсем понятно, как она работает. Но то, что она работает хорошо, видно по журналу отчета - сложносочиненные предложения она щелкает “на раз”, выделяя основные и вспомогательные члены предложения и указывая связи между ними. Например фраза “Российская Федерация обеспечивает целостность и неприкосновенность своей территории” разбирается в вот такую структуру:

+– # [существительные, объединеные союзом,им.пад.]
+– # [первая часть союза,третье лицо,ж.род,ед.число,им.пад.]
+– и [союз и,третье лицо,ж.род,ед.число,им.пад.]
¦ +– федерация [существительное,третье лицо,ж.род,ед.число,им.пад.]
¦ +– российская [прилагательное,третье лицо,ж.род,ед.число,им.пад.]
¦ +– обеспечивает [глагол,третье лицо,ж.род,ед.число,Н вр.,невозв.]
¦ +– целостность [существительное,третье лицо,ж.род,ед.число,вин.пад.]
+– неприкосновенность [существительное,третье лицо,ж.род,ед.число,им.пад.]
+– территории [существительное,третье лицо,ж.род,ед.число,род.пад.]
+– своей [местоименное прилагательное,третье лицо,ж.род,ед.число,род.пад.]

Что с этим можно сделать я пока еще не знаю, но в целом программа очень хороша! Кроме того, у меня возникли трудности с подключением этой к своему коду.
Continue reading »

Как работает синонимайзер

Принцип работы синонимайзера предельно прост и может быть выражен с помощью простого алгоритма.

  1. Загружаем исходный текст.
  2. Разбиваем его на слова
  3. Для каждого слова ищем его нормальную форму - для существительных - форму именительного падежа единственного числа, для прилагательных - форму именительного падежа единственного числа мужского рода
  4. Для каждой из нормальных форм ищем синонимы. Для существительных синонимы должны быть того же рода, что и само слово. Кроме того, синонимы должны быть из того же тематического словаря, что и исходное слово. Таким образом синонимы вроде “среда”-”окружение” будут доступны только для текстов по программированию, но не для общеупотребительной тематики, где для слова “среда” более подходящим синонимом будет сочетание “день недели” (хоть оно и мужского рода)
  5. В результирующем тексте используется один из синонимов, выбранный случайным образом, а в статье для размножения все синонимы должны быть перечислены в виде {syn1|syn2|syn3}.
  6. При необходимости для каждого из синонимов пользователь может выбрать альтернативу (при наличии более одного синонима для измененного слова).

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

Разбираем морфологию

Одной из важнейших задач, которые стоят перед лингвистическими автоматами, является морфологический анализ слов. Если заглянуть в Википедию, то можно обнаружить, что морфология - это раздел лингвистики, основным объектом которого являются слова естественных языков и их значимые части (морфемы). В задачи морфологии входит определение слова как особого языкового объекта и описание его внутренней структуры.
Continue reading »

Словарная база синонимайзера

С легкой руки Dizels - моего постоянного читателя и комментатора (надеюсь, в дальнейшем он станет еще и критиком, а, может, еще и партнером) - решил переименовать Синонимизатор в Синонимайзер. Название приобрело если не зловещий, то по крайней мере хищный (устрашающий?) вид. Впрочем, надеюсь, что это не отпугнет моих потенциальных клиентов.
Continue reading »