
История изменений
=================


0.9.1 (2020-09-27)
------------------

Исправлено обнаружение словарей в случае, когда pymorphy2 установлен
после запуска процесса. Это типичная ситуация в Jupyter Notebook или
Google Colab - в начале блокнота установить зависимости
(``!pip install pymorphy2``); pymorphy2==0.9 не работал в этом случае без
перезапуска блокнота.

0.9 (2020-09-20)
----------------

Новые возможности:

- Добавлена экспериментальная поддержка украинского языка. См. документацию.
- Улучшена утилита командной строки. См. `pymorphy --help`.
- Добавлена поддержка Python 3.7 и 3.8.

Обратно-несовместимые изменения:

- Внутренняя организация кода сильно поменялась
- Python 2.6 и 3.2 - 3.4 больше не поддерживаются. Python 2.7 пока
  поддерживается, но поддержка Python 2.x будет убрана в pymorphy2 v1.0.

Исправления ошибок, небольшие улучшения:

- Исправлена некорректная работа MorphAnalyzer в многопоточных программах
- улучшено поведение метода .inflect
- исправлена ошибка, вызванная некорректным кешированием нормальных форм
- Команды для скачивания и сборки словарей перенесены в пакет pymorphy2-dicts
- Ускорение сборки словарей
- Небольшое ускорение токенизатора
- улучшения в тестах и документации


0.8 (2014-06-06)
----------------

- pymorphy2 теперь использует setuptools;
- на pypi доступен пакет в формате wheel;
- зависимости устанавливаются автоматически;
- можно установить "быструю" версию через ``pip install pymorphy2[fast]``;
- копия docopt больше не распространяется вместе с pymorphy2;
  пакет ``pymorphy2.vendor`` больше не доступен.

В этом релизе изменен способ установки pymorphy2; никаких изменений
в разборе по сравнению с 0.7 нет.


0.7 (2014-05-26)
----------------

- Методы :meth:`~.MorphAnalyzer.parse` и :meth:`~.MorphAnalyzer.tag`
  теперь всегда возвращают хотя бы один вариант разбора:
  если разбор не удался, то вместо пустого списка теперь возвращается
  список с одним элементом UNKN;
- функция :func:`pymorphy2.shapes.restore_word_case` переименована
  в :func:`pymorphy2.shapes.restore_capitalization`;
- проверена совместимость с Python 3.4;
- в список для замен падежей OpencorporaTag.RARE_CASES добавлены граммемы
  gen1, acc1 и loc1 - они не используются в pymorphy2, но могут встречаться
  в выгрузке корпуса OpenCorpora;
- убран DeprecationWarning при использовании psutil < 2.x;
- небольшие улучшения в документации.

0.6.1 (2014-04-23)
------------------

- Для инициалов добавлена граммема Init.

0.6 (2014-04-22)
----------------

- Заглавные буквы предсказываются как инициалы;
- улучшен внутренний API для предсказателей - флаг terminal больше не нужен;
- улучшения в тестах.

Если вы использовали параметр ``units`` в конструкторе ``MorphAnalyzer``,
то вам нужно будет обновить код, т.к. вместо флага terminal теперь
предсказатели нужно группировать в list-ы в параметре ``units``.

0.5 (2013-11-05)
----------------

- Методы ``MorphAnalyzer.cyr2lat``, ``MorphAnalyzer.lat2cyr`` и атрибут
  ``OpencorporaTag.cyr_repr`` для преобразования между тегами/граммемами,
  записанными латиницей и кириллицей;
- тег для целых чисел теперь ``NUMB,intg``; для вещественных - ``NUMB,real``
  (раньше для всех был просто ``NUMB``);
- ``KnownSuffixAnalyzer`` теперь не вызывается для слов короче 4 символов.

0.4 (2013-10-19)
----------------

- Parse.estimate переименован в score и содержит теперь
  оценку P(tag|word) на основе данных из OpenCorpora;
- по умолчанию результаты разбора сортируются по score.

То, что результатам сопоставляется оценка P(tag|word), может в некоторых
случаях снизить скорость разбора раза в 1.5 - 2. Если эти оценки не нужны,
создайте экземпляр MorphAnalyzer с параметром ``probability_estimator_cls=None``.

Для обновления требуется обновить pymorphy2-dicts до версии >= 2.4,
а также библиотеки DAWG или DAWG-Python до версиий >= 0.7.


0.3.5 (2013-06-30)
------------------

- Препроцессинг словаря: loc1/gen1/acc1 заменяются на loct/gent/accs;
  варианты написания тегов унифицируются (чтоб их было меньше);
- исправлено согласование слов с числительными;
- при склонении слов в loc2/gen2/acc2/voct слово ставится в loct/gent/accs/nomn,
  если вариантов с loc2/gen2/acc2/voct не найдено.

Для полноценного обновления лучше обновить pymorphy2-dicts до версии >= 2.2.

0.3.4 (2013-04-29)
------------------

- Добавлен метод ``Parse.make_agree_with_number`` для согласования слов
  с числительными;
- небольшие улучшения в документации.

0.3.3 (2013-04-12)
------------------

- Исправлен тег, который выдает ``RomanNumberAnalyzer`` (теперь это ROMN,
  как в OpenCorpora);
- добавлена функция ``pymorphy2.tokenizers.simple_word_tokenize``,
  которая разбивает текст по пробелам и пунктуации (но не дефису);
- исправлена ошибка с разбором слов вроде "ретро-fm" (pymorphy2
  раньше падал с исключением).

0.3.2 (2013-04-03)
------------------

- добавлен ``RomanNumberAnalyzer`` для разбора римских чисел;
- ``MorphAnalyzer`` и ``OpencorporaTag`` теперь можно сериализовывать
  с помощью pickle;
- улучшены тесты;
- при компиляции словаря версия xml печатается раньше.

0.3.1 (2013-03-12)
------------------

- Поправлен метод ``MorphAnalyzer.word_is_known``, который раньше
  учитывал регистр слова (что неправильно);
- исправлена ошибка в разборе слов с дефисом (тех, у которых лишний
  дефис справа или слева).

0.3 (2013-03-11)
----------------

- Рефакторинг: теперь при необходимости можно дописывать свои
  "шаги" морфологического анализа ("предсказатели")
  и комбинировать их с существующими (документация пока не готова,
  и API может поменяться);
- на вход больше не обязательно подавать слова в нижнем регистре
  (но на выходе при этом регистр сохраняться не обязан - используйте
  функцию ``pymorphy2.shapes.restore_word_case``, если требуется
  восстановить регистр полученных слов);
- улучшено предсказание неизвестных слов по словообразовательным префиксам
  (учитывается больше таких префиксов);
- реализован разбор (и склонение) слов с дефисами;
- результаты разбора теперь включают в себя полную информацию о том,
  как слово разбиралось; наличие ``para_id`` и ``idx`` при этом
  больше не обязательно;
- анализатор теперь отмечает пунктуацию тегом PNCT, числа - тегом NUMB,
  слова, записанные латиницей - тегом LATN;
- улучшено предсказание по неизвестному префиксу (добавлено ограничение по
  граммеме Apro);
- улучшения в тестах и бенчмарках;
- удален атрибут ``morph.dict_meta`` (используйте ``morph.dictionary.meta``);
- удален (возможно, временно) метод ``MorphAnalyzer.inflect``
  (используйте метод ``inflect`` у результата разбора);
- удален метод ``MorphAnalyzer.decline`` (используйте ``parse.lexeme``);
- удалено свойство ``Parse.paradigm``.

В результате этих изменений улучшилось качество разбора, качество склонения
и возможности по расширению библиотеки (втч для настройки под конкретную
задачу), но скорость работы "из коробки" по сравнению с 0.2 снизилась
примерно на треть.

0.2 (2013-02-18)
----------------

- Улучшения в предсказателе: учет словоизменительных префиксов;
- улучшения в предсказателе: равноценные варианты разбора не отбрасываются;
- изменена схема проверки совместимости словарей;
- изменен формат словарей (нужно обновить pymorphy2-dicts до 2.0);
- добавлено свойство ``Parse.paradigm``.


0.1 (2013-02-14)
----------------

Первый альфа-релиз. Релизована основа: эффективный разбор и склонение,
обновление словарей, полная поддержка буквы ё.

Многие вещи, которые были доступны в pymorphy, пока не работают
(разбор слов с дефисом, разбор фамилий, поддержка шаблонов django,
утилиты из contrib).

Кроме того, API пока не зафиксирован и может меняться в последующих релизах.
