Skip to content

mch735/speller

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Speller

Обертка вокруг сервиса Яндекс.Спеллер

Условия использования

Все права на сервис Яндекс.Спеллер очевидно принадлежат Яндексу (спасибо, Кэп!). Обязательны к прочтению условия использования сервиса

  • http://legal.yandex.ru/speller_api/ - на момент написания гема есть ограничение на 10K запросов или 10M символов в сутки

Установка

gem 'speller', github: 'ex0rcist/speller' 

Зачем это нужно

Сервис Яндекс.Спеллер хорошо исправляет несложные опечатки в тексте. Этот функционал может понадобиться, например,

  • при автоматическом парсинге текстов из какого-то источника - есть смысл проверить их на опечатки
  • при заполнении форм пользователем, их можно править на стороне сервера автоматически, или использовать JS-часть API Яндекс.Спеллер

Что умеет гем

В геме есть два основных класса:

  • Speller::Word - для обработки одиночных слов
  • Speller::Text - для обработки текста

Оба класса наследуют класс Speller::Base, который в свою очередь наследует String. Конструктор принимает два аргумента - text и options

  • text - слово или текст для обработки
  • options - хэш опций, состоящий из

Примеры

Speller::Word

word = Speller::Word.new 'ареул'  # => "ареул"

# spellcheck - список ошибок в слове, массив с 0 и более элементов
# в каждом элементе указан код ошибки (code), позиция слова в строке, его длина (len)
# а также возможные варианты замены
word.spellcheck                   # =>  [{"code"=>1, "pos"=>0, "row"=>0, "col"=>0, "len"=>5, "word"=>"ареул", "s"=>["ареал", "орел", "ареол", "ореол", "реал"]}]

# correct? проверяет слово на наличие ошибок
word.correct?                     # => false

# variants возвращает список вариантов замены слова
word.variants                     # => ["ареал", "орел", "ареол", "ореол", "реал"]

# spellsafe возвращает копию строки с первым из вариантов замены
word.spellsafe                    # => "ареал"

# correct!(variant=0) меняет строку in-place, с возможностью выбора варианта замены
word.correct!                     # => "ареал"
word.correct!(1)                  # => "орел"

Speller::Text

В целом похож на Word, но не имеет метода variants и не может выбирать вариант для correct!

# options: 16 указывает спеллеру игнорировать слова, написанные латиницей
text = Speller::Text.new "Многотсрочный текст\nс опчетками и <span>html-разметкой</span>", {options: 16, format: 'html' }

text.spellcheck                   # =>  список ошибок, аналогично Word

# correct? проверяет текст на наличие ошибок
text.correct?                     # => false

# bad_words возвращает список слов с ошибками
text.bad_words                    # => ["Многотсрочный", "опчетками"]

# spellsafe возвращает копию текста с первым из вариантов замены
text.spellsafe                    # => исправленный текст

# correct! меняет текст in-place
text.correct!                     # => исправленный текст

About

Wrapper around Yandex.Speller service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Ruby 100.0%