Как стать автором
Обновить
38.06
Рейтинг

Natural Language Processing *

Компьютерный анализ и синтез естественных языков

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Формы глаголов в английском языке

Алгоритмы *Natural Language Processing *
Recovery mode

Многие при изучении английского языка сталкивались с необходимостью заучивания форм вспомогательных глаголов в каждом из времен английского языка. Однако, эти вспомогательные глаголы формируются по довольно простому алгоритму, о котором я и расскажу в этой заметке.

Каждое из 16 времен (каждое время – в двух вариантах: действительный и страдательный залог) может быть охарактеризовано наличием или отсутствием каждого из следующих 5 признаков.

Читать далее
Всего голосов 5: ↑1 и ↓4 -3
Просмотры 5.2K
Комментарии 14

Новости

Частотный биграммный анализ на Python

Python *Natural Language Processing *
Из песочницы

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

Побродив по бескрайним просторам интернета, я с удивлением обнаружил, что исследований на такую базово простую, и в то же время локально востребованную тему преступно мало. Их буквально можно пересчитать по пальцам.

Для английского языка было найдено 12 более или менее достоверных анализов для базовой символьной частотности, из которых только 3 обладают внушительными базовыми выборками, и 5 биграммных анализов (парная частотность), из которых внушительной выборкой могут похвастать лишь 2.

Для русского и того меньше – 7 анализов базовой частотности, из которых 3 без указанного значения выборки, остальные же в пределах х×106 символов. Биграммных – 3, один из которых сделан по единственной книге «Преступление и наказание», а второй на 5.000 символов.

Несложно догадаться, как обстоит дело с менее популярными языками.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 2.4K
Комментарии 2

Создайте средство проверки на плагиат с помощью машинного обучения

Python *Машинное обучение *Natural Language Processing *
Перевод
Tutorial

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

Плагиат широко распространен в Интернете и в процессе обучения. При большом количестве контента иногда трудно определить, когда что-то стало плагиатом. 

Авторы, пишущие сообщения в блогах, могут захотеть проверить, не украл ли кто-то их работу и не разместил ли ее в другом месте. Учителя могут захотеть сравнить работы студентов с другими научными статьями на предмет скопированных работ. Новостные агентства могут захотеть проверить, не украла ли контент ферма их новостные статьи и не презентовала ли на это содержание как на свое.

Итак, как нам защититься от плагиата? Разве не было бы хорошо, если бы у нас было программное обеспечение, которое делало бы за нас всю тяжелую работу? 

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

Мы создадим Python Flask приложение, которое использует  Pinecone - службу поиска сходства для поиска возможного плагиата.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Просмотры 1.4K
Комментарии 4

Нейросети для Natural Language Inference: логические умозаключения на русском языке

Python *Семантика *Программирование *Машинное обучение *Natural Language Processing *

NLI (natural language inference) – это задача автоматического определения логической связи между текстами. Обычно она формулируется так: для двух утверждений A и B надо выяснить, следует ли B из A. Эта задача сложная, потому что она требует хорошо понимать смысл текстов. Эта задача полезная, потому что "понимательную" способность модели можно эксплуатировать для прикладных задач типа классификации текстов. Иногда такая классификация неплохо работает даже без обучающей выборки!

До сих пор в открытом доступе не было нейросетей, специализированных на задаче NLI для русского языка, но теперь я обучил целых три: tiny, twoway и threeway. Зачем эти модели нужны, как они обучались, и в чём между ними разница – под катом.

Читать далее
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 5.6K
Комментарии 3

Способы упрощения текстов: плюсы, минусы, альтернативы

Программирование *Машинное обучение *Natural Language Processing *

Сложно понять содержимое текста, если в нем встречается много незнакомых слов. Вариант решения этой проблемы – замена слов на близкие к ним по значению. Заменить слово на синоним можно, например, тремя способами – трансформером,  word2vec и его модификацией - RusVectores.

Зачем вообще упрощать текст? Есть, как минимум, три кейса, почему есть вероятность столкнуться с этой задачей:

- если перед вами текст на иностранном языке, то замена «сложного» слова на синоним поможет сориентироваться в сути предложения

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

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

Если говорить более предметно, то это задача делится на две: поиск сложного слова или словосочетания и поиска его замены, исходя из контекста. Давайте последовательно разберемся с каждой из задач.

Если кому-то интересно ознакомиться только с кодом, то welcome на github, там можно найти пошаговую реализацию.

