Получи случайную криптовалюту за регистрацию!

̶с̶а̶м̶̶о̶изолента мёбиуса

Логотип телеграм канала @izolenta_mebiusa — ̶с̶а̶м̶̶о̶изолента мёбиуса С
Логотип телеграм канала @izolenta_mebiusa — ̶с̶а̶м̶̶о̶изолента мёбиуса
Адрес канала: @izolenta_mebiusa
Категории: Без категории
Язык: Русский
Количество подписчиков: 1.44K
Описание канала:

Костыли и технологии для обработки естественных языков. Обзоры статей и личный опыт. by @cointegrated

Рейтинги и Отзывы

2.33

3 отзыва

Оценить канал izolenta_mebiusa и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

1

3 звезд

0

2 звезд

1

1 звезд

1


Последние сообщения

2022-07-23 15:56:51 Ещё про энкодеры предложений.

FAIR в 2017 году (ещё до USE и BERT) опубликовал LASER, мультиязычный энкодер предложений. Дальше его активно использовали для майнинга параллельных предложений из Википедии и Common Crawl. В 2020 году появился LaBSE, который давал эмбеддинги получше, специально обученные именно на задаче подбора пар переводов. А в ходе проекта NLLB в LASER добавили энкодеры для сотни новых языков, дистиллировав их из имеющегося энкодера. Я их пока не успел попробовать, но судя по получившимся в итоге майнинга параллельных корпусам, качество там нормальное. Надеюсь, их скоро добавят в какую-нибудь удобную обёртку типа laserembeddings, или даже вообще на HF выложат.

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

1) Мультиязычные энкодеры рулят: LASER, mUSE, LaBSE, и новые мультиязычные sentence-transformers на многих русских задачах обгоняют или дышат в спину моделям от Сбера и DeepPavlov, обученным специально для русского языка.

2) Обучать энкодер предложений можно по-разному:
- можно (как LASER) учить пару энкодер+декодер, заставляя декодер восстанавливать предложение из вектора;
- можно (как sentence-BERT) дообучать би-энкодер на задачах попарного сравнения предложений, типа NLI;
- можно (как LaBSE) сразу учить модель на задаче идентификации пар предложений с одинаковым смыслом;
- можно (как USE) обучаться сразу на массе разнообразных задач, чтобы создать максимально универсальную модель.
Есть ли среди этих подходов какой-то наилучший, неочевидно. Кажется, все четыре – вполне рабочие.

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

А поскольку энкодеры предложений – это основа для кучи полезных приложений (самое очевидное – классификация текстов, поиск, но вообще можно даже доучить к энкодеру декодер и использовать эту пару моделей для seq2seq задач), то доступность этих энкодеров для кучи малоресурсных языков означает, что разнообразное NLP с этими языками теперь стало более доступным.
398 views12:56
Открыть/Комментировать
2022-07-23 14:16:45 Теперь про политику. Мета, помимо прочего, дистиллировала на данных Википедии свою модель в ~30 моделек для отдельных языковых направлений (типа русский-башкирский, английский-исландский, франзцузский-окситанский) и отдали редакторам Википедии, чтобы упростить её наполнение на малоресурсных языках. @snakers4 подозревает, что благодаря этому теперь Википедия перестала быть свободной и стала оружием гибридной войны: теперь её будут наполнять фейками, переведёнными сразу на все языки. Мне эта логическая цепочка кажется надуманной, но если в неё кто-то верит, это может быть даже хорошо: это может мотивировать кого-нибудь ещё создавать свои переводчики, независимые от Меты. А в делах научных конкуренция – это здорово и относительно безопасно, так что если кому-то хочется заниматься гонкой вооружений, пусть занимаются этим на лингвистическом фронте. А то действительно чуть стыдно, что единственный опенсорсный русско-башкирский переводчик разрабатывает французское подразделение американской компании

А вообще, языков народов РФ в NLLB пока покрыто не очень много: русский, башкирский, татарский, да вроде и всё. Это даже меньше, чем в Helsinki-NLP/opus-mt-mul-en, где ещё есть чеченский (но она переводит только с или на английский), и сильно меньше, чем поддержано в Яндексе, хотя и он покрывает сильно меньше половины государственных языков субъектов РФ. Так что нам, обитателям северной Евразии, ещё есть над чем работать. Ну и вообще, в мире насчитывается около 7000 языков, так что работы ещё много. И Мета, судя по всему, на 200 языках останавливаться не собирается.
462 viewsedited  11:16
Открыть/Комментировать
2022-07-23 14:16:44 Меня регулярно спрашивают, как я отношусь к проекту No Language Left Behind (машинный перевод для кучи языков; последний релиз покрыл 202).
Сразу оговорюсь, что скоро я буду относиться к нему непосредственно, поэтому моя позиция может быть не совсем объективной. Но я таки выскажусь.

