dimhold.by
← Статьи

Каждая седьмая "беларусская" страница в mC4 на русском

В статье про mT5 перечислен 101 язык и беларусский среди них. В приложении есть таблица с объёмом каждого языка в mC4, корпусе, на котором mT5 обучали. У беларусского 2,0 миллиарда токенов, у русского 713 миллиардов. Я читал эту таблицу не раз и брал из неё только соотношение. Мало, но есть. Что эти 2 миллиарда токенов на беларусском, я просто предполагал, хотя файлы открыты и я ни разу в них не заглядывал.

Так что я в них заглянул. mC4 лежит на Hugging Face в копии AllenAI, беларусская часть это 128 файлов и 3,4 ГБ в сжатом виде. Рядом я взял CC-100, корпус, на котором обучен XLM-R, там беларусский это 1 файл на 0,72 ГБ. На диск корпуса я не сохранял. Каждый документ прошёл через 2 детектора языка на Python и для каждого документа я записал одну строку признаков. Первый это CLD3, тот же детектор, которым mC4 выбирал язык страницы. Второй это fastText 0.9.2 с моделью lid.176 от 2017 года. mC4 её не использовал. CC-100 использовал. Узнал я это только после подсчёта и ниже это пригодится.

Я не первый, кто смотрит внутрь. Kreutzer с соавторами вручную проверили выборки из многих веб-корпусов и опубликовали результаты в этом году в TACL. Для беларусского в mC4 они оценили около 100 предложений. 92% оказались верными, 4% на другом языке, остальное вообще не язык. До подсчёта я записал, чего жду: fastText назовёт беларусским не меньше 90% документов mC4 и не меньше 95% документов CC-100. Ниже 80% я бы назвал метку ненадёжной.

Объём

Русского в mC4 в 408 раз больше, чем беларусского, по сжатым байтам и в 357 раз больше по числу токенов из таблицы mT5. mC4 собран из снимков Common Crawl до 2020 года. Для сравнения, последний снимок, который я взял, январский 2022 года, помечает беларусскими 0,0153% страниц и на каждую беларусскую страницу в нём 408 русских. Совпадение 408 случайное. Тут страницы против байтов и снимок, которого mC4 не видел. Сравнение говорит только о том, что порядок величины тот же.

С CC-100 по-другому. Там русского всего в 68 раз больше, чем беларусского. Английского в 121 раз больше, а в mC4 в 1174. Оба корпуса собраны из Common Crawl, но CC-100 взял 1 снимок для английского и 12 для остальных языков. Это объясняет большую часть разрыва по английскому. По русскому 2 корпуса расходятся в 6 раз и это я объяснить не могу. У CC-100 ещё своя фильтрация и я не разбирался, какой шаг даёт разницу.

во сколько раз русского больше, чем беларусского (лог. шкала) 1 10 100 1000 таблица mT5, токены mC4 357 mC4, сжатые байты 408 Common Crawl 2022-05, страницы 408 CC-100, сжатые байты 68
Русский против беларусского. Таблица из статьи про mT5, размеры файлов mC4 (копия AllenAI) и CC-100, статистика Common Crawl за январский снимок 2022 года.

Что лежит в беларусской папке

В беларусской части mC4 1742030 документов. CLD3 называет беларусскими все. Это ожидаемо, потому что именно так они в папку и попали. fastText согласен в 81,6% случаев. В 14,3% он говорит “русский”, в 1,6% “украинский”. Значит, мои 90% не сбылись и результат лёг чуть выше черты, которую я провёл для ненадёжной метки.

Потом я посчитал слова вместо документов. В пересчёте на слова fastText называет беларусскими 93,2% и русскими всего 2,7%. Это близко к 92% из ручной проверки. Я какое-то время думал, что мои числа расходятся с результатом Kreutzer, пока не понял, что они считали предложения, а я документы. Слова тоже не предложения, так что совпадение отчасти случайное. Но причина разрыва понятна: русские документы крошечные.

mC4, документы 81,6% 14,3% mC4, слова 93,2% CC-100, документы 98,8% CC-100, слова 99,96% беларусский русский украинский прочее
Все 1742030 документов mC4 be и все 1450734 документа CC-100 be. Язык по fastText lid.176.