Задача выделения сложных слов

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Просмотры 754
Комментарии 0

Мы опубликовали модель, расставляющую знаки препинания и заглавные буквы в тексте на четырех языках

Python *Big Data *Машинное обучение *Natural Language Processing *


Open In Colab


При разработке систем распознавания речи мы сталкиваемся с заблуждениями среди потребителей и разработчиков, в первую очередь связанными с разделением формы и сути. Одним из таких заблуждений является то, что в устной речи якобы "можно услышать" грамматически верные знаки препинания и пробелы между словами, когда по факту реальная устная речь и грамотная письменная речь очень сильно отличаются (устная речь скорее похожа на "поток" слегка разделенный паузами и интонацией, поэтому люди так не любят монотонно бубнящих докладчиков).


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


По этой причине мы бы хотели поделиться с сообществом системой, которая:


  • Расставляет заглавные буквы и основные знаки препинания (точка, запятая, дефис, вопросительный знак, восклицательный знак, тире для русского языка);
  • Работает на 4 языках (русский, английский, немецкий, испанский);
  • По построению должна работать максимально абстрактно на любом тексте и не основана на каких-то фиксированных правилах;
  • Имеет минимальные нетривиальные метрики и выполняет задачу улучшения читабельности текста;

На всякий случай явно повторюсь — цель такой системы — лишь улучшать читабельность текста. Она не добавляет в текст информации, которой в нем изначально не было.

Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 2.8K
Комментарии 12

Многозадачная модель T5 для русского языка

Python *Семантика *Программирование *Машинное обучение *Natural Language Processing *

Модель T5 – это нейросеть, которая уже обучена хорошо понимать и генерировать текст, и которую можно дообучить на собственную задачу, будь то перевод, суммаризация текстов, или генерация ответа чат-бота.

В этом посте я рассказываю про первую многозадачную модель T5 для русского языка и показываю, как её можно обучить на новой задаче.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 1.8K
Комментарии 4

Перплексия в языковых моделях

Блог компании Wunder Fund Программирование *Алгоритмы *Математика *Natural Language Processing *
Перевод

В этом материале я хочу сделать подробный обзор такого понятия, как «перплексия» («коэффициент неопределённости»), так как оно применяется в обработке текстов на естественном языке (Natural Language Processing, NLP). Я расскажу о двух подходах, которые обычно используются для определения этого понятия, и о тех идеях, которые лежат в основе этих подходов.

Читать далее
Всего голосов 27: ↑27 и ↓0 +27
Просмотры 2.1K
Комментарии 2

Моя маленькая помощь малым языкам

Python *Data Mining *Машинное обучение *Изучение языков Natural Language Processing *

Сложный был год: налоги, катастрофы, бандитизм и стремительное исчезновение малых языков. С последним мириться было нельзя...


На территории России проживает большое количество народов, говорящих более чем на 270 языках. Около 150 языков насчитывает менее 1 тысячи носителей, а за последние 20 лет 7 языков уже исчезло.


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


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


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


I. Извлекаем параллельный корпус


Для выравнивания двух текстов я написал на python'е библиотеку lingtrain_aligner. Код у нее открыт. Она использует ряд предобученных моделей, можно подключать и свои. Одной из самых удачных мультиязыковых моделей сейчас является LaBSE. Она обучалась на 109 языках. Так как соотношение текстов смещено в сторону популярных языков, то для них качество эмбеддингов (эмбеддингом называют вектор чисел применительно к данным, которые он описывает) будет лучше.


Colab


Попробовать извлечь корпус на нужном языке можно в этом Colab'e. Дальше пройдемся по шагам более подробно.


Установка


Установим библиотеку командой


pip install lingtrain_aligner
Читать дальше
Всего голосов 54: ↑54 и ↓0 +54
Просмотры 9.7K
Комментарии 90

Гид по предварительной обработке текста с помощью BERT

Машинное обучение *Natural Language Processing *
Recovery mode
Перевод

Современные NLP-приложения, например, для анализа настроения, поиска ответов на вопросы, смарт-ассистенты и т. п., используют огромное количество данных. Такой объём данных можно напрямую передать в модель машинного обучения. Почти все текстовые приложения требуют большой предварительной обработки текстовых данных — создания вложенных векторов с нуля с использованием счётчика частоты слов. На это уходит много сил и времени. Чтобы избежать этого, для всех сложных задач предварительной обработки используются модели Transfer Learning. Им нужно просто передать необработанный текст, об остальном модель позаботится сама.

