Как стать автором
Обновить

Комментарии 9

Очень интересный обзор. Спасибо!
Очень годная статья, ушла в закладки!
UPD: Большой плюс DeepPavlov в том, что модель можно доучить, добавив свои собственные классы. Но нужно понимать, что для этого потребуется размеченный датасет и ресурсы на обучение.
Как обзор — хорошая статья. Но сравнивать на датасете из 10 записей — это неправильно.
Есть датасеты для сравнения, и есть бенчмарки.
На русском бенчмарки есть на github.com/natasha/naeval, там же упомянуты датасеты.
Чисто из любопытства прогнал тестовый текст на русском из этой статьи через nrlpk. Результат:

00 копеек
01.05
10.01.1970
110 млрд
8-000
www.sobyanin.ru
ак47
алтуфьевское шоссе д 51
ваз2107
власть москвы
втб24
город санкт-петербург, ул крузенштерна, дом 5/1а
иванов костантин петрович
мпз
мэра города сергея собянина
подпоручик кижей
рф

Все детали на github
Меня далеко не очень удовлетворило в результате и есть над чем подумать, НО…

Меня мучают два вопроса, если автор статьи сможет их разъяснить, я был бы очень признателен:
1. Для качественного результата в задаче NER, нужна предварительная качественная NER разметка. Причем, она должна быть не просто качественной, а ещё и обширной, иначе по многим объектам не будет идентификации, а по многим будут неоднозначности, или придется глубоко учитывать контекст, а это уже совсем другой уровень (или класс) задачи. К примеру плохая или отсутствующая разметка, как например в моем случае не сможет дать качественный ответ обоих случаях на «мера города Сергея Собянина» и «главы поселка максима Горького». В моем случае «мера города Сергея Собянина» идентифицировался как адрес. Но если уже будет качественная NER разметка, то зачем нужен ИИ для решения именно NER задачи?
2. Качество токенизации сложных текстов напрямую зависит от того насколько используются предварительно выделенные, размеченные и идентифицированные сущности и формы сокращений в них. При отсутствии такой информации, токенизация по предложениям. А дальше по словам пойдет некорректно, и как следствие в той же задаче NER появятся неверные (а точнее будет отсутствовать верные) значения. И здесь снова тот же вопрос — где здесь место ИИ?
1. качественная разметка будет на трейн-сете, а на тест-сете (и в продакшн-условиях) откуда она у вас возьмётся?
2. качественная токенизация — отдельная задача, которая решается полностью аналогично: датасет для токенизации и алгоритм или нейросеть для токенизации.
Отдельно по терминам:
— нейросети — это что-то типа «интуиции», когда человек, не задумываясь, выделяет ответ.
— ИИ — это обычно что-то типа аналитики, на текущем уровне развития типа эвристик, которые с результатами работы этой интуиции имеют дело. В смысловых БД там копаются или ещё как проверяют информацию. Например, знает, что у «города» нет «меры».
Если вы тоже так определяли эти термины, то ответ тогда простой: нейросеть делает первоначальную разметку и получает таким образом приближённый результат, а ИИ исправляет ошибки в ней, комбинируя разные нейросетки и их результаты вместе.
Я имею представление, как они работают.
У меня вопрос был в другом. Зачем их применять вот прямо везде, где ни попадя?

Если уже есть качественная разметка по NER — зачем мне нейросеть учить, когда можно после токенизаци просто состыковать слова в лоб + биграммы + n-граммы и выбрать с наилучшим результатом. По ресурсам это кратно быстрее и кратно менее затратно. В чем глубина замысла?

С «мерой», это моя орфо ошибка — по тексту если посмотрите выше, там МЭР — отсюда и был вопрос как ИИ различит «мэра города Сергея Собянина» — читай ФИО и «главу поселка Максима Горького» — читай ГЕО.

И Вы можете дать пример токенизации, которая работает на ИИ? Т.е. не алгоритмами и условиями токенизацию делают по предложениям и словам, а именно через обученную нейронку (под капотом)?

