Старший научный сотрудник института искусственного интеллекта AIRI Илья Макаров и выпускница ВШЭ Анастасия Ященко описали алгоритм автоматического анализа литературных произведений на основе ИИ. Исследователи проанализировали системы персонажей книг Джона Рональда Руэла Толкина.
Алиса поможет разработчикам найти объекты в запросах пользователей. NER в Диалогах
Сегодня мы расскажем читателям Хабра о распознавании именованных сущностей (Named-entity recognition; NER) и новых возможностях для разработчиков навыков.
Мы верим, что будущее за голосовыми интерфейсами. Уже сейчас во многих случаях пользователи предпочитают использовать голос, а не экранную клавиатуру. Например, при управлении автомобилем. Или для поиска быстрых ответов на простые вопросы. Или для игры в «города» лёжа на диване. Но чтобы таких сценариев становилось всё больше, простого распознавания голоса в текст недостаточно.
NLP. Основы. Техники. Саморазвитие. Часть 1
Привет! Меня зовут Иван Смуров, и я возглавляю группу исследований в области NLP в компании ABBYY. О том, чем занимается наша группа, можно почитать здесь. Недавно я читал лекцию про Natural Language Processing (NLP) в Школе глубокого обучения – это кружок при Физтех-школе прикладной математики и информатики МФТИ для старшеклассников, интересующихся программированием и математикой. Возможно, тезисы моей лекции кому-то пригодятся, поэтому поделюсь ими с Хабром.
Поскольку за один раз все объять не получится, разделим статью на две части. Сегодня я расскажу о том, как нейросети (или глубокое обучение) используются в NLP. Во второй части статьи мы сконцентрируемся на одной из самых распространенных задач NLP — задаче извлечения именованных сущностей (Named-entity recognition, NER) и разберем подробно архитектуры ее решений.
Как мы ИИ учили новости понимать
Все мы хотим быть в курсе происходящего поэтому часть своего времени тратим на чтение новостей, и сейчас все чаще новости приходят не из новостных сайтов или газет, а из каки-то телеграм-каналов. В итоге, через какое-то время, оказывается, что ты подписан на десяток(а может и на десятки каналов), которые постоянно что-то пишут – как следствие, тратится либо огромное количество времени на то, чтобы "что-то не пропустить". Но если посмотреть – большинство из них пишут примерно об одном, просто по-разному. Так и пришла идея научить ИИ отбирать новости, которые действительно являются главными. Конечно, есть разные ТОП-ы, вроде Яндекс.Новостей или что-то вроде итогов дня от какого-то уважаемого СМИ, но везде есть нюансики. В этой статье я постараюсь описать эти нюансики и что у нас получилось, а что нет.
Программируемые NER (Named Entity Recognition) компоненты
В данной заметке мы продолжим говорить о NER компонентах и попытаемся определить условия, в которых нам начинает недоставать функционала стандартных компонентов и стоит задуматься о программировании своих собственных.
В подавляющем большинстве случаев для поиска пользовательских сущностей достаточно найти и настроить какой-либо уже существующий компонент, сконфигурировать или обучить его модель. Лишь иногда, в достаточно специфичных ситуациях, возможностей существующих решений оказывается недостаточным, и нам приходится начинать программировать. Но выделение ресурсов, кодирование, тесты, поддержка - все это стоит затевать лишь когда без всего этого просто не обойтись.
NLP (Natural Language Processing) для обращений граждан. Эксперимент на реальных данных
Когда собираешься строить систему обработки обращений граждан, неплохо бы автоматизировать и работу с текстами. Часть операций по атрибутированию, классификации и аннотированию наверняка можно переложить на машину. Но как определить, какие задачи автоматизации поддаются хорошо, а какие - не очень? В поисках ответа на этот вопрос мы попытались понять, что может предложить рынок с точки зрения продуктов, которые можно было бы интегрировать в систему документооборота white-label и провели исследование на реальных данных.
Yargy-парсер и библиотека Natasha. Извлечения структурированной информации из текстов на русском языке
В 2020 году библиотека Natasha значительно обновилась, на Хабре опубликована статья про актуальную версию. Чтобы использовать инструменты, описанные в этом тексте, установите старую версию библиотекиpip install natasha<1 yargy<0.13
.
Раздел про Yargy-парсер актуален и сейчас.
Есть стандартная задача извлечения именованных сущностей из текста (NER). На входе текст, на выходе структурированные, нормализованные объекты, например, с именами, адресами, датами:
Задача старая и хорошо изученная, для английского языка существует масса коммерческих и открытых решений: Spacy, Stanford NER, OpenNLP, NLTK, MITIE, Google Natural Language API, ParallelDots, Aylien, Rosette, TextRazor. Для русского тоже есть хорошие решения, но они в основном закрытые: DaData, Pullenti, Abbyy Infoextractor, Dictum, Eureka, Promt, RCO, AOT, Ahunter. Из открытого мне известен только Томита-парсер и свежий Deepmipt NER.
Я занимаюсь анализом данных, задача обработки текстов одна из самых частых. На практике оказывается, что, например, извлечь имена из русского текста совсем непросто. Есть готовое решение в Томита-парсере, но там неудобная интеграция с Python. Недавно появилось решение от ребят из iPavlov, но там имена не приводятся к нормальной форме. Для извлечения, например, адресов («ул. 8 Марта, д.4», «Ленинский проезд, 15») открытых решений мне не известно, есть pypostal, но он чтобы парсить адреса, а не искать их в тексте. C нестандартными задачами типа извлечения ссылок на нормативные акты («ст. 11 ГК РФ», «п. 1 ст. 6 Закона № 122-ФЗ») вообще непонятно, что делать.
Год назад Дима Веселов начал проект Natasha. С тех пор код был значительно доработан. Natasha была использована в нескольких крупных проектах. Сейчас мы готовы рассказать о ней пользователям Хабра.
Natasha — это аналог Томита-парсера для Python (Yargy-парсер) плюс набор готовых правил для извлечения имён, адресов, дат, сумм денег и других сущностей.В статье показано, как использовать готовые правила из Natasha и, самое главное, как добавлять свои с помощью Yargy-парсера.
Визуализация новостей рунета
Представьте себе, что вы поспорили с друганом, что было раньше —
Как научить машину понимать инвойсы и извлекать из них данные
Распознавание дат, написанных естественным языком, средствами Python3
Появилась вторая идея — искать в переписке даты и вставлять их в техническое задание, документы, автоматически.
Однако, люди редко пишут в чатах и мессенджерах даты так, чтобы их легко мог распознать алгоритм.
NLP. Основы. Техники. Саморазвитие. Часть 2: NER
Проект Natasha. Набор качественных открытых инструментов для обработки естественного русского языка (NLP)
Проект подрос, библиотека теперь решает все базовые задачи обработки естественного русского языка: сегментация на токены и предложения, морфологический и синтаксический анализ, лемматизация, извлечение именованных сущностей.
Для новостных статей качество на всех задачах сравнимо или превосходит существующие решения. Например с задачей NER Natasha справляется на 1 процентный пункт хуже, чем Deeppavlov BERT NER (F1 PER 0.97, LOC 0.91, ORG 0.85), модель весит в 75 раз меньше (27МБ), работает на CPU в 2 раза быстрее (25 статей/сек), чем BERT NER на GPU.
В проекте 9 репозиториев, библиотека Natasha объединяет их под одним интерфейсом. В статье поговорим про новые инструменты, сравним их с существующими решениями: Deeppavlov, SpaCy, UDPipe.
Извлечение троих: Как найти пасхалки в книгах Стивена Кинга с помощью NLP алгоритмов
У нас было 17 романов Стивена Кинга, много свободного времени, навыки анализа данных Python и безудержная любовь к поиску пасхалок. Вот, что из этого вышло.
Смотрим на Санкт-Петербург сквозь призму публикаций в соцсетях — базовый анализ популярных локаций
Магистры, аспиранты и сотрудники Института дизайна и урбанистики ИТМО рассказывают, как можно изучить публичный образ той или иной локации. Для Санкт-Петербурга они проанализировали более пяти млн публикаций из популярной в России соцсети с соответствующими геотегами за 2018, 2019 и 2020-й.
В рамках проекта определили: (а) о каких объектах пишут чаще всего, (б) какие организации и достопримечательности наиболее популярны, (в) какие тематики можно выделить и как они распределены по территории, (г) к каким тематикам относятся популярные объекты. Поговорим о первой половине вопросов (а, б), а сопоставление с тематической окраской обсудим в следующий раз.
NER для русского языка в Spacy 3: удобно и легко
Славянские языки, в том числе и русский, считаются довольно сложными для обработки. В основном, из-за богатой системы окончаний, свободного порядка слов и других морфологических и синтаксических явлений. Распознавание именованных сущностей (далее, NER) представляется трудной задачей для славянских языков, где синтаксические зависимости часто маркируются морфологическими чертами, нежели определенным порядком словоформ. Поэтому NER сложен для этих языков в сравнении с германскими или романскими языками.
Как повысить интеллект систем машинного перевода и отучить путать продукты?
Всем привет!
В ходе обсуждения возможных сценариев применения представления смысла документа через действия нам сообщили интересную проблему, с которой сталкиваются пользователи общедоступных систем машинного перевода при работе с не англоязычными текстами. Например, фраза
«Груша мне понравилась больше, чем кислое яблоко, так как она была слаще» переводится на немецкий язык одной из самых известных он-лайн систем так:
«Ich mochte die Birne lieber als den sauren Apfel, da er süßer war»
(Мне больше понравилась груша, чем кислое яблоко, так как оно было слаще), что нарушает смысл и делает яблоко вдобавок еще и сладким – «er süßer war». Разбор проблемы и потенциальное решение - далее.
BERT в задачах кибербезопасности
В настоящее время объем данных в домене кибербезопасности быстро растет. Однако большая его часть представляет собой текстовые неструктурированные данные, которые не подходят для непосредственного использования автоматизированными системами безопасности. Автоматическая и real-time трансформация информации о защищенности системы из неструктурированных текстовых источников в структурированные представления может помочь аналитикам лучше отслеживать ситуацию кибербезопасности. Существует много подходов к решению данной проблемы и некоторыми из них являются модели, основанные на трансформерах, во главе с BERTом. В этом эссе я хочу пролить свет на магию этих четырех букв в контексте защиты информации.
Инструменты для решения NER-задач для русского языка
Зачастую приходится работать с большими объемами документов, к примеру, исполнительными листами, заявлениями, договорами, из текстов которых нам необходимо извлечь весьма конкретную информацию: ФИО, даты рождения, наименования должности, паспортные данные, адрес, ИНН и наименование компаний, даты подписания документов и так далее. Всё это относится к задаче распознавания именованных сущностей (NER). Какие инструменты могут помочь нам в решении данной задачи для русского языка?
Пожалуй, первое что приходит в голову Data Scientist’у, когда речь идет о NLP или конкретно NER-задачах — это проекты DeepPavlov. Немного углубимся в данную тему, разберем все по порядку.
DeepPavlov — это фреймворк (open source), который помогает в разработке различных голосовых ботов, соответственно, решая различные NLP задачи.
На вход подается непредобработанный (регистры, знаки и т.д. сохранены) текст, а на выходе мы хотим увидеть, так называемые, спаны — фрагменты текста, с которыми уже можно работать (например, отнести к определенной категории).
Искусство распознавания: как мы разрабатывали прототип AutoML для задачи Named Entity Recognition
Процессы и продукты банка всё время совершенствуются, и в какой-то момент приходит понимание, что рутинные операции нужно автоматизировать. Так случилось и у нас: возникла необходимость в автоматизации обработки текстовой информации. Это не только банковская тенденция — во многих сферах бизнеса сейчас растёт спрос на подобные решения, поэтому мы подумали, что хабровчанам тоже могут быть интересны наши изыскания в этой сфере. Так что сегодня расскажем о том, как работает наш прототип AutoML для распознавания именованных сущностей (named entity recognition, NER). Ну и о том, какие результаты в итоге показала обученная модель.
Разметка именованных сущностей в Label Studio
В предыдущей статье мы уже подробно рассмотрели процесс разметки семантической сегментации в CVAT. Сейчас я подробнее расскажу по NER-разметку в другом популярном open source инструменте Label Studio
Предупреждаю, статья в первую очередь направлена на новичков, которые делают первые шаги в разметке данных. Как и в прошлый раз мы шаг за шагом пройдем путь от установки и настройки проекта до экспорта уже размеченного датасета.
В процессе будем подробнее останавливаться на нюансах связанных с извлечением именованных сущностей и рекомендациях из личного опыта.