Pull to refresh
8
0
Денис Кирьянов @kirdin

Data scientist, nlp

Send message
Есть какая-то оценка того, что получилось? Какой-то скор (UAS/LAS) на синтагрусе, например? Очень не хватает понимания потенциала качества правилового подхода, честно говоря.

В проекте Universal Dependencies давно доступна куча скоров, например
Очень бы хотелось сравнения по скорости и точности хотя бы с моделями iPavlov:
docs.deeppavlov.ai/en/latest/components/spelling_correction.html
Все значительно сложнее.
В лингвистике это называется «комитативной конструкцией» и все далеко не однозначно с «одноклассовостью» ее членов даже в русском языке, см. как минимум вот эту книжку.
> Для корректной проверки необходимо залить во все боты идентичные исходные данные.

Совершенно верно! Именно поэтому я и говорю о публичном датасете (в этом, в общем-то и состоит бОльшая часть его миссии) — и даю на него ссылку.

> А то, что моя концепция работоспособна, я не то что верю, я доподлинно знаю.

Вера — это здорово, но в анализе данных я предпочитаю ей цифры. Я тоже верил в чисто синтаксическую историю, пока не проиграл 25% лидерам на упомянутом выше соревновании.

А пока цифр нет — позвольте всё же считать отсутствие чего-либо выше синтаксиса не плюсом, а предубеждением разработчика, снижающим качество работы бота ).
К сожалению, если Вам бы предстояло работать с реальными пользовательскими запросами, то они обычно куда грязнее, чем тексты из прессы и др., там такие «некорректности» сплошь и рядом.
Поэтому боюсь, что для чатов Ваш бот был бы нежизнеспособен. Впрочем, такой цели, кажется, и нет, но думаю, что и пресса допускает некоторый процент «некорректности» в своем стиле. Язык вообще достаточно многоообразен ;-)
1) Да, насчет последнего я погорячился. Пока единственный ).

2) В вашей парадигме — кроме синтаксиса, действительно, ничего нет. Что не отменяет того, что у других чат-ботов бывают (векторные) семантические модели, онтологии, модели учета контекста и др. — иными словами, сущности семантического, а не синтаксического уровня.

3) И вот именно в связи с пунктом два цифры перформанса и приобретают особый интерес — действительно, пока никто не доказал, что ваш «синтаксический» подход хуже или лучше по качеству, чем любой другой.
Я подразумеваю под ними оценку качества работы бота. Например, на сколько вопросов он ответил верно, на сколько это лучше/хуже каких-то коробочных моделей (условной Алисы).

Поскольку, насколько я успел понять, Ваш бот «специализируется» в первую очередь на ответах на вопросы по тексту, можно было бы взять датасет и посмотреть качество работы на нем. Для русского, насколько мне известно, есть только один масштабный датасет на эту тему — см. задачу B отсюда.

Если бы вы прогнали своего бота по этим текстам и вопросам-ответам, то можно было бы понять, насколько ваше отрицание всего, что выше (и менее управляемо), чем синтаксис и морфология, сказывается на качестве работы модели.
Я бы выделил несколько направлений.

1) В модели BoW «банкомат съел карту» и «карта съела банкомат» — одинаковые вещи. Деревья помогут Вам их различить.
2) Вы можете использовать синтаксическую роль токена как метрику важности токена (условно, подлежащее важнее определения) и имплементировать веса в какой-нибудь классификатор.
3) Синтаксические правила и ограничения полезны в определении правильности грамматики фразы при порождении речи.
4) Наконец, в конкурсах типа «ответов на вопросы по тексту» синтаксические группы (их +- можно выделить на основании дерева) помогают выделить нужный кусок.
Не хватает цифр перформанса. Например, я пилил для сберовского конкурса-2016 «ответы на вопросы по тексту» примерно такую же штуку на синтаксисе. Проигрывает нейронкам, достаточно значительно.

