Den4ik Research
1.66K subscribers
60 photos
3 videos
3 files
41 links
HuggingFace: https://huggingface.co/Den4ikAI
GitHub: https://github.com/Den4ikAI
Донат: https://pay.cloudtips.ru/p/b9d86686
Личка: https://t.me/bceloss

Канал одного NLP-ресерчера
Download Telegram
Channel created
Всем привет.

Для чего этот канал?
Здесь будут публиковаться мои наработки, новости из мира NLP, TTS и в общем ML.

Вот список моих разработок:
SOTA расстановщик ударений в русских текстах: тык
Huggingface с компактными инстракт и диалоговыми моделями: тык
Личный Huggingface: тык

Контакт:

Посмотрим что из этого выйдет
🤡84👏1🤮1💩1
Обновление RUAccent 1.5.5.2

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

2. Разрешение популярных Ё-омографов.
Сделана модель которая может разрешать ё-омографы.

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

4. Метрики
Был собран тестовый набор данных для модели разрешения омографов.

small_poetry -> 0.93
medium_poetry -> 0.95
big_poetry -> 0.97

5. Обновлена модель расстановки ударений в словах
Была обновлена модель для расстановки ударений в обычных словах. Она имеет точность 0.97 на словаре 3.8 миллионов слов. Модель очень маленькая - 738 килобайт, что меньше, чем у силеро

Вы можете попробовать модель вместе с TeraTTS: тык
GitHub: тык

К сожалению, пока пайплайн довольно тяжёлый (потребление 5 Гб ОЗУ). Планируется сократить размер пайплайна до одной модели и одного словаря ударений.
🤡7🔥4💩2🖕2
Игрались вместе с @dealer_ai над недавно вышедшими ruELECTRA. Делали обрезку и облегчение этой же модели. Результаты обрезки на скриншоте


Скачать: тут

P.S ruTiny модели это дистилляты больших sentence энкодеров, поэтому если хотите догнать их, используйте их пайп с нашей моделью.
👍3
Дорогие подписчики моего канала. Поздравляю вас с наступающим Новым годом! Ждите в 2024 новых интересных ресерчей, и крутых проектов! 🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄12👍2🤡2
Как я делал nonsense детектор и почему MADLAD грязный.

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

После обработки данных получилось, что чуть-ли не каждый второй сэмпл это неграмматичный мусор, порождаемый скорее всего рерайт-ботами.
Примеры сэмплов. WARNING 18+

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

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

Мой сексуальный опыт начался с положил руки на порно ifolder ru жены возрасте, во мне начала вырисовываться яйцами друга и я увидел период времени у моей матери звуки и попыталась убрать попку.



Как с этим бороться?

1. Обычный словарь с нецензурными словами.
2. Нейросеть-детектор неграмматичного мусора. О ней и пойдет дальше речь.


Для начала необходимо выделить виды текстового мусора. Я выделил 4 основные категории:

1. Лицо на клавиатуре. (ойшойвщф фващощфащшгй0ш шйждыфл) - мусор выглядит как случайно набранные слова. Собрать такой мусор довольно просто. Нужно рандомно генерировать "слова" различной длины и с некоторой вероятностью вставлять знаки препинания между словами и в конце предложения.

2. Набор несвязных слов. (замок двойка иван кванты чат). Чаще всего является набором ключевых слов на каком-то сайте, деталями интерфейса. Генерация подобного мусора тоже не сложна. Берем предложения из корпусов (в моем случае librusec и web_public) токенизируем, перемешиваем токены и все.

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

4. Нейросетевой бред. Этот класс мусора похож на предыдущий, но не всегда заключается в неверных склонениях. (примеры выше) Чтобы классификатор был устойчивее на подобных примерах я взял inkoziev/paraphraser, подавал на вход случайные слова, запуская генерацию с top_k от 200 до 450 и max_new_tokens от 15 до 100.

Еще важный момент. Модель должна быть uncased. Хорошее качество дала модель deepvk/bert-base-uncased.

Примеры работы:

> ужасы триллер боевик
[{'label': 'neural_shit', 'score': 0.9993571639060974}]
> я помню чудное мгновенье.
[{'label': 'ok', 'score': 0.9937665462493896}]
> колонок настроен на транса в рот.
[{'label': 'neural_shit', 'score': 0.9995867609977722}]
> щворврйщй йзвйзоцовзйл шщщ-03-9 в.
[{'label': 'face_on_keyboard', 'score': 0.7609623074531555}]
> я свободные человек.
[{'label': 'neural_shit', 'score': 0.9954590797424316}]


Классификатор: hf_link
Датасет:
hf_link
👍207
Маленький мальчик создал Оупен ай,
Тут подбежал к нему Виндоус мастдай,
Мы отдадим все видюхи свои,
Сделай нам сильный-пресильный ИИ

#humor
🔥148👍3🐳1
[пост был удалён]

Вихрь - семейство русификацированных моделей (flan т5 240м, flan т5 3В, mistral 7B) как основы.


Все имеют адаптированный под русский токенйазер, подучены на хабре, а т5 ещё и на переведенной open orca.

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

По метрикам ВОЗМОЖНО лучше чем закрытые модели Яндекса и Сбера, но точными цифрами сложно оперировать, я не уверен в русских бенчах, а saiga sbs руки не дошли поставить.

Возможно позже.


Sentence версия т5 не полетела, энкодер от flan сопоставим с энкодером Fred T5 xl.

Если у вас есть архитектура где используется flant5 xl и хочется поддерживать русский - можно смело подсунуть этот флан. Встанет как влитой.


Подробности в статье на хабре на следующей неделе.


Huggingface

Релизнули с @nadlskom @den4ikresearch(ft flan на saiga как early bird, выйдет позже )
🔥92🍾1
Мы релизнули вихрь💨 Нормально.

Проблемы: мы не очень уверены что оно точно аутперформит mistral и saiga mistral. Формально - да, все хорошо.

Цитируя классику

Если вам интересно что мы сделали: хабр

А еще оформили все в красивую HF репу: https://huggingface.co/Vikhrmodels
11👍53
Кажется, европейские ценности докатились до синтеза речи


За фотку спасибо @solkogan
😁103👍1
RUNorm и char level number tokenization

1. Немного о RUNorm

Сейчас помимо RUAccent, я начал заниматься проектом RUNorm. Данная система должна нормализовывать текст перед акцентуацией и собственно синтезом речи.
Нормализацию текстов можно подразделить на следующие подзадачи:
1. Нормализация сокращений (1990 г. -> 1990 год, г. Москва -> город. Москва)
2. Нормализация аббревиатур (ПТСР -> пэ тэ эс эр)
3. Нормализация английских слов (Microsoft -> майкрософт)
4. Нормализация чисел (в 2009 -> в две тысячи девятом)

Нормализация сокращений уже работает довольно неплохо:

:> Моя зп. всего 15 тыс. руб.
>>> Моя зарплата всего пятнадцать тысяч рублей

:> Мой адрес : г. Москва, р-н Бутово, д. 12, кв. 20
>>> Мой адрес город Москва, район Бутово, дом двенадцать, квартира двадцать

:> Я родился в 1900 г.
>>> Я родился в 1900 году.

Текущий пайплайн сейчас состоит из двух моделей - ruT5-base, bert на 3м параметров и некоторых правил взятых отсюда.

2. Как посимвольная токенизация цифр должна помочь в нормализации?

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

:> Конец света будет в 2045 г.
>>> Конец света будет в тысяча сорок пятом году.

:> В 1987 г. произошло самое большое падение Промышленного индекса Доу Джонса за всю его историю, — 22,6 %
>>> В тысяча девятьсот семьдесят седьмом году произошло самое большое падение Промышленного индекса Доу Джонса за всю его историю, — двадцать два целых и шесть десятых процента.

Возможное решение подобных проблем - правильная токенизация чисел.

Стандартный токенизатор модели ruT5-base работает примерно так:
:> tokenizer_orig.tokenize("Я родился 12.09.1923")
>>> ['▁Я', '▁родился', '▁12', '.09.', '1923']

Новый токенизатор:
:> tokenizer.tokenize("Я родился 12.09.1923")
>>> ['▁Я', '▁родился', '▁1', '2', '.', '0', '9', '.', '1', '9', '2', '3']

Доработка токенизатора очень простая, все токены являющиеся числами и длиной более 1 символа (без учета пунктуации), были заменены на "<garbage>".

Подробнее можно ознакомиться в данном ноутбуке

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

По результатам тестирования были получены следующие метрики:

Arith acc digit5_ft: 0.586286056492664
Arith acc rut5_ft: 0.2418904082243737
P.S. Все тесты проводились без сэмплинга

Модель с модифицированным токенизатором ушла вперед с огромным отрывом.
🔥157👍2
Релиз RUAccent-turbo!

1. Была добавлена новая модель Turbo.
Данная модель была обучена на 200 гб размеченных разными пайплайнами текстов. Размер модели сопоставим с medium_poetry, но качество выше big_poetry. Размер модели 80m параметров.

Метрики:
ruaccent_big -> 0.93 avg
ruaccent_turbo -> 0.95 avg