И, если у Вас для NER задачи, качественная разметка будет только на трейне, то Ваш трейн должен быть по размерам и охвату сопоставим со всем будущим продакшином, иначе вы рискуете получать результат с вероятностями ниже приемлемых и будете вынуждены его брать в работу, за неимением иного. Смотрите мой пример выше в этом комменте.
Когда речь идет просто о сопоставлении или предсказании последовательности — это одна задача и да, зависимости он определяет гораздо лучше любого алгоритма и уж точно лучше человека, НО — когда речь идет о точных понятиях, тут всё куда сложнее.

Вы результаты выше в статье видите — они Вам нравятся? Лично мне — нет, кроме PullEnti

И — ИИ не знает, что у города нет меры, просто статистика их совпадений ниже других вариантов, что по факту, для определенных контекстов может стать ошибкой.
>С «мерой», это моя орфо ошибка — по тексту если посмотрите выше, там МЭР — отсюда и был вопрос как ИИ различит «мэра города Сергея Собянина» — читай ФИО и «главу поселка Максима Горького» — читай ГЕО.
Очень просто — знать надо, где фамилия, где отчество, и какие названия городов и посёлков бывают в РФ. Есть словарь такой для ГЕО, ФИАС называется.
Но вообще тут есть ещё одно значение — «город (чей?) Сергея Собянина», т.е. принадлежность.
Так что в этом случае весьма сложная будет разметка для NER. Я думаю, это нормально, если бы модель просто разметила ФИО в обоих случаях.

>И Вы можете дать пример токенизации, которая работает на ИИ? Т.е. не алгоритмами и условиями токенизацию делают по предложениям и словам, а именно через обученную нейронку (под капотом)?
Вот «методами ИИ» я бы как раз назвал способы совмещения правил и предсказательных моделей. Нейронки != ИИ.
В spacy есть токенизация частично нейронкой. Полная посимвольная токенизация будет скорее всего немного медленной (или быстрой, но немного некачественной), а вот для правильной работы с дефисами, тире и точками нейронку можно сделать (и делают).
>И, если у Вас для NER задачи, качественная разметка будет только на трейне, то Ваш трейн должен быть по размерам и охвату сопоставим со всем будущим продакшином, иначе вы рискуете получать результат с вероятностями ниже приемлемых и будете вынуждены его брать в работу, за неимением иного. Смотрите мой пример выше в этом комменте.
Вот только это типичный случай в реальной жизни, когда данных для распознавания много, а тренировочных данных мало (а возможностей для дообучения вообще почти нет)…
Возможно, вы не сталкивались с данным режимом, но он намного более типичен, чем ваш режим.

>зачем мне нейросеть учить, когда можно после токенизаци просто состыковать слова в лоб + биграммы + n-граммы и выбрать с наилучшим результатом
Так это вы маленькую нейронку по сути и сделали. В нейросети ровно та же статистика и накапливается.
>Вы результаты выше в статье видите — они Вам нравятся? Лично мне — нет, кроме PullEnti
А теперь посмотрите на результаты PullEnti на Naeval: github.com/natasha/naeval#ner
они вам нравятся? Полноты не хватает словарным алгоритмам, и для всех неоднозначных случаев правил не напасёшься. Нейронка для парсинга могла бы улучшить результаты PullEnti.
А для nrlpk (дайте ему более запоминающееся название, пожалуйста!) проблема больше в специфичности. Вы иногда выделяете даже отдельные лишние слова ( 00 копеек, власть москвы ), или вот выделили «8-800». Да ещё и не можете правильно сказать класс, а многие из этих библиотек выделяют только определённые классы, поэтому ответов намного меньше, чем могло бы быть.
Так что возьмите датасет, посчитайте F1 меру вашего решения скажем на PER или на LOC и сравните с аналогами.

>И — ИИ не знает, что у города нет меры, просто статистика их совпадений ниже других вариантов, что по факту, для определенных контекстов может стать ошибкой.
Это просто вопрос терминологии. Если у вас N-gram LM, то для вас это статистика, а вот если опираетесь на knowledge base, то это уже можно называть знанием.
>а вот для правильной работы с дефисами, тире и точками нейронку можно сделать (и делают).

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

>Возможно, вы не сталкивались с данным режимом, но он намного более типичен, чем ваш режим.