Исследователи из Меты всерьёз заморочились с "продуктовым" подходом, проведя перед началом исследования кастдев носителей малоресурсных языков, потенциальных пользователей их машинного перевода. А для создания тестового датасета (FLORES) они наняли профессиональных переводчиков, чтобы метрики качества были более надёжными и осмысленными. Плюс, уже с готовой моделью, ещё раз сделали для всех языков человеческую оценку качества. По-моему, такая ориентация на полезный результат очень круто смотрится по сравнению с "делаем исследование, чтобы опубликоваться" или "инжинирим, чтобы обновить SOTA на 1%".

При этом, в отличие от Google, недавно замахнувшегося на 1000 языков, или от эпически неоткрытых OpenAI, Meta честно публикует свои наработки в открытый доступ. И код, и кучу параллельных корпусов, и модель для перевода, и модели для эмбеддингов предложений и идентификации языков. По-моему, ресёч таким и должен быть.

Модели для перевода уже доступны на HF, включая дистиллированную относительно небольшую (2.5 GB) версию. Я поигрался с ней чуть-чуть, оказалось, что для примерно 90% языков перевод с русского на другой язык и назад вполне сохраняет смысл и читабельно выглядит. То есть да, модель не просто что-то там генерирует, а в целом вполне себе всерьёз переводит. А ещё я потестировал модель на своей любимой задаче перефразирования, и с ней она тоже вроде вполне справляется, причём даже в один проход, без перевода на промежуточные языки.

Одна из проблем, которую разработчики постарались забороть – это разновидность катастрофических ошибок перевода, когда модель ни с того ни с сего генерирует токсичные тексты. Решить её попытались удалением из обучающих корпусов таких пар предложений, где во втором предложении больше токсичных фраз, чем в первом. Списки фраз для всех 200 языков составляли вручную. Я проглядел список для русского: там 1.5К слов; часть в разных склонениях, часть нет, и вперемешку разные виды "токсичности": однозначно грубая лексика, грубоватые выражения типа "офигенный", потенциальные оскорбления типа "глупый", связанные с сексом слова типа "голый" или "анус", "экстремальные" слова типа "нацист". И очень много слов с переносным значением типа "днище" или "петушок", или неоднозначных (без контекста) типа "попа", "сучки", или "фиговый". В общем, полнота списка довольно высокая, но интуитивно показалось, что и ложных срабатываний должно быть много. Проверил на датасете Одноклассников: токсичные слова нашлись в 53% токсичных комментариев, и в 1.7% нетоксичных комментариев (или в 66% и 2.9%, если сравнивать все леммы; что сопоставимо со Сколтеховским списком токсичных слов). Это вполне бьётся с результатами Меты, которые нашли 0.7% токсичных фраз в Библии. Но насколько вся эта фильтрация действительно решает проблемы токсичных переводов, ни мне, ни авторам NLLB до конца пока не понятно.
462 viewsedited  11:16
Открыть/Комментировать
2022-07-21 10:54:43 Оказывается, есть проект https://panlex.org по сбору общего словаря для всех языков мира (сейчас там представлены 6 тысяч языков).
Так что (как советуют Artexte et al, 2020), не говорите, что для вашего малоресурсного языка совсем нет параллельных данных в открытом доступе. Скорее всего, хотя бы несколько сотен лексем с переводом на другие языки у вас найдётся. Другой вопрос, как их эффективно использовать – но про это я в обозримом будущем расскажу.
645 viewsedited  07:54
Открыть/Комментировать
2022-07-19 08:51:12
На прошлой неделе меня дважды спрашивали, как восстановить текст предложения из его LaBSE эмбеддинга. Я дважды отвечал, что никак.

Но на самом деле, конечно, можно обучить декодер генерировать текст по его эмбеддингу. Я попробовал, и примерно получилось.

Зачем это делать? Например, чтобы:
- переводить со 100 разных языков на русский;
- суммаризовать много похожих предложений одним;
- реалистично заменять фразы в составе предложений;
- менять смысл предложений.

Модель для восстановления предложений из эмбеддингов опубликована как cointegrated/rut5-base-labse-decoder, а подробности – на Хабре.
1.1K views05:51
Открыть/Комментировать
2022-07-11 10:34:09 Сделала для вас подборку литературы:
С чего начать в NLP

Пункт номер 0.
Учебник со всеми классическими методами от Daniel Jurafsky ссылка
Бессмертная классика, и постоянно выходят обновления.

Пункт номер 1. Стенфордский видеокурс "CS224n: Natural Language Processing with Deep Learning" - есть материалы за прошлые годы, смотрите самый последний (зима 2021) ссылка