Я как (бывший) лингвист как раз не сторонник следования нейронкам и др., но нельзя не признать, что есть ряд вещей, с которыми они справляются лучше.

Сейчас вы по сути переизобретаете синтаксический парсинг — штука полезная, на том же питоне, например, есть куча хороших инструментов под нее (см. мой последний пост), но боюсь, что на одном синтаксисе чат-бот далеко уехать не может в принципе
Под синтаксический парсинг эсперанто не нужно никаких нейронок, там все правилами пишется, это неинтересно
да, я под винду не пробовал, делал на маке все
а это прямо если релизы (https://github.com/ufal/udpipe/releases) брать?
Спасибо за отклик!

Ну, если сюда еще и технические детали впихивать, то текст совсем разбухнет. Целевая аудитория все-таки nlp-шники, которые что-то слышали про синтаксический парсинг, для них, думаю, техника ясна.

Если вкратце — весь пайплайн на питоне. UDPipe написан на плюсах, но есть питонская обертка. У удпайпа есть неплохой мануал, ссылка есть в тексте.
Стэнфорд — это не тот Стэнфорд, кстати, а вот этот (и тоже на питоне если что).
github.com/tdozat/Parser-v2
web.stanford.edu/~tdozat/files/TDozat-CoNLL2017-Paper.pdf

и в соревновании 2018 года уже третья версия использовалась
github.com/tdozat/Parser-v3
Правильный разбор — дательный. А по разбору UDPipe оказалось в предложном, см. выделенное в таблице жирным Case=Loc.
Тестилось все на синтагрусе, там есть и сложные кейсы, из прессы и художественной литературы.

Дело не в том, что он простейший, а в том, что такой парсер куда лучше понимает веб-тексты — и несильно проигрывает дефолтному в понимании грамотных текстов (хотя казалось бы).
А. Ну вероятность такого разбора любым теггером стремится к нулю, пожалуй.
RNNMorph вот не справился даже с подсказками — для «Вася, ушли директора!» все равно отдает как форму от «уйти».
не понял. Форма «ушли», очевидно, не является формой повелительного наклонения.
Повелительное наклонение от «уйти» — это «уйди» или «уйдите».

По поводу замен на концевую точку. UDPipe-токенизатор (равно как и прочие описанные в посте токенизаторы) берут на вход сырой текст и токенизируют его, ничего не меняя. Так что меняться ничего не будет даже в предложении типа «директор, уйди».
вообще да )
хотя второй все-таки ненормативный, вряд ли такое будет в обучающем корпусе
Ну вот я раскрыл, что мог.
Разработку глянул, спасибо, жаль, нет никаких деталей — это обученная модель? Если да, то как обучалась? Или просто сборник примеров из синтагруса, размеченных руками?
Отдельно обидно, что разметка осталась из синтагруса в исходном формате разметки, хотя можно воспользоваться версией синтагруса в conllu
Все проценты (не)верного распознавания указаны в таблице выше (последней таблице выше).

А вообще — зависит от того, как с пунктуацией в ваших текстах и соответствует ли она тому, на чём происходило обучение.
Если вы обучаетесь на правильных текстах, а работаете на «неправильных» (где пунктуации нет или где она расставлена неверно, это, к сожалению, в веб-текстах происходит сплошь и рядом) — то числа показывают, что в таком случае пунктуация скорее мешает из-за несоответствия трейна и теста.
Если же вы работаете на правильных текстах — то она будет вам помогать, опять же см. ту же табличку.

Спасибо, отличный вопрос. Я так понимаю, речь идёт о конкретном примере — количественный ответ дан в табличке.
Во-первых, таких примеров, как следует из таблички, не то чтобы много, так что это немножко утрированный пример.
Во-вторых, в отсутствие пунктуации наш главный помощник — порядок слов. Можно надеяться, что выбор парсером того, что все-таки нельзя делать, будет основан на том, в каком порядке обычно идут зависимые от «нельзя» инфинитивы в обычных текстах.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity