Data Funk – Telegram
Data Funk
249 subscribers
195 photos
2 videos
1 file
73 links
Download Telegram
Наткнулся на 1.5Gb датасет русскоязычных текстов для задачи классификации детская/взрослая литература. Там же приложена статья авторов с архива, где они пишут - "We also found that some features used to determine text difficulty positively affect the quality of age-based classification". Часто оценка сложности чтения текста представляет собой линейную комбинацию различных статистик текста и их отношений (среднее число слогов в слове, среднее число слов в предложении и т.д.) Почему бы не сделать еще один индекс удобочитаемости просто как классификатор детской/взрослой литературы? Без эмбедингов и только линейная модель. Я использовал spaCy (c модулем русского языка ru_core_news_lg). Оказалось достаточно пометить какие из токенов в предложении являются стоп-словам (is_stop), пунктуацией (is_punct), словами с заглавной буквой (is_noscript), посчитать долю глухих согласных от длины слова (prop. of voiceless cons. in a word), количество и долю гласных в слове (count/prop. of vowels in a word), количество звонких согласных в слове (count of voiced cons. in a word).
Дальше от этого берутся базовые статистики по каждому предложению, следом еще один слой статистик поверх предыдущих для каждого текста и из этого складывается линейная модель. Я ограничил формулу пятью слагаемыми, что бы она влезла в картинку и не выглядела слишком страшно. Даже с пятью слагаемыми линейка распознаёт взрослую и детскую литературу на тесте с точностью 0.76 (AUC = 0.83) и на картинке можно увидеть распределение этого кастомного индекса читабельности по каждому из типов литературы. Чем выше индекс, тем выше шанс, что текст детский и его легче читать.
Формулу сразу не просто интерпретировать, но кажется чем больше пунктуации, тем сложнее текст для чтения, а вот разнообразие стоп-слов и слов с заглавной буквой (имена и названия) наоборот упрощают чтение, как дисперсия слов с глухими согласными.

Датасет взят тут -> https://www.kaggle.com/oldaandozerskaya/fiction-corpus-for-agebased-text-classification
Выше я как-то писал про индийскую кухню, сегодня продолжение темы о еде. Сайт Food.com. Более полумиллиона рецептов по множеству категорий блюд с подробным описанием состава каждого из них. Среди характеристик описания: Calories (калории), Carbohydrate Content (содержание углеводов), Cholesterol Content (содержание холестерина), Cooking Time (время готовки), Fat Content (жирность), Fiber Content (содержание клетчатки), Preparation Time (время подготовки), Protein Content (содержание белка), Recipe Servings (количество порций), Saturated Fat Content (содержание насыщенных жиров), Sodium Content (содержание натрия), Sugar Content (содержание сахара).
Этого достаточно что бы предсказать любую из существующих категорий блюд с помощью простого лог.рега. с хорошим качеством. Из полученных линеек я извлек важность каждой характеристики и составил матрицу [категории_блюд x важность_фичей] дальше это отправляется в PCA. Интересно, что первые два вектора PCA разложения описывают более 54% дисперсии этой матрицы. На картинках можно видеть как меняются важности перечисленных фичей по осям PCA для ряда категорий блюд, а также между близлежащими категориями интуитивно прослеживается сходство. Положительный importance означает что увеличивая соответсвующую характеристику мы лучше можем предсказать конкретную категорию блюда, отрицательный наоборот - точность угадывания конкретной категории возрастает, если уменьшать данную фичу.

Датасет взят тут -> https://www.kaggle.com/irkaal/foodcom-recipes-and-reviews
Открыл для себя правило - размер датасета обратно пропорционален потраченному на него времени. Увидел маленькую табличку с 239 видами мороженного (239 строк) от 4 брендов (Ben & Jerry's, Breyers, Haagen-Dazs, Talenti), с более чем сотней колонок - ингредиенты состава мороженного, и средней оценкой пользователей с сайтов брендов. Первая мысль - попробовать все возможные идеи анализа которые смог вспомнить, ведь датасет маленький и все будет работать быстро. Этот процесс обманчиво затягивает. Месяц периодических подходов к табличке заканчивается почти тем же, чем и начинался.