Системы на базе анализа естественного языка

Недавний подъём интереса к системам АI/ML был вызван появлением неожиданно успешных LLMs типа ChatGPT и GPT-4, а также open source моделей, типа LLaMA, опубликованной в феврале 2023 года. Хотя это только одна из многих областей AI/ML, именно в этой области произошли наиболее важные и наиболее обсуждаемые изменения. Наша компания имеет большой опыт и глубокую экспертизу в области систем на базе обработки естественного языка. За последние годы были реализованы десятки проектов, среди которых можно выделить:

Доменно-специфичные поисковые вопросно-ответные системы

ChatGPT был запущен в конце 2022 года и привлёк внимание своими широкими возможностями: написание кода, создание текстов, возможности перевода, демонстрируя удивительные возможности отвечать на любые человеческие вопросы, зачастую на уровне не хуже эксперта в определенной области. Получить ответы на многие вопросы теперь стало гораздо проще и быстрее. Не нужно искать необходимую информацию среди сотен страниц, выдаваемых поисковыми системами по определенным запросам. Данная модель (Generative Pre-trained Transformer) - обучен на сотнях миллионов текстов различной тематике, специфики и языков. Тем не менее, еще задолго до появления ChatGPT возникала потребность в системах, способных быстро найти ответ в определенной узкой области, в технической документации, инструкции, руководстве пользователей. В таких случаях, к сожалению, ChatGPT будет бесполезным (конечно, он просто может придумать ответ, но это будет не корректно). Наша NLP-команда принимала участие в создании таких систем, в частности:

  • Веб скраппинг (web scraping) с использованием LLM
    Позволяет “интеллектуально” собирать различную информацию из интернета, агрегировать ее в заданный формат (csv, json и другие), находить различный контент по определенным параметрам.
  • Структурированное извлечение данных из документов (Named Entity Recognition)
    Технология NER (Named Entity Recognition) — «распознавание именованных сущностей» позволяет извлекать информацию из различных источников, например, контактные данные, геолокацию, определенные слова и характеристики объектов, любую специфическую информацию. За одной задачей NER, на самом деле, стоит две: 1) обнаружить, что какая-то последовательность слов — это именованная сущность; 2) понять, к какому классу (имя человека, название организации, локация, время и т.п.) эта именованная сущность относится.
  • Вопросно-ответная система с использованием коллекции документов, RAG (Retrieval-Augmented Generation)
    Локальный аналог ChatGPT по специализированной документной базе. Разрабатываем, используя "generic" LLM, обученную на большом массиве данных и дополняя решение поиском по базе знаний, специфичной для определенного домена. Подходит, например, если необходима система помощи для работы с внутренней базой знаний компании. В качестве документной базы могут быть различные типы информации, не только текст. Можно в базу добавить картинки, звук и таблицы. Как отдельный пункт можно добавить RAG с использованием интернет браузера (вместо коллекции документов - интернет). Пример - BingChat.
  • Специализированные диалоговые агенты / чат боты (ChatGPT )
    Finetuning LLM модели, когда необходима модификация поведения или стиля ответов для специализированной области знаний. RLHF для адаптирования модели к человеческим предпочтениям. Примером может быть система генерации доменов, где, предположим, мы собрали много человеческого фидбека о том, какой домен из сгенерированных лучше, и на таком наборе данных сделали Reinforcement learning from human feedback). В целом тема очень популярная и широко используемая, в Яндексе, например, мы так делали для адаптирования переводов под человеческие предпочтения
  • Чат Боты с поддержкой базы знаний (knowledge graph), способные вносить знания в нее, и использовать информацию выходящую за рамки контекстного окна
    В случае, если дополнительно необходимо вносить фактические знания в граф, чтобы помнить долгосрочные зависимости и легко восстанавливать историю. Кроме того, составление такого графа может быть полезно для персонализированного анализа для каждого пользователя (можно имплементировать рекомендательную систему)
  • Суммаризация
    Выделение нужной информации из больших текстов и неструктурированных документов в компактный вид, резюме, краткое содержание, выделение основных тем, положений и смысла. В качестве примеров – сервис для генерирования краткого содержания по субтитрам из ютуб видео или сервис для автоматического составления meeting notes после важной видеоконференции
  • Персонализированный copilot
    Помощник, который помогает писать не только программный код, но и техническую документацию, контракты, договоры и т.д.. Аналог AI помощников, например в Notion, Todoist, и, вероятно, скоро появится в многих других приложениях. Можно использовать таких помощников для более быстрого написания специализированных текстов (в том числе и кода).
  • Автоматический перевод
    Может быть частью сервиса. Например, для банковского приложения можно облегчить жизнь своему call-центру. В него могут приходить вопросы на разных языках и разного уровня структуризации. Можно комбинировать с пунктами 2, 5, 6, 7, 9 для создания такого сервиса эффективно. Дополнительно можно сделать модели перевода с любых языков
  • Классификация, тегирование
    Любой анализ текста, классификация по тематике, выделение сущностей, тегов, анализ тональности, стилю, проверка документов на соответствие определенным параметрам. В частности, такие системы используются для анализа ответов операторов колцентра (вежливо, грубо), отзывов и кометариев к статьям (положительный, отрицательный, нейтральный)
  • LLM агенты (пример AutoGPT)
    Перспективная область развития генеративных моделей. Microsoft описывает AutoGen как фреймворк для упрощения оркестровки, оптимизации и автоматизации задач, использующих языковые модели. Агенты могут быть настроены и дополнены с помощью внешних инструментов, которые позволяют им извлекать информацию или выполнять код.Такой совместный подход может привести к значительному повышению эффективности работы генеративных моделей. Например агента, который будет делать research (web_search, запись в файлы), агента который будет автоматически писать код (доступ к дебаггеру и stackoverflow например) и итеративно "улучшать" себя. Выглядит это, как реализованный шахматный бот, который анализирует ходы, разбирает их и дает советы или система, которая выявляет различные новостные фейки. LLM агенты = LLM с внешними инструментами + Chain of Thought Инструменты, такие как: поиск в интернете, wolfram, переводчик, калькулятор, пойти в базу данных, да что угодно в принципе Chain of Thought значит, что на каждом шаге модель "думает" какое действие ей сделать (использовать калькулятор или wolfram). Формат CoT примерно следующий: на каждом шаге модель генерирует Thought, Action (какой инструмент использовать, либо дать финальный ответ), ActionInput, затем генерируется Observation в зависимости от инструмента и процесс повторяется:
    Input: Who is Brad Pitt's girlfriend and what is her age in the power of 2? ——— Thought: I need to look up Brad Pitt's girlfriend on the internet. Action: web_search ActionInput: {"query": "Brad Pitts's girlfriend"} Observation: Ines de Ramon Thought: Now I know who is Brad Pitt's girlfriend. I need to find her age and take it to the power of 2. Action: web_search ActionInput: {"query": "Ines de Ramon age"} Observation: 30 Thought: Ines de Ramon is 30 years old, I need to take it to the power of 2. Action: calculator ActionInput: {"input": 30**2} Observation: 900 Thought: Now I am ready to give final answer. Action: final_answer ActionInput: {"input": "Brad Pitt's girlfriend is Ines de Ramon and her age to the power of 2 is 900"} —— Finished Chain ——- Output: "Brad Pitt's girlfriend is Ines de Ramon and her age to the power of 2 is 900"
  • Проверка документов
    Анализ и проверка документов по различным критерием, например соответствию закону страны, выявление сомнительных и подозрительных пунктов.
  • Голосовой помощник
    Находит необходимый ответ в технической документации даже на базе не четко поставленного вопроса (как правило пользователь не знает техническую терминологию)
  • Системы перефразирования текстов
    Системы перефразирования текстов (задача парафраза), когда необходимо, возможно в сжатом виде пересказать определенной статью, текст, заметку.