Но ведь такая нейросеть должна заведомо получить низкий рейтинг доверия? Хотя да, я только неделю назад читал статью о том, что критериев оценки качества модели на сегодня не существует и это является огромной проблемой с доверием к данным, получаемым от ИИ, особенно с шибко многокритериальной оценкой.

Мой результат получен вообще без нейросети, он на ML и алгоритмах, и ИИ я пока даже не хочу прикручивать, потому что, на мой взгляд, надо сперва какую то доп. разметку сделать более расширенную и более качественную, потом новую качественную частотность получить, потом ещё прогон переразметки сделать — а вот уже потом, тренировками заниматься.

Я совсем недавно сталкивался с прототипом промышленного (для промышленных предприятий) решения, которое обучалось на малом объеме данных, а остальные были получены синтетическим путем. Видел результат, видел прогноз от машины по результатам — это всё очень печально и по моему просто трата времени, хайп какой-то.

>Так это вы маленькую нейронку по сути и сделали. В нейросети ровно та же статистика и накапливается.

Только ресурсов для обучения требует больше и постоянного пересмотра модели с учетом накопления данных — разница получается более, чем заметной, а вот результат, не очевиден

>отдельные лишние слова ( 00 копеек, власть москвы ), или вот выделили «8-800»

Для nrlpk это как раз и есть СУТЬ того, для чего он создан.

Это все остальные задачи и данные, коих на 90% больше, чем требовавшегося результата — являются сопутствующими данными для данной задачи. И все они как раз классифицированы, причем однозначно и понятно как, более того, каждый из них раскрыт по токенам, которые также классифицированы и связаны с выражением.

Это позволяет восстанавливать текст уже более насыщенный данными, чем исходный — причем данными и взаимосвязями, куда большими чем могли бы дать просто сами токены.

Там не 8-800, а 8-000 — это по тексту было 8 000 — разорванное числовое значение, которое nrlpk соединил в цельное выражение классифицировав его как NUSR (числовое выражение), а каждый его элемент в отдельности классифицировал как — NUMR (число). Смотрите детальные данные на github там все подробности как на ладони.

>Это просто вопрос терминологии. Если у вас N-gram LM, то для вас это статистика, а вот если опираетесь на knowledge base, то это уже можно называть знанием.

назвать можно, но знанием оно от этого не становится. Мы же понимаем, что один N-gramm алгоритм не решает ни одной задачи NLP.
Я помню ваше решение, да.
Для выделения сущностей оно норм. А вот для классификации полученных сущностей не подходит, и без нейронки или любого другого ML-алгоритма классификация зачастую плохо работает.
Граница тут проходит по некоторму уровню сложности задачи: если правил мало, и исключений из них мало, то эвристики на правилах хорошо работают. Если же правил много, или есть частые исключения — то нужен ML-алгоритм.
Решать только простые задачи, и тратить на них от месяца до года — это нормальный путь. Просто теперь появился другой путь, вот и всё. Он не хуже, не лучше, он просто есть.
Аналогично касательно проблемы решения задач на 80%. Кого-то это устраивает, кого-то нет — в каждой задаче есть какой-то приемлемый уровень качества. И в некоторых случаях эти условные 80% могут дать только нейронки, иногда — оба типа алгоритмов, очень редко когда только правила. Но вот правила могут ещё и выиграть по скорости при сравнимом качестве, или же может не быть размеченных данных в достаточном количестве. Тогда люди возьмут алгоритм на правилах.
>надо сперва какую то доп. разметку сделать более расширенную
Ну вот этого бы очень хотелось мне как специалисту по работе с данными. Без тестовой разметки не сравнить решения, да и не понять, где у вашего решения ошибки, и насколько они серьёзные.
Хотя у вас разметка и была, но вот метрики в виде единой цифры я у вас не припомню.
>Смотрите детальные данные на github там все подробности как на ладони.
И вот этого бы как раз хотелось избежать, чтобы приходилось смотреть какие-то подробности, чтобы понять, что вообще происходит. Для этого придумывают какие-то стандартные метрики и способы сравнения разных решений.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории