• Главная
  • Об авторе
Blue Orange Green Pink Purple

Простой синонимайзер на PHP

Рубрики: Без рубрики. Опубликовано 03.06.2009 Теги: PHP, синонимайзер, синонимизация
Июн 03

Потребовалось мне написать простой синонимайзер на PHP для неспешной обработки нескольких статей. На просторах Интернета нашел дампы MySQL-баз по синонимам и за десять минут сделал небольшой скриптик для синонимизиации текстов.

Баз две – одна со словами (в том числе слодержит корни слов, окончания, типы и другие подробности), другая список синонимов с сопоставлением ID из первой базы. Вникать в словообразование и синонимизировать слова с подстановкой правильных окончаний я не стал – не было времени. Поэтому сделал простейший скрипт, которы заменяет только слова, которые есть в базе. Схожесть текста, по моим подсчетам, варьируется от 40 до 60%, что для меня вполне достаточно. Читаются тексты после синомизации иногда проблемно, но и это для меня не критично.

Скачать базы можно по ссылкам: база слов, база синонимов (естественно, бесплатно :) ).

Скрипт:

 '.$r.'';
if (preg_match('|[А-Я]|',$word[0])!=false) $r=ucfirst($r);
return $r;
}
?>

Я думаю разберетесь в скрипте) Если будут вопросы – прошу в комменты.

Простой синонимайзер на PHP | Манускрипты IT-шника

Похожие посты:

  • PHP: Слияние массивов со сложением значений с одним ключем.
  • Определение страны и города по IP средствами PHP.

Поделись ссылкой:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

22 комментариев

  1. Дмитрий 12.06.2009

    Да прикольная штука просто до безобразия всего лиш такой кусочек кода и все работает но медленно, копаясь в сети буквально на днях днях наткнулся на скрипт синонимайзера который написан на php, не использует базы данных, база синонимов находится в php файле и доступна для редактировании. При обработке теста скрипту не важно написано слово с большой буквы или с маленькой, стоит ли после или перед словом знак препинания. В скрипте предусмотрена функция добавления в базу слов и словосочетаний неограниченной длинны даже со знаками препинания. Вся база синонимов скрипта уникальна и собранна в ручную с учетом морфологии, в ней находится более 91 000 слов и словосочетаний, благодаря этому на выходе получатся на 80% – 90% читаемый текст без искажения смысла. Уникальной особенностью данного скрипта является то, что при размере базы почти в 100 000 слов и соответственно столько же синонимов к ним, скрипт обрабатывает текст за доли секунд, благодаря чему данный скрипт можно использовать как функцию и получать на выходе уже синонимизированный текст. Пример работы скрипта: www.*.ru/sinonim/
    Правда за этот скрипт просят денег, немогу определиться купить или нет что скажите?

  2. Magir 13.06.2009

    Дмитрий, покупать такой скрипт нет никакого толка. Мой скрипт маленькие/большие буквы нормально обрабатывает, запятые и прочее тоже не влияют – выборка идет только по словам.

  3. Андрей 21.06.2009

    Я не очень разбираюсь в программировании, но потребовалось сделать такую штуку…
    объясните, как именно работать с вашим синонимайзером, я не вижу даже вызова функции synzer в коде…
    и что означает строчка $output=preg_replace_callback(‘|([а-я\-А-Я]*)|’,’synzer’,$input);

  4. Андрей 21.06.2009

    во, вроде понял немного, но почему-то синонимайзер в ответ на любую строку возвращает первую букву от строки о_О, в чем дело

  5. Magir 22.06.2009

    synzer вызывается в строчке $output=preg_replace_callback(‘|([а-я\-А-Я]*)|’,’synzer’,$input); – эта конструкция вызывает функцию synzer для всех слов, состоящих из русских букв.
    Выложите, пожалуйста, Ваш код – постараюсь разобраться.

  6. Андрей 22.06.2009

    Спасибо, но я уже сам разобрался.
    Есть другая проблема: как закинуть эти 2 базы синонимов в саму БД, пробовал через Navicat, ждал минут 20 пока добавлялось, но в конце писало какую-то ошибку. Чем посоветуете добавить эти базы?

  7. Magir 22.06.2009

    У меня через PHPMyAdmin без проблем импортировались.

  8. Slavik 23.06.2009

    Чего то так и не понял как посмотреть скрипт, мне отображаются только 5 строчек.

  9. Slavik 25.06.2009

    В IE всё нормально отображается, а вот в FF код лишь на 5 строчек.

  10. Андрей 25.06.2009

    А можно поинтересоваться в какой кодировке эти 2 базки синонимов, импортирую через phpmyadmin и вылетают ошибки типа:

    – ����: localhost
    – ����� ��������: ��� 29 2007 �., 13:40
    – ������ �������: 4.1.16
    – ������ PHP: 4.4.4
    –
    – ��: `slowar`
    –
    видать с кодировкой чтот не то…

  11. Вячеслав 25.06.2009

    Объясните пожалуйста за что отвечает каждое поле базы данных.

  12. Magir 25.06.2009

    В Опере работает) Глючный плагин, заменю потом. Спасибо.

  13. Magir 25.06.2009

    cp1251
    Добавьте в начало дампа строчку:
    SET NAMES `cp1251`;
    и запустите еще раз, у вас взаимодействие с базой в UTF-8, видимо.

  14. Magir 25.06.2009

    Я подробно в ней не разбирался) В первой базе – слова, их тип, окончания и прочее – в моём случае всё это не используется. Во второй – сопоставление слов между собой.

  15. Вячеслав 25.06.2009

    Понятно, жаль. Я просто пытался разобраться, да немного не понял назначение некоторых столбцов в таблице со словами, поэтому решил обратится. Если не секрет, а базу где брали (от какой программы)?

  16. Вячеслав 29.06.2009

    Описание полей базы синонимов.
    row_id – Номер строки.
    fwid – Фактический номер слова.
    fword – Самое слово.
    fbsw – Словарная база.
    fsuff – Суффикс слова.
    fokon – Окончание слова.
    fpart – Цифровое обозначение части речи.
    fsyn – «1″ – есть синоним к слову, «0″ – нет синонима.
    fnmpart – Часть речи.
    ftyp – Классификация слова по таблице affix.
    fqsyn – Количество синонимов к исходному слову.
    synonims – Сами синонимы, перечисленные через |.

  17. madness_lvov 07.07.2009

    Импортировать базы можно Sypex Dumper-ом
    http://sypex.net/

  18. sergey 04.08.2009

    спасибо! меня скрипт вполне устроил!

  19. Chubaka 14.10.2009

    Прикольно но четабельность страдает

  20. Давид 09.11.2009

    Народ, чо-то я совсем не въезжаю куда в phpMyAdmin нужно закачивать эти базы? И ещё два вопроса: создал я граббер на php, вроде грабит нормально, но как его с синонимайзером увязать, чтобы output был уже отсинонимайзеренный? И впрос, два – там разве в начале кода не нужно ничего прописывать <php и т.д.?

    Уж простите за возможно детские вопросы, но вот приходится по букварю ещё с php общаться…

  21. Виктор 12.11.2009

    А где же скрипт?

  22. so 15.03.2010

    в базе синонимов 3 поля бесполезных, а главного – синонимов, нет. корявый дамп или специально?



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

Манускрипты IT-шника

  • Страницы
    • Об авторе
  • Метки
    НДВ ОК 012-93 ЕСКД РД НДВ СЕО монетизация ФИКС ЭДО парсер блог браузеры заработок в Интернете синонимизация синонимайзер хостинг Acronis C++ Cisco CodeHealer CodeVisual2Flowchart CSA DebugView Delphi GeoIP google translate IBM interzet ISS Mantis microsoft OutputDebugString PHP Proventia SEO SiteProtector SOCK VWWare ESX XPU
  • Комментарии
    • so к записи Простой синонимайзер на PHP
    • Magir к записи Парсер MirSovetov.ru
    • Андрей к записи Парсер MirSovetov.ru
    • Magir к записи Проверки проводимые по РД НДВ и их автоматизация.
    • Денис к записи Проверки проводимые по РД НДВ и их автоматизация.
  • Мета
    • Регистрация
    • Войти
    • RSS записей
  • Подписка по e-mail:





© 2009-2010 Magir Вверх