Токенизатор/ПерловыйМодуль: различия между версиями

Материал из OpenCorpora
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 32: Строка 32:
Дистрибутив имеет две версии: версия кода и версия данных.
Дистрибутив имеет две версии: версия кода и версия данных.


Rationale: ...
=== Rationale ===
 
Разделение версий было изначально было задумано для того, чтобы иметь возможность релизить данные отдельно для кода.
 
Код может обновляться за счет багфиксов, оптимизаций, документации. Все эти причины никак не затрагивают данные.
 
Точно так же можно добавлять новые данные без изменения самого кода. Каждый день в корпус добавляются новые предложения, правятся ошибки, добавляются исключения и т.д.
В идеале это ведет к тому, что в файле с векторами будут более точные данные. Удобно иметь возможность поставлять более точные данные без изменения кода.
 
Обновления обоих необходимо при изменении алгоритма: данные сгенерированные более новым алгоритмом не могут применяться более старым и наоборот.


=== Код ===
=== Код ===
<pre>Lingua::RU::OpenCorpora::Tokenizer->VERSION</pre>
Совершенно независимая версия. '''Не обязана совпадать с версией lib_tokenizer'''.


=== Данные ===
=== Данные ===
<pre>Lingua::RU::OpenCorpora::Tokenizer::List->data_version</pre>
Версия данных по сути показывает, какой версией алгоритма эти самые данные были сгенерированы.
Обновление данные внутри одной версии происходит путем сравнения времени генерации (unix timestamp) локальных и файлов на сервер обновления.


= Разработка =
= Разработка =
Строка 43: Строка 62:
В репозитории всегда находится самая последняя версия кода, возможно не всегда готовая для полноценного релиза.
В репозитории всегда находится самая последняя версия кода, возможно не всегда готовая для полноценного релиза.


Код в репозитории периодически синхронизируется с кодом lib_tokenizer и collect_data.
Код в репозитории периодически синхронизируется с кодом lib_tokenizer и collect_data.pl.


= Примеры =
= Примеры =
Строка 51: Строка 70:
= Проблемы =
= Проблемы =


* Путаница с версиями
* Запутанная система назначения версий
Упростить?
* Медленная работа
* Медленная работа
* Отсутствие нормального инструмента для QA
* Отсутствие нормального инструмента для QA
= Ссылки =
...

Версия от 10:34, 23 ноября 2011

Назначение

Мы хотим делать модули на Perl для того, чтобы было удобно раздавать результаты проекта программистам.

Возможность использования данных Открытого Корпуса без привязки к его инфрастктуре.

Описание

По сути представляет из себя порт lib_tokenizer. Самостоятельных фич, кроме обновления через интернет, не имеет.

Дистрибутив состоит из набора модулей, документации, вспомогательных скриптов и файлов с данными.

Файлы с данными

Для работы модуля необходимы 4 файла:

  • список векторов с вероятностями
  • список исключений
  • список префиксов
  • список слов с дефисом

Все файлы генерируются автоматически перед релизом новой версии. Генерацией занимается скрипт gen_data_for_module.pl.

Версии файлов, сгенерированные для старых релизов, остаются доступными на скачивание даже после выхода более новой версии. Это позволяет сохранять обратную совместимость обновления для старых версий модуля. Шаблон URL: http://opencorpora.org/files/export/tokenizer_data/$version/$name.{latest,gz}.

Примеры:

Версии

Дистрибутив имеет две версии: версия кода и версия данных.

Rationale

Разделение версий было изначально было задумано для того, чтобы иметь возможность релизить данные отдельно для кода.

Код может обновляться за счет багфиксов, оптимизаций, документации. Все эти причины никак не затрагивают данные.

Точно так же можно добавлять новые данные без изменения самого кода. Каждый день в корпус добавляются новые предложения, правятся ошибки, добавляются исключения и т.д. В идеале это ведет к тому, что в файле с векторами будут более точные данные. Удобно иметь возможность поставлять более точные данные без изменения кода.

Обновления обоих необходимо при изменении алгоритма: данные сгенерированные более новым алгоритмом не могут применяться более старым и наоборот.

Код

Lingua::RU::OpenCorpora::Tokenizer->VERSION

Совершенно независимая версия. Не обязана совпадать с версией lib_tokenizer.

Данные

Lingua::RU::OpenCorpora::Tokenizer::List->data_version

Версия данных по сути показывает, какой версией алгоритма эти самые данные были сгенерированы.

Обновление данные внутри одной версии происходит путем сравнения времени генерации (unix timestamp) локальных и файлов на сервер обновления.

Разработка

Исходный код модуля доступен на GitHub. В репозитории всегда находится самая последняя версия кода, возможно не всегда готовая для полноценного релиза.

Код в репозитории периодически синхронизируется с кодом lib_tokenizer и collect_data.pl.

Примеры

...

Проблемы

  • Запутанная система назначения версий

Упростить?

  • Медленная работа
  • Отсутствие нормального инструмента для QA