Потребовалось мне написать простой синонимайзер на PHP для неспешной обработки нескольких статей. На просторах Интернета нашел дампы MySQL-баз по синонимам и за десять минут сделал небольшой скриптик для синонимизиации текстов.
Баз две – одна со словами (в том числе слодержит корни слов, окончания, типы и другие подробности), другая список синонимов с сопоставлением ID из первой базы. Вникать в словообразование и синонимизировать слова с подстановкой правильных окончаний я не стал – не было времени. Поэтому сделал простейший скрипт, которы заменяет только слова, которые есть в базе. Схожесть текста, по моим подсчетам, варьируется от 40 до 60%, что для меня вполне достаточно. Читаются тексты после синомизации иногда проблемно, но и это для меня не критично.
Скачать базы можно по ссылкам: база слов, база синонимов (естественно, бесплатно
).
Скрипт:
'.$r.'';
if (preg_match('|[А-Я]|',$word[0])!=false) $r=ucfirst($r);
return $r;
}
?>
Я думаю разберетесь в скрипте) Если будут вопросы – прошу в комменты.
Простой синонимайзер на PHP | Манускрипты IT-шника

Да прикольная штука просто до безобразия всего лиш такой кусочек кода и все работает но медленно, копаясь в сети буквально на днях днях наткнулся на скрипт синонимайзера который написан на php, не использует базы данных, база синонимов находится в php файле и доступна для редактировании. При обработке теста скрипту не важно написано слово с большой буквы или с маленькой, стоит ли после или перед словом знак препинания. В скрипте предусмотрена функция добавления в базу слов и словосочетаний неограниченной длинны даже со знаками препинания. Вся база синонимов скрипта уникальна и собранна в ручную с учетом морфологии, в ней находится более 91 000 слов и словосочетаний, благодаря этому на выходе получатся на 80% – 90% читаемый текст без искажения смысла. Уникальной особенностью данного скрипта является то, что при размере базы почти в 100 000 слов и соответственно столько же синонимов к ним, скрипт обрабатывает текст за доли секунд, благодаря чему данный скрипт можно использовать как функцию и получать на выходе уже синонимизированный текст. Пример работы скрипта: www.*.ru/sinonim/
Правда за этот скрипт просят денег, немогу определиться купить или нет что скажите?
Дмитрий, покупать такой скрипт нет никакого толка. Мой скрипт маленькие/большие буквы нормально обрабатывает, запятые и прочее тоже не влияют – выборка идет только по словам.
Я не очень разбираюсь в программировании, но потребовалось сделать такую штуку…
объясните, как именно работать с вашим синонимайзером, я не вижу даже вызова функции synzer в коде…
и что означает строчка $output=preg_replace_callback(‘|([а-я\-А-Я]*)|’,’synzer’,$input);
во, вроде понял немного, но почему-то синонимайзер в ответ на любую строку возвращает первую букву от строки о_О, в чем дело
synzer вызывается в строчке $output=preg_replace_callback(‘|([а-я\-А-Я]*)|’,’synzer’,$input); – эта конструкция вызывает функцию synzer для всех слов, состоящих из русских букв.
Выложите, пожалуйста, Ваш код – постараюсь разобраться.
Спасибо, но я уже сам разобрался.
Есть другая проблема: как закинуть эти 2 базы синонимов в саму БД, пробовал через Navicat, ждал минут 20 пока добавлялось, но в конце писало какую-то ошибку. Чем посоветуете добавить эти базы?
У меня через PHPMyAdmin без проблем импортировались.
Чего то так и не понял как посмотреть скрипт, мне отображаются только 5 строчек.
В IE всё нормально отображается, а вот в FF код лишь на 5 строчек.
А можно поинтересоваться в какой кодировке эти 2 базки синонимов, импортирую через phpmyadmin и вылетают ошибки типа:
– ����: localhost
– ����� ��������: ��� 29 2007 �., 13:40
– ������ �������: 4.1.16
– ������ PHP: 4.4.4
–
– ��: `slowar`
–
видать с кодировкой чтот не то…
Объясните пожалуйста за что отвечает каждое поле базы данных.
В Опере работает) Глючный плагин, заменю потом. Спасибо.
cp1251
Добавьте в начало дампа строчку:
SET NAMES `cp1251`;
и запустите еще раз, у вас взаимодействие с базой в UTF-8, видимо.
Я подробно в ней не разбирался) В первой базе – слова, их тип, окончания и прочее – в моём случае всё это не используется. Во второй – сопоставление слов между собой.
Понятно, жаль. Я просто пытался разобраться, да немного не понял назначение некоторых столбцов в таблице со словами, поэтому решил обратится. Если не секрет, а базу где брали (от какой программы)?
Описание полей базы синонимов.
row_id – Номер строки.
fwid – Фактический номер слова.
fword – Самое слово.
fbsw – Словарная база.
fsuff – Суффикс слова.
fokon – Окончание слова.
fpart – Цифровое обозначение части речи.
fsyn – «1″ – есть синоним к слову, «0″ – нет синонима.
fnmpart – Часть речи.
ftyp – Классификация слова по таблице affix.
fqsyn – Количество синонимов к исходному слову.
synonims – Сами синонимы, перечисленные через |.
Импортировать базы можно Sypex Dumper-ом
http://sypex.net/
спасибо! меня скрипт вполне устроил!
Прикольно но четабельность страдает
Народ, чо-то я совсем не въезжаю куда в phpMyAdmin нужно закачивать эти базы? И ещё два вопроса: создал я граббер на php, вроде грабит нормально, но как его с синонимайзером увязать, чтобы output был уже отсинонимайзеренный? И впрос, два – там разве в начале кода не нужно ничего прописывать <php и т.д.?
Уж простите за возможно детские вопросы, но вот приходится по букварю ещё с php общаться…
А где же скрипт?
в базе синонимов 3 поля бесполезных, а главного – синонимов, нет. корявый дамп или специально?