Пункт номер 2 и далее. Практика-практика. Делайте своих ботов, классификаторы, микросервисные архитектуры с модельками. Много туториалов на Medium, плюс новые модели на https://paperswithcode.com/sota
Много полезного собрано в учебных материалах DeepPavlov - курс уже прошел, но материалы доступны на Github - тут есть и план обучения, и идеи проектов. Во многом пересекается по материалам со стенфордским курсом.

Дополнительно:
Учебник по NLP от Jacob Eisenstein - 2018 года, но большинство глав up-to-date ссылка

Учебник "A Primer on Neural Network Models for Natural Language Processing" (2015 года, тоже староват, но все основные подходы вам все еще понадобятся) ссылка

На русском:
Бесплатный курс Павла Бралавского "Введение в обработку естественного языка" на stepic: ссылка
Мне он показался сложноватым для совсем новичков, но зато у вас сразу будет несколько Jupyter-проектов на выходе.

Виктор Захаров, учебник "КОРПУСНАЯ ЛИНГВИСТИКА" ссылка
Отличный учебник, написанный для лингвистов. Читать легко и приятно, поймете все про выборки для обучения.

Почти для всех курсов и учебников пререквизиты одинаковые: Python, матстат, основы ML
1.0K views07:34
Открыть/Комментировать
2022-07-11 10:34:09 1) Подписывайтесь на Таню, она классная!
2) Её гайд по вхождению в NLP и впрямь дельный, особенно мысль о важности пет-проектов
829 views07:34
Открыть/Комментировать
2022-06-23 17:30:08 Сегодня все радостно репостят, что Яндекс выложил свою Зелибобу в открытый доступ.
https://habr.com/ru/company/yandex/blog/672396/
Это языковая модель, у которой только веса занимают 200 гигабайт.
Может это, скинемся на аренду железа и дистиллируем её во что-нибудь пристойного размера?
3.5K viewsedited  14:30
Открыть/Комментировать
2022-06-20 21:17:06 Sub-Word Alignment is Still Useful: A Vest-Pocket Method for Enhancing Low-Resource Machine Translation
В статье изучают простой приём: адаптацию эмбеддингов при дообучении модели переводу с нового языка. Модель, хорошо предобученную переводить на английский с немецкого, дообучают переводу с других языков: для бирманского и индонезийского даётся всего по 20К параллельных предложений, для турецкого - 200К. Все веса модели, кроме входных эмбеддингов, при дообучении наследуют от "родительской". И оказывается, что если инициализировать эмбеддинги свежедобавленных токенов просто случайно, то прирост качества от такого дообучения незначительный, по сравнению с обучением трансформера с нуля. Но можно быстро-грязно собрать параллельный корпус нового языка с немецким, выстроить на нём выравнивание токенов, и инициализировать эмбеддинги новых токенов как средневзвешенные эмбеддинги немецких токенов, с которыми они были выровнены. (Выравнивание делали тулзой https://github.com/robertostling/eflomal). И оказывается, что в таком сеттинге модель, предобученная переводить с немецкого, переводит с нового языка сильно лучше непредобученного бейзлайна, и сходится в полтора-два раза быстрее.

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

(начало обзора)
1.4K viewsedited  18:17
Открыть/Комментировать
2022-06-20 20:42:42 Towards Making the Most of Cross-Lingual Transfer for Zero-Shot Neural Machine Translation
Авторы предлагают (и в итоге выкладывают) модель SixT+ для перевода со 100+ языков на английский. Авторы инициализируют энкодер и декодер трансформера весами XLM-R, и затем обучают модель на огромном параллельном корпусе переводу с 6 разнообразных языков (De, Es, Fi, Hi, Ru, and Zh). При обучении сначала размораживают веса декодера, а потом ещё и энкодера (входные эмбеддинги всегда остаются замороженными). В самом последнем слое энкодера авторы убирают residual connection, утверждая, что это помогает выучить представления текстов, меньше зависящие от порядка слов, а значит – от типа входного языка. Потом авторы берут 23 языка из 9 языковых групп, и сравнивают свою модель с кучей сильных бейзлайнов на переводе с этих языков на английский. Модель побивает бейзлайны почти везде (кроме китайского, корейского, японского, эстонского и польского, где побеждает m2m-100). Кроме этого авторы выпускают и версию модели для перевода с английского на 6 других языков. Чтобы адаптировать модель для переводана малоресурсные языки (авторы экспериментируют с Ne и Si) авторы генерируют псевдопараллельный корпус, переводя в zero-shot режиме с целевого языка на английский, и на нём дообучают модель для обратного направления. Для непальского языка результат в обе стороны оказывается даже лучше, чем у supervised бейзлайнов, а для сингальского – хуже лишь ненамного.

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

(начало обзора)
1.0K views17:42
Открыть/Комментировать