[PHP] Spell check\Проверка орфографии

Discussion in 'PHP' started by попугай, 25 Jun 2010.

  1. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Есть ли готовые скрипты, классы или API для проверки и исправления неправильной орфографии для русского и английского языка? Чтоб не только указывало на ошибки, но и исправляло их(варианты возможные можно было бы выбрать.)
     
  2. Serafim

    Serafim Elder - Старейшина

    Joined:
    24 Oct 2006
    Messages:
    181
    Likes Received:
    103
    Reputations:
    18
    Не попадались такие скрипты, но как вариант посмотри тут.
     
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Да, это видел, но гугл не пойдет и онлайн сервисы тоже - проверять очень часто нужно.
     
  4. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Нашел кое что http://ru.wikipedia.org/wiki/Hunspell

    Многие крупные проекты используют эту штуку - Opera, OpenOffice, Chrome.

    Пробовал скомпилировать исходники на CentOS: скачал, распаковал, ввел ./configure, произошла попытка сконфигурировать, далее ввел make, мне выдало
    , то же самое на make install. В чем может быть проблема?

    В википедии написано, что он кроссплатформенный, значит можно на винде установить. Как это сделать? скомпилировать как то? Готовых бинарников я не нашел.
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай ищи прочие ошибки компиляции/конфигурирования. У меня на центос завелось без проблем и даже проверяет правописание.

    Про компиляцию под вин написано в README
     
    _________________________
  6. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196

    Ясно, попробую. А как у нее проверка орфографии происходит? Допустим, можно будет из скриптов обращаться к программе, чтоб она выдавала список возможных правильных слов к неправильному?
     
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай в никсе можно напрямую обращаться к программе через proc_open например. Скармливаешь ей строку, на каждое слово из строки возвращает идентификатор плюс варианты правильного написания. Идентификатор - это правильно/неправильно ли написано слово
     
    _________________________
  8. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Gifts, сейчас установил на другом сервере при помощи yum. Но видимо, словарей нет, пишет:


    Can't open affix or dictionary files for dictionary named "en_US".

    Как добавить новые словари, в том числе и русские? Куда их кидать?
     
  9. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    поставьте пакеты hunspell-en.noarch и hunspell-ru.noarch
     
  10. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196

    А где их взять можно?

    Пробовал



    Setting up Install Process
    Package hunspell-1.2.9-2.el5.art.i386 already installed and latest version
    No package hunspell-ru available.
    No package hunspell-en available.
    Nothing to do


    Как еще можно найти эти пакеты?
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Попугай man hunspell - в самом конце написано, где должны храниться дефолтные (ну и все остальные) языковые файлы

    Или просто. Создайте папку /usr/share/myspell/ и поместите туда языковые файлы из http://wiki.services.openoffice.org/wiki/Dictionaries
     
    _________________________
  12. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196

    Ага, спасибо. Скачал, добавил.

    Но проблема в кодировке. Файл, который хочу проверить в кодировке windows-1251(Она же дефолтная в винде при создании текста вроде).
    Набираю

    hunspell -d ru_RU -i Windows-1251 /tmp/asd.log

    В консоле показывается текст этот и слова с ошибками, которые можно исправить, пропустить, убрать, заменить, но сам текст в кракозябрах. Почему так?


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

    PHP:
    system('hunspell -d ru_RU -i Windows-1251 /tmp/asd.log');
    Или даже не весь файл чекать, а только слово, которое подается на вход.
     
  13. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    попробуйте опцию -l и/или -L
    Code:
    echo "Превед, неправильный медвед. Фтопку падонкаф, учи русский" | hunspell -d ru_RU -l 
    
    Вывод
    Code:
    Превед
    медвед
    Фтопку
    падонкаф
    
     
    #13 krypt3r, 25 Jun 2010
    Last edited: 25 Jun 2010
    1 person likes this.
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай php.net/proc_open и hunspell -a. Вообще прочитайте наконец ман
     
    _________________________
  15. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196


    Почему так?