Их 249162. Медианная длина 27 слов, 3 из 4 короче 50 слов. 146160 из них лежат на доменах .ru. Я прочитал 47, которые попали в случайную выборку из 400 документов. 14,3% дали бы 57, но 400 это маленькая выборка. 26 из них это явно страницы магазинов: сухая пастель, матрасы 90x205 в Самаре, душевые кабины, аккумулятор для SonyEricsson K770. Ещё 5 это списки товаров на страницах, которые не совсем магазины. Остальное торренты, ветка форума, список врачей, казино, рецепт и тому подобное. 3 из 47 не чисто русские. Ни одной обычной статьи среди них я не нашёл. На странице из названий товаров почти нет обычных русских слов, поэтому буквы, которые отличают русский от беларусского, почти не встречаются.

Я взял одну такую страницу с грилем из российского интернет-магазина. Я подавал CLD3 её строки, добавляя по одной. С одной первой строкой он говорит “русский”. Со второй строки он говорит “беларусский” до строки 7, где слово “доставка” возвращает русский. Со всеми 8 строками снова беларусский, с уверенностью 0,797. mC4 отбрасывал страницы с уверенностью ниже 0,7, так что эта прошла.

метка CLD3 после строк 1..k порог mC4 0,7 1 Барбекю : Гриль OFYR Classic 100 Black steel ru 0,424 2 Главная/Каталог/Барбекю/Гриль OFYR Classic 10… be 0,768 3 Гриль OFYR Classic 100 Black steel be 0,768 4 Гриль OFYR Classic 100 Black steel - характер… be 0,768 5 Описание: Гриль OFYR Classic 100 Black steel be 0,784 6 Отзывы Гриль OFYR Classic 100 Black steel be 0,784 7 Гриль OFYR Classic 100 Black steel - доставка ru 0,486 8 Гриль OFYR Classic 100 Black steel - монтаж be 0,797
CLD3 на первых k строках страницы с in-kamin.ru. Текст страницы русский.

CC-100 выглядит чище. fastText называет беларусскими 98,8% из его 1450734 документов и 99,96% слов. Мои 95% сбылись. Но CC-100 фильтровали той же моделью lid.176, так что здесь fastText в основном подтверждает собственное прежнее решение.

Что это значит для mT5

mT5 обучали 1 миллион шагов на батчах из 1024 последовательностей по 1024 токена, это около 1,05 триллиона токенов. При семплировании языков беларусскому досталось 0,59% из них. Это 6,19 миллиарда токенов при том что всего в папке 2,0 миллиарда, то есть модель прошла беларусскую папку примерно 3 раза. Это входные токены после маскирования фрагментов (span corruption), так что настоящее число, возможно, чуть больше. Русскому досталось 3,71% обучающих токенов, но русского так много, что модель один раз увидела лишь около 5,5% его.

Выходит, модель повторяет беларусскую папку 3 раза, вместе с русскоязычными страницами магазинов. Из всего русского массива она читает около 5,5%. В пересчёте на слова русское составляет 2,7% повторяемого. В моей выборке это в основном магазины. Для модели это, вероятно, не проблема. Но если вы берёте случайные документы из mC4, чтобы что-то посчитать, fastText назовёт русской каждую седьмую “беларусскую” страницу.

2 правописания в одной папке

У беларусского языка 2 правописания в ходу, официальное и классическое, которое называют тарашкевицей. Тарашкевицей пишут в основном независимые медиа и у неё есть своя Википедия. Корпуса их не разделяют. Я искал подсчёт тарашкевицы в mC4 или CC-100 и не нашёл.

В классическом правописании мягкий знак между согласными пишется там, где в официальном его нет: сьнег против снег, жыцьцё против жыццё. Я составил список таких сочетаний, добавил букву ґ и проверил его примерно на 200 случайных статьях из обеих беларусских Википедий. В официальной он не нашёл ничего. В классической поймал 49 из 52 статей длиной от 100 до 200 слов и все более длинные.

Среди беларусских документов длиной от 100 слов классическое правописание у 22,0% в mC4 и у 20,9% в CC-100. Я ждал от 15% до 40%. Выходит, примерно каждый пятый длинный беларусский текст в обоих корпусах написан классическим правописанием, которое официальные правила не признают.

Чего я не проверял

fastText не эталон. Короткие беларусские страницы с малым числом букв трудны для любого детектора. В статье про mT5 сказано, что mC4 оставлял только страницы, где хотя бы 3 строки не короче 200 символов. Русские страницы в папке намного короче. Может быть, длинные строки потом удалили как дубликаты, но я этого не проверял. Подсчёт тарашкевицы пропускает часть текстов от 100 до 200 слов, 3 из 52 в проверке на Википедии, так что 22,0% немного занижено. Короткие тексты я не считал вообще. И документ засчитывается классическим, даже если в нём одна цитата в этом правописании. Я ничего не обучал, так что как русские магазины влияют на беларусский в mT5, я могу только гадать.