Подходы

  • LLM
    - это просто языковая модель, которая предсказывает следующий токен
  • Диалоговый агент (или чат-бот)
    - LLM, дообученная на диалоговых данных и рекурсивно предсказывающая следующее сообщение
  • RAG - LLM
    (не важно диалоговая или нет) с возможностью обращаться в базу знаний (гитхаб репозиторий, документация, интернет) и вытаскивать оттуда что-то полезное для генерации ответов
  • LLM с knowledge graph
    может, наоборот, вносить в базу знания, представленные в виде графа связей. Подходит для запоминания фактической информации типа «Париж - столица Франции». Это можно назвать подвидом RAG, но классически RAG это про коллекции эмбеддингов, как в примере с документацией. Это направление еще более новое и часто нетривиальное в решении.

Примеры проектов

Прогнозная система характиристик публикаций

  • Категория: NLP
  • Клиент: Life.ru
  • Дата: 2021
  • Детали: Подробнее

Классификация веб сайтов по категориям

  • Категория: NLP
  • Клиент: Segmento
  • Дата: 2022
  • Детали: Подробнее

Генерация доменных имен по описанию

  • Категория: NLP
  • Клиент: It.com
  • Дата: 2021
  • Детали: Подробнее

Поисковая информационная система (локальная LLM)

  • Категория: NLP
  • Клиент: Devprom
  • Дата: 2023
  • Детали: Подробнее

Специализированные системы поиска и вопросов и ответов

  • Категория: NLP
  • Клиент: ТВЦ
  • Дата: 2019
  • Детали: Подробнее