Синонимайзер

Тема в разделе "Как сделать...", создана пользователем Nezzar, 5 фев 2009.

Статус темы:
Закрыта.
  1. Nezzar

    Nezzar

    Регистр.:
    29 дек 2006
    Сообщения:
    338
    Симпатии:
    71
    Всем привет.
    Собственно изучаю PHP потихоньку, решил написать небольшой синонимайзер.

    Собственно что делает: из файла такого вида
    HTML:
    
    слово|его синоним
    слово|может состоять из нескольких слов
    
    далее подключается к MySQL, берет таблицу и запись, и синонимизирует ее.

    По первой операции вопросов нет, уже написал, вроде и работает)
    Как лучше и экономичнее сделать поиск слова и его замену в записе??

    Просьба к алгоритму указывать и применяемые в нем функции, если можно.

    Всем заранее спасибо.


    PS: если есть герои, которые готовы взглянуть на имеющийся у меня говнокод(полный скрипт, я заново переписываю), могу выслать. Но он не работает =(
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    вроде это делается довольно просто
    Единственное- файл с синонимами очень большой? И
    HTML:
     
    слово|его синоним
    слово|может состоять из нескольких слов
    
    У одного слова 1 синоним?
     
  3. El_Magnifico

    El_Magnifico Команданте

    Регистр.:
    1 сен 2006
    Сообщения:
    650
    Симпатии:
    484
    кидай сюда под хайд - поправим
     
  4. skabbit

    skabbit Постоялец

    Регистр.:
    6 дек 2007
    Сообщения:
    88
    Симпатии:
    1
    замену делай через регекспы, так как проще.
    ещё совет сделать так
    слово|синоним1|синоним2|...|синонимN

    чтобы много вариантов было.
    вопрос ещё так - словарь синонимов сам будешь составлять? если нет, то лучше на синтаксис имеющихся словарей ориентируйся.
     
  5. Nezzar

    Nezzar

    Регистр.:
    29 дек 2006
    Сообщения:
    338
    Симпатии:
    71
    Файл синонимов может быть(по идее) неограниченно большим. 1 слово - 1 синоним. Хотя если кто подправит под несколько, то будет круто


    Почему собственно хайд такой - оригинальная идея в корявом исполнении =(
    Я аналога не видел, и поэтому решил сделать так. Зачем стадо конкурентов?)

    Собственно это разработка под меня, заказывал у программера-урода, деньги взял и свалил, а мне оставил с этим гкодом.

    Сейчас выкладывают много баз DLE, и контент на них само собой не уникальный. Скрипт как раз прогоняет БД DLE(или другой, заданной параметрами) по базе синонимов.

    Собственно сам скрипт лежит тут: http://narod.ru/disk/5483525000/www.zip.html + sypex
    Базы можете взять для настройки тут: http://www.nulled.ws/showthread.php?t=87287




    Если у кого то получится исправить, с меня спасибо и по желанию дам денег на пыво =)
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    PHP:
    function rap(){
     global 
    $sin_arr;
     
    $e mt_rand(1count($sin_arr)-1);
     return  
    $sin_arr[$e];
    }
    $array_main file('s.txt'); // файл с синонимами в формате ЧТО ЗАМЕНИТЬ|ЧЕМ ЗАМЕНИТЬ|ЧЕМ ЗАМЕНИТЬ|ЧЕМ ЗАМЕНИТЬ
    //$text_arr - здесь массив постов в которых заменяем
    $text_arr[] =' Инвестиционный форум. Паевые инвестиционные фонды (ПИФ),  валютный рынок, рынок акций, облигации, финансы и кредит, банковский кредит';
    $text_arr[] =' форум. Паевые инвесрынок, рынок акций, облигации, финансы и кредит';

    foreach (
    $array_main as $sin_str){
     
    $sin_arr explode('|'str_replace(array("\n""\r"),''$sin_str));
     foreach (
    $text_arr as $id=>$post){
      if(
    substr_count($post$sin_arr[0])){
       
    $post preg_replace_callback('|'.$sin_arr[0].'|is''rap'$post);
       
    $text_arr[$id]=$post;
      }
     }
     
    }
    print_r($text_arr);
     
    iehon и Nezzar нравится это.
  7. Nezzar

    Nezzar

    Регистр.:
    29 дек 2006
    Сообщения:
    338
    Симпатии:
    71
    Посмотрел кто-нибудь скрипт, который я оставил?
     
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    смотрел, вобще то не похоже на говнокод. Готовился к худшему, а там всё прилично оформлено оказалось. ;) Правда понял там не всё- можно сделать гораздо проще, хотя возможно просто не понимаю всех идей автора.:ah:
    сейчас со временем ахтунг полный, до воскресенья точно.

    Как вообще я вижу скрипт: 2 функции. Первая - пополнение базы синонимов, если уже есть дай посмотреть, напишу конвертор.
    Вторая- сама замена.
    Что там намудрено, я х-3
    Nezzar поправь если что не так или уточни.
     
  9. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    Бегло посмотрел код, впечатления кратко:

    Не такой уж и говнокод, написан более-менее нормально.

    Едва ли это синонимайзер, скорее продвинутый заменятель синонимов :)

    Из собственно функций синонимайзера (~1% кода) только примитивная замена слова на слово из базы прегами и стрреплейсами.

    Примерно 80% кода занимает работа и обслуживание базы, остальные 19 - оболочка и интеграция в дле.

    База синонимов конечно жесть, порадовало это: Windiws|Microsoft Windows.

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


    Писалось уже не раз, как мною, так и другими:

    Любой синонимайзер заведомо обречен на неудачу если при замене слова не учитывается его контекст. Все остальное под этим громким названием элементарно реализуется функцией strtr().


    Nezzar: выпрями 5 пост ;)
     
  10. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    если ответ мне или касается меня - мну не видит:bh:
     
Статус темы:
Закрыта.