?

Log in

No account? Create an account

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

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

Entries by tag: синтаксический анализатор

Большое обновление русского лексикона, морфологии и синтаксических правил в грамматическом движке
kelijah
Закомитил в https://github.com/Koziev/GrammarEngine накопившиеся изменения:

1) Добавлено много новых словарных статей
2) Убраны некоторые составные слова типа "мотор-генератор"
3) Исправлены различные ошибки, обнаруженные при тестировании - неверные формы слов etc.
4) Для некоторых слов уточнены морфологические теги (модальность, падежная валентность etc.)
5) В синтаксический анализатор добавлена пара правил разбора.

Также есть некоторые вещи, которые могут быть добавлены в словарь по результатам экспериментов в рамках соревнования ClassicAI, в том числе - списки ударений для нескольких сотен тысяч форм слов. Но это произойдет, наверное, в лучшем случае в сентябре.

Новая модель для синтаксического парсинга
kelijah
Я немного расширил набор фич в модели синтаксического парсинга и сделал предварительный grid search по метапараметрам.

Пока по предварительным замерами на валидации старая модель давет точность определения родителя примерно 96.83%, а новая модель дает минимум 98.54%.

Файлы новой русской синтаксической модели (предварительные) выложены в репозиторий: syntax.codebook и syntax.model.

После того, как сработает early stopping в тренере модели я планирую погонять финальную версию на текстах и затем выложить дистр на сайте.

Актуальная русская словарная база с моделями POS Tagging, syntax parsing и лемматизации
kelijah
Обучение всех моделей для русской словарной базы закончилось. Файлы моделей и прочие запчасти лежат в папке https://github.com/Koziev/GrammarEngine/tree/master/src/bin-windows64

Перед использованием надо распаковать *.zip файлы, так как они превышают предельный размер для репозитория в github'е.

Эксперимент с использованием reinforcement learning keras-rl для синтаксического парсинга
kelijah
Используется размеченный treebank отсюда: http://universaldependencies.org
Reinforcement learning делается средствами keras-rl
Парсер - простая стековая машина, не поддерживающая непроективные ребра.
Эксперимент пока неудачный, не могу добиться роста качества парсинга.
Питоновский исходник выложил здесь: https://github.com/Koziev/RI_Syntax

Рекуррентная и сверточная сетка для парсинга цепочки слов
kelijah
(Продолжение - см. часть 1 syntax_chars)

На уровне цепочки слов есть множество вариантов построения сеточной модели, которая будет выдавать матрицу связности слов. Кратко опишу результаты для двух экспериментальных моделей - syntax_w2v_rnn и syntax_ff.
Read more...Collapse )

Синтаксический анализ на сверточных и рекуррентных сетках. Часть 1: syntax_chars
kelijah
Посмотрим, как с помощью нейросетевых моделей можно строить синтаксическое дерево зависимостей для предложения.
Читать далее (LSTM, Keras, char-based parsing)...Collapse )

Определение списка синтаксических ребер по words2words-вектору предложения
kelijah
Результаты по сравниваемой модели (условно называется syntax_ff) представлены тут http://kelijah.livejournal.com/197110.html.

Вторая модель берет вектор предложения, получаемый с помощью предобученного RNN-автоэнкодера word2words, и на выходе пытается выдавать такие же ребра.

Read more...Collapse )

Предварительные результаты для сеточной модели парсинга предложений
kelijah
На данный момент моя сеточная модель, выдающая dependency tree с нетипизированными ребрами, использующая word2vec встраивания слов с dim=1024, достигает неплохой точности ~97.4% (ошибаемость в районе 2,6%):
Read more...Collapse )

Текущие планы по POS Tagger'у и синтаксическому парсеру
kelijah
Самое главное: больше не будет 32-битных версий. Синтаксический парсер портирован под Windows на 64 бита и вроде чувствует себя в новом варианте неплохо. Раньше я уже портировал его на 64-битный linux. Так как ни одна из текущих задач не требует 32-битного варианта, не вижу смысла собирать соответствующие словарные базе и исполнимые файлы.

Пару недель парсер будет бегать на большой задаче, потом - релиз.

Из сопутствующих планов.

1. Попробовать обучить SyntaxNet на моем tree bank.

2. Реализовать новый парсер, концептуально больше похожий на shallow parser. Без определения типа связей, примерно как в Cabocha. Это может показаться странным, но опыт показывает, что тип связи (подлежащее-сказуемое, существительное-атрибут и т.д.) нужен не так часто. Гораздо важнее уметь определять вероятность связывания, особенно для предложных паттернов и всяких неоднозначных конструкций типа "я отдал книгу дочери".

Анализ тональности отзывов
kelijah
Разобранный текст:Разобранный отзыв...Collapse )Сейчас система знает очень мало ключевых слов, это просто proof-of-concept, со срезанными углами везде, где можно. Но результаты не безнадежные:
Read more...Collapse )

Текущие выводы.

1. Из классического подхода с явно задаваемыми ключевыми словами для explicit/implicit aspects я выжал, наверное, все что можно.
2. Очень нужен хороший, надежный и быстрый алгоритм коррекции ошибок/опечаток в написании слов. Этих ошибок очень много, почти твиттер-стайл: "Персонал в ресторане дружельбный ."
3. Полный синтаксический анализ не нужен. Нет смысла строить единое дерево зависимостей, пытаясь устранить неоднозначности выбора ребер. Достаточно построить матрицу связанности. Это на пару порядков более простая задача.