Небольшая ремарка. Данный материал является переводом, и мы не несем ответственности за факты, представленные автором в первоисточнике.

Ключевая тенденция рынка чат-ботов — это работа над эффективностью в определении намерений пользователя. Для себя мы поставили данную задачу во главе узла: нам критически важно сделать продукт удобным и практичным именно для разработчиков. Поэтому мы сейчас думаем о том, чтобы внедрить BERT в нашу работу. Технология для нас новая, мы читаем и переводим очень много информации по данному вопросу. Наиболее интересными материалами мы поделимся с вами в рамках данного блога.

В этой статье мы обсудим один из фреймворков трансферного обучения — BERT. Рассмотрим, как использовать модуль предварительной обработки BERT, чтобы создавать вложения слов без усилий. Основные моменты, которые будут рассмотрены в этой статье...

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 2.2K
Комментарии 5

Читать не надо слушать: как работает распознавание речи ВКонтакте

Блог компании VK Программирование *Машинное обучение *Искусственный интеллект Natural Language Processing *

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

Автоматическое распознавание речи помогает преодолеть этот разрыв. Технология переводит устную речь в текст, а дальше с ним можно делать что вздумается: хоть выводить расшифровку, хоть передавать в поиск, хоть преобразовывать в команды для техники. Или, как в нашем случае, помогать пользователям общаться. 

Меня зовут Надя Зуева, я занимаюсь голосовыми технологиями ВКонтакте. В этой статье расскажу, как работает наше распознавание голосовых сообщений: какие модели мы используем, на каких данных их обучаем и какие оптимизации применили для быстрой работы в проде. 

Читать далее
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 7.2K
Комментарии 33

Обработка русского языка на Java

Поисковые технологии *Программирование *Java *Kotlin *Natural Language Processing *
Tutorial

Рассказ пойдет об одной новой, общедоступной Java/Kotlin библиотеке, для работы с русским языком. Она позволяет получить исходные формы + морфологическую информацию для большинства слов русского языка. Статья предназначена для тех, кто создает ботов, обрабатывает сообщения и занимается поиском. Для справки, ключевое отличие лемматизации от стеммизации (урезания до нормализованной формы) состоит в том, что лемма удовлятворяет правилам языка, например для слова "яблоками" леммой будет "яблоко", а не просто урезанный корень. Лемма может быть и более сложной, например для слова люди, начальная форма – человек. В этой статье мы рассмотрим способ быстрого извлечения такой информации из морфологического словаря.

Запустить процесс
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 4.8K
Комментарии 13

Новый запуск курса Natural Language Processing

Блог компании Open Data Science Блог компании Huawei Машинное обучение *Искусственный интеллект Natural Language Processing *

TL;DR: Этой осенью сообщество Open Data Science и компания Huawei делают новый запуск курса. Регистрироваться на сайте ODS.ai

посмотреть, что внутри
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 4.6K
Комментарии 7

Как мы фронтиры науки с помощью тематического моделирования искали

Блог компании Сбер Машинное обучение *Искусственный интеллект Natural Language Processing *

Некоторое время назад перед нашей NLP-командой была поставлена необычная задача: построения системы определения фронтиров науки. Некоторые из нас до постановки задачи ни разу даже не слышали слово «фронтир», и мы начали с того, что стали разбираться, что оно значит. Буквальное историческое определение слова frontier – это граница между освоенными и неосвоенными поселенцами свободными землями на Диком Западе. Естественно, от этого буквального определения нам была интересна только часть про границу между освоенным и неосвоенным, она же «передний край науки». Получается, перед нами была поставлена задача автоматически определить, где проходит этот передний край.
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 1.2K
Комментарии 1

Распознаем речь в Авроре

Блог компании Открытая мобильная платформа Разработка под Linux *Natural Language Processing *

Аврора, созданная во многом с прицелом на корпоративное использование, часто используется в не совсем привычных для нормального человека условиях. Когда мобильное устройство — корпоративное, а передаваемая информация имеет не только ту ценность, которую охраняет закон о персональных данных №152-ФЗ, но и коммерческую составляющую, — на передний план выходит конфиденциальность и возможность обрабатывать данные, не отходя от кассы.