3. Отказ от собственного тяжеловесного пайплайна морфологического анализатора, в сторону проекта Ильи Козиева rupostagger.
4. Доработка пайплайна с нейросетью для расстановки ударений в обычных словах
5. Исправлены некоторые ошибки работы системы. (вылеты и т.д)

Colab: link
GitHub: link
Модель вместе с TeraTTS: link
🔥16👍441
Открытый бета-тест RUNorm


Последние несколько месяцев я работал над библитекой нормализации текста перед TTS.

> Зачем это нужно?

В текстах есть много различных моментов, которые стандартный синтезатор речи не озвучит:

1. Сокращения. Помимо сокращений имеющие одно значение (например "т.д" - так далее), есть и многозначные "г." (город или год)
2. Числа. Числа также нужно озвучивать по-разному, в зависимости от контекста. Например, "В школе у меня одни 5" можно озвучить как "В школе у меня одни пять/пятёрки", а "Живу на 5 этаже" надо озвучить как "Живу на пятом этаже"
3. Английские слова. "Котики кушали whiskas" -> "Котики кушали вискас/уискас"

И это самая малая часть. Есть и номера телефонов, номера банковских карт, валюты

> Как работает у меня?

Либа состоит из 5 частей:

1. Рулового пайплайна
2. Нормализатора английских слов
3. Нормализатора чисел
4. Нормализатора сокращений
5. Тэггера, который помечает сокращения

Сначала руловый пайплайн нормализует валюты и номера телефонов, после чего нормализуются числа и английские слова. Далее, текст отправляется в тэггер и нормализатор сокращений.

Подробный рассказ будет в длиннопосте, с релизом.


Вы можете протестировать бета-версию в телеграм-боте: @runorm_bot.
Буду благодарен за фидбек в комментариях

@den4ikresearch
🔥25👍3👏1
Наконец про энкодер-декодеры вспомнили

Reka представила серию мощных мультимодальных языковых моделей - Core, Flash и Edge. Эти модели способны обрабатывать и анализировать текст, изображения, видео и аудио.

Модели Reka Edge (7B параметров) и Flash (21B параметров) не только являются лучшими в своем классе, но и превосходят многие гораздо более крупные модели. При этом самая мощная модель Reka Core приближается по возможностям к передовым моделям OpenAI, Google и Anthropic.

На бенчмарках по ответам на вопросы по изображениям (MMMU, VQAv2) Reka Core показывает результаты на уровне GPT4-V. В мультимодальном чате по оценкам сторонних экспертов Core заняла второе место, опередив модели вроде Claude 3 Opus. На текстовых бенчмарках (MMLU, GSM8K и др.) Core не только конкурирует с другими передовыми моделями, но и превосходит GPT4-0613 по оценкам людей.

В ответах на вопросы по видео (Perception-Test) Reka Core и Flash опережают Gemini Ultra от Google.

Самая мелкая - Edge (7B) училась на 4.5T токенов!

Архитектура:
Модульная энкодер-декодерная архитектура для текста, изображений, видео и аудио на входе. На данный момент модель поддерживает только текстовый выход.
Модель основана на архитектуре 'Noam' с использованием SwiGLU, Grouped Query Attention, rotary position embeddings и RMSNorm.
Похожа на архитектуру PaLM, но без параллельных слоев.
Используется sentencepiece-словарь размером 100K на основе tiktoken (токенизатор GPT-4).


Весов пока нет :(
Потыкать можно тут: chat.reka.ai
🔥12
RUPunct v1 - Набор моделей для расстановки знаков препинания


В опенсурсе не так много моделей для расстановки знаков препинания. Самые популярные - SbertPuncCase от kontur-ai, Silero_te от команды Silero и Rubert Punc. У них есть четыре недостатка: большой размер (SbertPuncCase), низкое качество (Silero), использование очень тяжёлых фреймворков, таких как Nemo (Rubert Punc) и малый охват знаков препинания (SbertPuncCase)


Результат своих попыток сделать что-то лучше я решил выложить в открытый доступ.

На данный момент доступны 3 модели:

- RUPunct_big (178M параметров)
- RUPunct_medium (60M параметров)
- RUPunct_small (30M параметров)

Метрики и сравнения с другими моделями вы можете видеть на прикреплённых скриншотах.

Обучались модели на датасете состоящим из:

- Новости
- Книги
- Wikipedia
- Сказки Стенограммы записей из Госдумы

Общий размер датасета - 4ГБ.


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

Модели можете потыкать тут: ссылка
Ссылка на аккаунт со всеми моделями: ссылка

@den4ikresearch
👍20🔥151💋1