# Hunspell vs russian-morphology

**URL:** https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341
**Category:** Вопросы на русском языке
**Created:** [February 14, 2019, 6:27am UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341 "2019-02-14T06:27:48Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![GreenX](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/greenx/32/51751_2.png) [@GreenX](https://discuss.elastic.co/u/GreenX)
#### Post date: [February 14, 2019, 6:27am UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/1 "2019-02-14T06:27:48Z")

</div>

Всем привет!  
Пытаюсь перейтина hunspell, но пока результат не очень получается.  
Например, слово "быстро" - молуль морфологии возвращает "быстро" и "быстрый".  
Делаю анализатор с hunspell и словарями из libreoffice - как есть так и возвращает  
"быстро" -\> "быстро", "быстрый" -\> "быстрый", "быстрая" -\> "быстрая".  
Пытаюсь проверить так:

```
> echo быстрая|hunspell -p ../dictionary/hunspell/libreoffice/ -s
быстрая быстрый
> echo быстро|hunspell -p ../dictionary/hunspell/libreoffice/ -s
быстро быстрый

```

Т.е. вроде работает. ЧЯДНТ?  
Анализатор практически скопипасчен из доки. ES 5.6.14.

Upd:  
Похоже ему вообще пофиг на кастомные словари, вот без всяких ключей:

```auto
> echo быстренькая|hunspell
Hunspell 1.7.0
+ быстренький

```

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [February 14, 2019, 8:50pm UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/2 "2019-02-14T20:50:08Z")

</div>

Я не могу это воспроизвести с самим elasticsearch. Только что попробовал на 6.6.0:

```auto
PUT /hunspell_example
{
    "settings": {
        "analysis" : {
            "analyzer" : {
                "ru" : {
                    "tokenizer" : "standard",
                    "filter" : ["lowercase", "ru_RU"]
                }
            },
            "filter" : {
                "ru_RU" : {
                    "type" : "hunspell",
                    "locale" : "ru_RU",
                    "dedup" : true
                }
            }
        }
    }
}

POST hunspell_example/_analyze
{
  "text": "быстрая",
  "analyzer": "ru"
}

```

возвращает мне

```auto
{
  "tokens" : [
    {
      "token" : "быстрый",
      "start_offset" : 0,
      "end_offset" : 7,
      "type" : "<ALPHANUM>",
      "position" : 0
    }
  ]
}

```

Hunspell должен возвращает примерно такие-же результаты, что и russian-morphology для слов в словаре. Проблемы начинаются, только когда слов у него в словаре нет. Например, russian-morphology c [Бармаглотом](https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D1%80%D0%BC%D0%B0%D0%B3%D0%BB%D0%BE%D1%82), справляется вполне успешно, а hunspell-у он не по зубам:

```auto
POST hunspell_example/_analyze
{
  "text": "Хливкие",
  "analyzer": "ru"
}

```

вернет

```auto
{
  "tokens" : [
    {
      "token" : "хливкие",
      "start_offset" : 0,
      "end_offset" : 7,
      "type" : "<ALPHANUM>",
      "position" : 0
    }
  ]
}

```

В остальном, он вполне работает.

---

<div class="post-metadata">

### Author: ![GreenX](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/greenx/32/51751_2.png) [@GreenX](https://discuss.elastic.co/u/GreenX)
#### Post date: [February 14, 2019, 9:55pm UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/3 "2019-02-14T21:55:34Z")

</div>

Я уже понял, что результат от словаря сильно зависит. Часть же слов он мне приводит к нужному виду. А какой у вас словарь? Как там эти "быстр\*" записаны? Если hunspell совсем не умеет работать со словами когда их нет в словаре это печально.

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [February 15, 2019, 9:06pm UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/4 "2019-02-15T21:06:15Z")

</div>

Я словарь из libreoffice брал.

---

<div class="post-metadata">

### Author: ![GreenX](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/greenx/32/51751_2.png) [@GreenX](https://discuss.elastic.co/u/GreenX)
#### Post date: [February 18, 2019, 8:03am UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/5 "2019-02-18T08:03:06Z")

</div>

Странно, видимо у нас разные libreoffice-ы)  
Я выдирал словарь из экстеншса.