Пример, о котором мы говорим сегодня, — распознавание речи — сам по себе имеет несколько приложений. Их можно условно разделить на две группы: где важна только суть, а сам текст не столь важен (например, команды для переключения режимов работы устройства), и где важен именно текст как таковой (транскрибирование аудио).

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 1.2K
Комментарии 3

Распознавание и анализ речи с помощью библиотеки SPEECH RECOGNITION, PYAUDIO и LIBROSA

Python *Программирование *Машинное обучение *Natural Language Processing *

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

Если простыми словами скрытую марковскую модель можно объяснить на примере.

Читать далее
Всего голосов 8: ↑5 и ↓3 +2
Просмотры 2.5K
Комментарии 5

Последние обновления моделей распознавания речи из Silero Models

Big Data *Машинное обучение *Развитие стартапа Natural Language Processing *Голосовые интерфейсы

quality_growth


Мы опубликовали уже пятую версию наших моделей для распознавания английского языка и четвертую — для немецкого. На картинке выше — прогресс роста качества для английского языка.


В этот раз мы можем порадовать вас:


  • Как большими, так и маленькими моделями;
  • Постоянным ростом качества на всех доменах аудио, снижением размера и ускорением моделей;
  • Как обычно — качество на уровне премиум моделей Google (причем в этот раз к премиум моделями 2020 года подобрались уже даже маленькие Community Edition модели);
  • Супер компактными моделями (small и скоро ожидается xsmall) и их квантизованными версиями;
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 1.3K
Комментарии 0

Смещение в датасетах

Блог компании МТС Data Mining *Машинное обучение *Natural Language Processing *

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

Смещение в датасетах (артефакты) – нежелательные взаимосвязи между входными и выходными данными, в частности, между признаками и метками, которые могут эксплуатироваться моделями машинного обучения в качестве опоры при предсказании. Часто они возникают там, где совсем не ожидаешь.

Простой пример смещения можно представить следующим образом: нам нужно определить оскорбительные посты в социальной сети. Высока вероятность, что оскорбительные посты будут содержать нецензурные слова и модель будет опираться на них при принятии решения. Некоторые пользователи могут использовать нецензурные слова и в обычных, нейтральных постах. Те же нецензурные слова могут быть использованы и для выражения позитивных эмоций. В результате, модель, обученная на датасете, в котором мало других примеров: нейтральных или позитивных, будет считать пост оскорбительным, когда в нем есть нецензурные слова. Если тестирование модели провести на похожей тестовой выборке, где нецензурные слова представлены только в оскорбительных постах, то тест подтвердит высокое качество модели. При реальном использовании эта модель будет давать ложно положительные срабатывания. Из-за смещения складывается ложное чувство, что модель работает хорошо, но это происходит ровно до того, как она начинает использоваться в реальности.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 1.3K
Комментарии 1

Как заменить регулярные выражения нейронной сетью

Python *Программирование *Машинное обучение *Natural Language Processing *

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

Задача: найти в тексте описание стоимости недвижимости, то есть численное обозначение и стоимость, записанную прописью. Например, 2 050 000 (два миллиона пятьдесят тысяч) руб., 00 коп. Задача усложняется тем, что «рубли» и «копейки» могут быть в любом месте (перед скобками или после) и могут быть сокращены.

Чтобы решить данную задачу, будем использовать NLP (Natural Language Processing), морфологический анализатор и нейронную сеть. Подключаем соответствующие библиотеки:

Читать далее
Всего голосов 10: ↑5 и ↓5 0
Просмотры 5.7K
Комментарии 10

Сделай себе книгу для изучения языка с нейросетевыми иллюстрациями

Обработка изображений *Машинное обучение *Искусственный интеллект Изучение языков Natural Language Processing *
Tutorial

Lingtrain books


Upd 10.09.2021. Добавил ещё одну подборку Colab'ов для генерации картинок


Upd 21.09.2021. Добавил пару иллюстраций к Дюне для примера


Статья будет интересна всем любителям программирования, иностранных языков и красивых книг. Сначала мы сделаем параллельную книгу, имея на руках два обычных текста. Затем мы проиллюстрируем ее картинками в стиле pixel art на основе лишь текстовых подсказок.


Книгу можно сделать более чем на сотне языков с восстановлением и подсветкой связей между предложениями:


Lingtrain


А теперь давайте сделаем такую книгу сами.

Смотреть демо
Всего голосов 53: ↑53 и ↓0 +53
Просмотры 8.2K
Комментарии 56

Вклад авторов