JamSpell — это библиотека проверки орфографии со следующими функциями:
Пример колаба
jamspell.com — ознакомьтесь с новой версией jamspell со следующими функциями
en, ru, de, fr, it, es, tr, uk, pl, nl, pt, hi, no
Java, C#, Ruby
Ошибки | Топ-7 ошибок | Фиксированная ставка | Топ-7 фиксированных ставок | Сломанный | Скорость (слов/секунду) | |
JamSpell | 3,25% | 1,27% | 79,53% | 84,10% | 0,64% | 4854 |
Норвиг | 7,62% | 5,00% | 46,58% | 66,51% | 0,69% | 395 |
Ханспелл | 13,10% | 10,33% | 47,52% | 68,56% | 7,14% | 163 |
Дурачок | 13,14% | 13,14% | 0,00% | 0,00% | 0,00% | - |
Модель была обучена на 300 тысячах предложений из Википедии + 300 тысяч новостных предложений (на английском языке). 95% использовалось для обучения, 5% — для оценки. Модель ошибок использовалась для генерации текста с ошибками из исходного. Корректор JamSpell сравнивался с корректором Norvig, Hunspell и фиктивным (без исправлений).
Мы использовали следующие показатели:
Чтобы убедиться, что наша модель не слишком перегружена для википедии+новостей, мы проверили ее на тексте «Приключения Шерлока Холмса»:
Ошибки | Топ-7 ошибок | Фиксированная ставка | Топ-7 фиксированных ставок | Сломанный | Скорость (слов в секунду) | |
JamSpell | 3,56% | 1,27% | 72,03% | 79,73% | 0,50% | 5524 |
Норвиг | 7,60% | 5,30% | 35,43% | 56,06% | 0,45% | 647 |
Ханспелл | 9,36% | 6,44% | 39,61% | 65,77% | 2,95% | 284 |
Дурачок | 11,16% | 11,16% | 0,00% | 0,00% | 0,00% | - |
Подробнее о воспроизведении можно узнать в разделе «Поезд».
Установите swig3
(обычно он находится в менеджере пакетов вашего дистрибутива)
Установите jamspell
:
pip install jamspell
Загрузите или обучите языковую модель
Используйте это:
import jamspell
corrector = jamspell . TSpellCorrector ()
corrector . LoadLangModel ( 'en.bin' )
corrector . FixFragment ( 'I am the begt spell cherken!' )
# u'I am the best spell checker!'
corrector . GetCandidates ([ 'i' , 'am' , 'the' , 'begt' , 'spell' , 'cherken' ], 3 )
# (u'best', u'beat', u'belt', u'bet', u'bent', ... )
corrector . GetCandidates ([ 'i' , 'am' , 'the' , 'begt' , 'spell' , 'cherken' ], 5 )
# (u'checker', u'chicken', u'checked', u'wherein', u'coherent', ...)
Добавьте в свой проект каталоги jamspell
и contrib
.
Используйте это:
# include < jamspell/spell_corrector.hpp >
int main ( int argc, const char ** argv) {
NJamSpell::TSpellCorrector corrector;
corrector. LoadLangModel ( " model.bin " );
corrector. FixFragment ( L" I am the begt spell cherken! " );
// "I am the best spell checker!"
corrector. GetCandidates ({ L" i " , L" am " , L" the " , L" begt " , L" spell " , L" cherken " }, 3 );
// "best", "beat", "belt", "bet", "bent", ... )
corrector. GetCandidates ({ L" i " , L" am " , L" the " , L" begt " , L" spell " , L" cherken " }, 3 );
// "checker", "chicken", "checked", "wherein", "coherent", ... )
return 0 ;
}
Вы можете создавать расширения для других языков, используя руководство swig. Файл интерфейса swig — jamspell.i
. Запросы на включение со скриптами сборки приветствуются.
Установить cmake
Клонируйте и создайте jamspell (включает http-сервер):
git clone https://github.com/bakwc/JamSpell.git
cd JamSpell
mkdir build
cd build
cmake ..
make
./web_server/web_server en.bin localhost 8080
$ curl " http://localhost:8080/fix?text=I am the begt spell cherken "
I am the best spell checker
$ curl -d " I am the begt spell cherken " http://localhost:8080/fix
I am the best spell checker
curl " http://localhost:8080/candidates?text=I am the begt spell cherken "
# or
curl -d " I am the begt spell cherken " http://localhost:8080/candidates
{
"results" : [
{
"candidates" : [
"best" ,
"beat" ,
"belt" ,
"bet" ,
"bent" ,
"beet" ,
"beit"
] ,
"len" : 4 ,
"pos_from" : 9
} ,
{
"candidates" : [
"checker" ,
"chicken" ,
"checked" ,
"wherein" ,
"coherent" ,
"cheered" ,
"cherokee"
] ,
"len" : 7 ,
"pos_from" : 20
}
]
}
Здесь pos_from
— положение первой буквы слова с ошибкой, len
— слово с ошибкой len
Для обучения пользовательской модели вам необходимо:
Установить cmake
Клонируйте и создайте джемспелл:
git clone https://github.com/bakwc/JamSpell.git
cd JamSpell
mkdir build
cd build
cmake ..
make
Подготовьте текстовый файл utf-8 с предложениями для обучения (например, sherlockholmes.txt
) и еще один файл с языковым алфавитом (например, alphabet_en.txt
).
Модель поезда:
./main/jamspell train ../test_data/alphabet_en.txt ../test_data/sherlockholmes.txt model_sherlock.bin
evaluate/evaluate.py
: python evaluate/evaluate.py -a alphabet_file.txt -jsp your_model.bin -mx 50000 your_test_data.txt
evaluate/generate_dataset.py
для генерации данных для обучения/тестирования. Он поддерживает текстовые файлы, формат Leipzig Corpora Collection и книги fb2. Вот несколько простых моделей. Они обучались на 300 тысячах новостей + 300 тысячах предложений из Википедии. Мы настоятельно рекомендуем обучить собственную модель хотя бы на нескольких миллионах предложений, чтобы добиться лучшего качества. См. раздел «Поезд» выше.