?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Entries by tag: part-of-speech tagging

PyParser - обертка синтаксического парсера для Питона (пре-альфа)
kelijah
Пока собрано и проверено только для Python 2.7 Windows 64 (Anaconda).

Исходники парсера, сильно отрефакторенные, с новой иерархией для введения абстрагирования от способа вывода результатов парсинга, лежат в репозитории. Сборка выполнена с помощью VisualStudio 2015, соответствующее решение Parser.sln лежит в этой папке. Обертка для вызова C++ кода из питоновского сделана с помощью boost::python.

В проекте пока нет установки пакета, поэтому проверить и  использовать можно только руками. В папке лежат готовые бинарники pyparser.pyd и libdesr.dll. Разумеется, также нужны файлы словарной базы (можно взять из дистрибутива парсера, выложенного тут).

Пример выполнения частеречной разметки на Питоне:
Read more...Collapse )

PS: добавлен скрипт setup.py для установки собранного модуля pyparser штатным механизмом питона. Для этого надо перейти внутрь каталога src копии репозитория (там лежит setup.py и прочие запчасти) и выполнить:

pip install .

Будет установлен пакет Solarix, в котором есть модуль pyparser.
Разумеется, делать это можно как глобально, так и для virtualenv-окружения.

Декодер Витерби для нейросетки Part-Of-Speech tagger
kelijah
Пожалуй, это последний штрих к модели частеречной разметки Model1.

Странно, что я не сделал это раньше, так что пришлось в шесть утра освежать в памяти, что такое алгоритм Витерби и припаивать его поверх нейросетки (аналогично тому, как это делается в MEMM поверх maxent-классификатора).

Впрочем, особо большого улучшения качества я не получил. Скорость же обработки корпуса в ходе разметки упала значитально, все-таки Питон интерпретирует медленно и делаить на нем явные циклы по матрицам не совсем хорошо.

Сеточные char-level модели морфологического анализа и лемматизации для MorphoRuEval 2017
kelijah

Далее будут кратко описаны три модели. Две модели для частичной разметки соответствуют последовательным экспериментам по выбору общей архитектуры. Условно они называются Model1 и Ensemble. Модель лемматизации общая, ансамбль для нее я не делал, хотя это безусловно возможно и даже желательно.


Исходные тексты можно найти на гитхабе: https://github.com/Koziev/MorphoRuEval2017

Read more...Collapse )
PS: Ансамбль будет описан отдельно.

Предварительная оценка part-of-speech tagger на базе LSTM/классификатора для MorphoRuEval2017
kelijah
Первая модель - одиночная char-level рекуррентная сетка, LSTM для упаковки контекста слова и softmax-классификатор на выходе.
Делаю оценку точности сверху, на будущей конкурсной тестовой выборе результат будет, конечно, существенно хуже.

part_of_speech_err_rate=0.00512569657917 tagset_err_rate=0.0258748260202

Ошибаемость при определении классифицируемых по условиях состязания частей речи - примерно 0.5%
Ошибаемость определения полного tagset'а, причем ошибка в любом теге считается за полную ошибку, - примерно 2,6%

Байесовская классификация метки части речи по обучающему корпусу morphorueval 2017
kelijah
acc=0.95Collapse )

Готовлю ансамбль к MorphoRuEval 2017
kelijah
Соревнование: http://www.dialog-21.ru/evaluation/2017/morphorueval/

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

На данный момент в проработке и тестах:

1. Сеточная char-level LSTM модель для лемматизации с трансдьюсерами.
2. Сеточная char-level LSTM модель для частеречной разметки. Замечательная и красивая штука, но ансамбль круче.
3. Ансамбль из char-level LSTM + DecisionTree + MaxEnt + NLTK ClassifierBasedPOSTagger для частеречной разметки.

Если успею, то в ансамбль войдет сеточная word-level LSTM модель.

Неудачные эксперименты - использование CRF, RandomForest и GradientBoostingClassifier (последние два из sklearn).

Все модели, в том числе неудачные, будут выложены на github и подробно описаны в запланированных постах. Использую только python, keras, sklearn и NLTK, никаких сторонних непереносимых библиотек.

Тюнинг UnigramTagger+AffixTagger+DefaultTagger до 97,5%
kelijah
В продолжение http://kelijah.livejournal.com/199946.html.

Если организовать цепочку backoff-тэггеров AffixTagger по окончаниям от 1 до 4 символов, плюс добавить DefaultTagger, и повесить всё это на UnigramTagger, то качество вырастает почти на полпроцента:

UnigramTagger+AffixTagger(4,3,2,1)+DefaultTagger accuracy=0.97537562778

Дефолтный тэггер настроен на выдачу СУЩЕСТВИТЕЛЬНОЕ, поскольку морфология прилагательных очень регулярна и отлично ловится AffixTagger'ами.

Обновленный код на питоне лежит там же.

NLTK Part-Of-Speech Tagger по русскому корпусу
kelijah
Ингредиенты:

1. Python
2. NLTK, точнее та часть, которая лежит в nltk.tag
3. Набор предложений с ручной морфологической разметкой слов собственного производства, примерно 2,2 миллиона слов.
Простой способ получить точность в 97%...Collapse )

Сеточная модель для определения части речи слова по его символьному представлению
kelijah
Еще одна сеточная модель для char-based language modeling.
Для произвольной цепочки символов пытаемся определить, к какой части речи это слово относится.
Read more...Collapse )

Обновление синтаксического парсера
kelijah

Большое обновление всех компонентов русского синтаксического парсера (http://solarix.ru/parser.shtml):

Read more...Collapse )Ссылка на архив с бинарниками (русская словарная база в комплекте, вероятностные модели и исполнимые файлы): http://solarix.ru/for_developers/download/win/parser-ru-win64.7z