Я уже закончил основной модуль синомайзера - универсальный парсер языка на 90%. Это интерпретатор скриптового языка, в котором реализован для поиска групп слов по свойствам (типа род, число, падеж), тексту, базовой форме и прочему… Найденные слова можно изменять по роду, падежу и пр., устанавливать семантические связи между ними, убирать оменемию и прочее. А главное преобразовывать текст по специальный правилам (продвинутая синомизация).
Синтаксис такой:W1[условия поиска] ** ... W9[условия поиска] => W1[операции] ...W9[операции]
Условия поиска
Например,W1[род==мр, число==ед, часть_речи==сущ, падеж!=им]
Значит существительное мужского рода, единственного числа, падежа не равного именительному. Всего есть 25 морфологических граммем слова типа части речи числа или падежа.
Можно написать более коротко:[мр, ед,сущ, падеж!=им]
если возможность задание вариантов “ИЛИ”[род==мр|жр, часть_речи==сущ|прил, падеж!=им|вн]
Прилагательное или существительное мужского или женского рода, не в именительном или винительном падеже. Кроме или есть операция “И”, но она используется в основном при решении омонимии.[род==мр&жр, часть_речи==сущ]
Существительное с омонимией по роду (мужской или женский).
также можно написатьW2[род==w1, часть_речи==глаг]
Глагол с родом таким-же как и у первого слова.
Есть возможность сравнения текста и словоW1[текст=="который"]W2[слово=="который"]
Первая операция даст положительный результат только при точном соответствии. Вторая операция даст истину в любых словоформах : который, которого, которому, которых и так далее.
Есть еще много параметров, которые “видит” парсер. Всего около 50.
Расстояния
Настройки расстояния поиска задаются межу звездочками. Например,W1[...] *7* W2[...]
искать второе слово справа от первого на расстоянии не более семи.W1[...] *7 <-7* W2[...]
искать второе слово справа от первого и слева от первого на расстоянии не более семи.W1[...] *.* W2[...]
Игнорировать символы конца предложения.
Операции
Можно изменить любую морфологическую граммему
W2[род=жр] приводит род к женскому. W2[род=w1] приводит род к роду w1.
род-=жр убирает все вариации оменемии имеющии жр.
изм_текст+=прибавляет к тексту. Операторы и все параметры, я опишу позже. Просто введение. Это просто введение.
При соблюдении всех условий, программа проверяет допустимость и однозначность всех операций. Если одна из операций недопустима или неоднозначна, то операции не проводятся. Например, если морфологическая неоднозначность переходит в текстовую.
Например, у нас есть слово “города” и мы не решили морфологическую неоднозначность ед рд (стены города) ИЛИ мн им (древние города). И парсер проводит операцию [число=ед], то неоднозначность перетекает в текстовую ед рд (города) ИЛИ им ед (город).
Что это дает для синомайзинга?
Например,
W1[слово==”самый”] *1* W2[чр==прил,превосх==нет,род=w1,падеж=w1,число=w1]=>W1[тип=пуст] W2[превосх=да]
находим словосочетания типа “самый лучший” и преобразуем в наилучший. “самый большой” в наибольший
Если превосходной формы нет, то преобразование не происходит.
Симпсоны тут; трактор колесный купить ; зил 5301 бычок электрооборудование