Комментарии 18
А как справляется с «мыть» и «какать»?
А вот тут уже без общего контекста никак не обойтись. Например, вещи типа «Регулярно мой стол» и «Мой стол очень красивый» ещё разделяются, а если это предложение «Мой стол», то на этом уровне это неразрешимо.
Частично это решается тем, что парсер всё ещё может возвращать вероятности разных классов, то есть мы оставляем неодназначность и предлагаем её разрешить системам, которые находятся на уровень выше.
В случае с «какать» нам очень сильно может помочь пунктуация.
Частично это решается тем, что парсер всё ещё может возвращать вероятности разных классов, то есть мы оставляем неодназначность и предлагаем её разрешить системам, которые находятся на уровень выше.
В случае с «какать» нам очень сильно может помочь пунктуация.
Т.е. парсер будет рассматривать по одному предложению, а общий контекст повествования/разговора учитывать не будет? Как бы вот тема для развития.
Да, именно так. Парсер обучался именно на предложениях, вероятно общий контекст сможет помочь разрешению омонимии в некоторых случаях.
Но даже на уровне предложений, 5% ошибок — это довольно много, вообще говоря. Я сейчас распарсил «Регулярно мой стол» и получил, что парсер считает «мой» местоимением, причём с довольно высокой вероятностью. С некоторыми ухищрениями и подсказками («Мой и чисти свой стол регулярно», например) вероятность того, что это глагол, удалось довести до 5%. Есть предположение, что формы повелительного наклонения в обучающей выборке не очень часто встречались.
А как направление развития учёт общего контекста — отличная идея. А ещё в конкретно моей реализации нет никакого семантического уровня. В реализации Дани это худо-бедно могут обеспечить словные эмбеддинги.
Но даже на уровне предложений, 5% ошибок — это довольно много, вообще говоря. Я сейчас распарсил «Регулярно мой стол» и получил, что парсер считает «мой» местоимением, причём с довольно высокой вероятностью. С некоторыми ухищрениями и подсказками («Мой и чисти свой стол регулярно», например) вероятность того, что это глагол, удалось довести до 5%. Есть предположение, что формы повелительного наклонения в обучающей выборке не очень часто встречались.
А как направление развития учёт общего контекста — отличная идея. А ещё в конкретно моей реализации нет никакого семантического уровня. В реализации Дани это худо-бедно могут обеспечить словные эмбеддинги.
А вот тут уже без общего контекста никак не обойтись
1. в графине он увидел мать.
2.
надо построить граф дороги [ для маршрутизации]
надо построить графу дороги [ кто должен строит он, или для него]
3. графы /графья. разные формы
хорошее такое слово
Напрямую — к сожалению, нет. Хотя стоило бы.
Есть косвенные данные. В одной из статей с MorphoRuEval-2017 есть сравнение с SyntaxNet'ом на UD 1.3 SyntagRus. Приведённая в этой статье модель побивает SyntaxNet. У SyntaxNet'а, согласно статье, 94% точности на полных грамматических значениях. А моя модель побивает модель из статьи на тестах MorphoRuEval-2017.
Кроме того, я измерял качество на UD 2.0 SyntagRus. У меня там было около 94.5%.
Но для полной уверенности надо всё ещё замерять.
Есть косвенные данные. В одной из статей с MorphoRuEval-2017 есть сравнение с SyntaxNet'ом на UD 1.3 SyntagRus. Приведённая в этой статье модель побивает SyntaxNet. У SyntaxNet'а, согласно статье, 94% точности на полных грамматических значениях. А моя модель побивает модель из статьи на тестах MorphoRuEval-2017.
Кроме того, я измерял качество на UD 2.0 SyntagRus. У меня там было около 94.5%.
Но для полной уверенности надо всё ещё замерять.
Насчет решения с CRF на github.com/kmike/dialog2017 — это такой скучный baseline, что сабмитить-то стыдно было) Берем все теги, извлекаем кое-какие фичи, пихаем в CRF. Я изначально хотел другой подход попробовать (через какой-нибудь DAGGER, чтоб структура тегов учитывалась — не просто 300 one-hot закодированных было, + назад больше 1 шага смотреть можно, красиво можно сделать), но в итоге времени не нашел — пару бейзлайнов сделал, чтоб было, с чем сравнивать, потом на преобразование тегов между форматами кучу времени потратил, а потом уже приоритеты поменялись.
А с яндексовским mystem не сравнивали?
Я его использую в своих хобби-проектах, но если о чем-то коммерческом говорить — то там ограничения по лицензии, вот неспешно подыскиваю замену.
Я его использую в своих хобби-проектах, но если о чем-то коммерческом говорить — то там ограничения по лицензии, вот неспешно подыскиваю замену.
С mystem не так-то просто сравниться. Проблема в том, что на всех тестах, которые использовались в MorphoRuEval-2017, mystem точно проиграет, но это ничего не скажет о качестве его разбора. Это происходит из-за того, что его нельзя дообучить, а разметки разных корпусов сильно отличаются из-за того самого отсутствия стандартизации. Вообще практически любой парсер без дообучения заведомо проиграет.
Кроме того, тут во всей красе присутствует проблема разных наборов тегов. Придётся конвертировать из UD в mystem'овский формат или обратно, а это неустранимые потери точности.
Если сравниваться, то надо сравниваться на его поле. Его полем, видимо, можно считать НКРЯ, но я пока на нём не считал точность. Возможно, стоит посчитать.
С практической точки зрения mystem на порядок, а может и на несколько порядков быстрее моего парсера. Если скорость не так критична, то в качестве замены мой парсер вполне может подойти.
Кроме того, тут во всей красе присутствует проблема разных наборов тегов. Придётся конвертировать из UD в mystem'овский формат или обратно, а это неустранимые потери точности.
Если сравниваться, то надо сравниваться на его поле. Его полем, видимо, можно считать НКРЯ, но я пока на нём не считал точность. Возможно, стоит посчитать.
С практической точки зрения mystem на порядок, а может и на несколько порядков быстрее моего парсера. Если скорость не так критична, то в качестве замены мой парсер вполне может подойти.
На каких корпусах из числа выложенных проводилось обучение финальной модели? Только на ГИКРЯ? В ваших экспериментах остальные тоже демонстрировали ухудшение?
Основная модель училась на ГИКРЯ, конкретно на этих данных: https://github.com/dialogue-evaluation/morphoRuEval-2017/blob/master/GIKRYA_texts_new.zip. Причём из архива я использовал для обучения и train, и test часть, потом разбивал получившийся набор на train и val в соотношении 9:1. В качестве тестовой выборки использовал тестовую выборку соревнования.
Пробовал дообучиться на СинТагРусе, лучше не стало. НКРЯ и OpenCorpora не пробовал.
Пробовал дообучиться на СинТагРусе, лучше не стало. НКРЯ и OpenCorpora не пробовал.
а генеративную модель не пробовали?
дискриминатор различает была такая строка или нет, а генератор на основе строки расставляет теги.
дискриминатор различает была такая строка или нет, а генератор на основе строки расставляет теги.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как научить свою нейросеть анализировать морфологию