> **[Russian dictionary pack.](https://extensions.libreoffice.org/extensions/russian-dictionary-pack)**
>
> Пакет словарей для русского языка.
> Включает в себя:
> \* Тезаурус.
> \* Словарь расстановки переносов.
> \* Орфографический словарь, основанный на проекте рабочей группы AOT (только Ё).
> Russian dictionary pack.
> Russian Spellcheck dictionary based on...

  
Там сборная солянка с АОТ и еще чем-то.  
Есть около 6 тысяч фамилий.  
Но вот слова типа: теперь и быстрый - записаны без аффиксов.

Штатный словать мне показался очень маленьким.  
Файл аффикосв всего 1633 строк.  
Насколько понимаю в DEB дистрах он же в пакете hunspell-ru

> **[LibreOffice/dictionaries](https://github.com/LibreOffice/dictionaries/tree/master/ru_RU)**
>
> Contribute to LibreOffice/dictionaries development by creating an account on GitHub.

Потом нашел словарь от Александра Клюквина.  
[https://code.google.com/archive/p/hunspell-ru/](https://code.google.com/archive/p/hunspell-ru/)  
Он по больше, есть имена и фамилии.  
Ссылка на сам словарь [https://bitbucket.org/Shaman\_Alex/russian-dictionary-hunspell/downloads/ru\_RU\_UTF-8\_20131101.zip](https://bitbucket.org/Shaman_Alex/russian-dictionary-hunspell/downloads/ru_RU_UTF-8_20131101.zip)

```
# grep -niH ^быстрый /etc/elasticsearch/hunspell/ru_RU/*.dic 
/etc/elasticsearch/hunspell/ru_RU/ru_RU.dic:9622:быстрый/CCCDCO

```

Разбирает: тру, три, теперь, быстро, быстрый... но всёравно слишком мало фамилий.  
По крайней мере ни моей, ни одного из четырёх начальников нет 🙂  
И есть нюанс - имена, фамилии с большой буквы, т.е. если поставить после "lowercase" не сработает.

В общем за выходные распарсил одну базенку.  
Из 2,6млн записей получалось: 168472 фамилии, 16706 мужских имен и 9154 женский имен.  
С именами то более-менее понятно. Там за 100 уже идут очень редкие имена.  
А с фамилиями придется делать до 76442-ой, я это никогда в жизни не размечу 🙂

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [February 19, 2019, 2:14pm UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/6 "2019-02-19T14:14:16Z")

</div>

Я тестировал вот с этим [https://cgit.freedesktop.org/libreoffice/dictionaries/tree/ru\_RU](https://cgit.freedesktop.org/libreoffice/dictionaries/tree/ru_RU)

---

<div class="post-metadata">

### Author: ![GreenX](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/greenx/32/51751_2.png) [@GreenX](https://discuss.elastic.co/u/GreenX)
#### Post date: [February 19, 2019, 2:18pm UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/7 "2019-02-19T14:18:02Z")

</div>

Да, это 2-ой вариант - 1633 строки в aff

---

<div class="post-metadata">

### Author: ![GreenX](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/greenx/32/51751_2.png) [@GreenX](https://discuss.elastic.co/u/GreenX)
#### Post date: [March 1, 2019, 5:51am UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/8 "2019-03-01T05:51:31Z")

</div>

В общем, со словарем всё более-менее нормально, кроме фамилий.  
Сделал словарик фамилий. Около 100500 штук получилось ))

> **[greenx/hunspell-ru-surnames](https://github.com/greenx/hunspell-ru-surnames)**
>
> surnames dictionary for hunspell module in elasticsearch - greenx/hunspell-ru-surnames

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [March 29, 2019, 5:51am UTC](https://discuss.elastic.co/t/hunspell-vs-russian-morphology/168341/9 "2019-03-29T05:51:38Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
