В этой статье я хотел бы поделиться своими знаниями о функциях, которые мы можем извлечь из текстовых данных. Эти функции можно визуализировать на этапе исследовательского анализа данных (EDA) и использовать для разработки функций (FE).

Обзор

Из любого текста мы можем извлечь:

  1. Базовая статистика: количество токенов/символов/знаков препинания/предложений, средняя длина слова/предложения.
  2. Лексическое содержание текстов: наиболее часто встречающиеся лексемы, ключевые слова, ассоциативные меры.
  3. Метрика Лексическое разнообразие
  4. Морфологическая информация: распределение частей речи по каждому классу, распределение времен глаголов и т. д.
  5. Синтаксическая информация: коллокации, n-граммы, знаки препинания.
  6. Метрики читабельности

Я старался сделать эту статью как можно полнее, но нет ничего идеального. Так что буду рад дополнениям и обсуждениям в комментариях!📝

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

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

Рассмотрим подробнее перечисленные функции.

Основная статистика

Базовая статистика включает в себя подсчет всего, что мы можем посчитать в необработанном тексте:

  • Количество токенов/символов/знаков препинания/предложений. Эта информация может быть визуализирована на гистограммах или диаграммах в целом или для каждого класса, а затем преобразована в числовые функции на этапе разработки признаков;
  • Длина слов/предложений (количество букв и слов соответственно) может быть отображена на гистограмме или диаграмме в EDA. Среднее значение и стандартное отклонение каждого текста позже могут стать числовыми характеристиками.

Этот тип статистики не представляет никакого значения текстов и предоставляет только некоторую общую информацию.

Используйте случаи, когда этот тип информации может быть полезен:

  1. Длина текстов может помочь различать жанры: поэзия обычно короче прозы.
  2. Среднее значение и стандартное отклонение длины слова различаются в зависимости от языка. Например, средняя длина слова в английском языке — 5,2, в русском — 7,2, а в немецком — 10,8. Следовательно, это может быть полезно в задаче определения языка.

Лексическое содержание

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

Основные этапы предварительной обработки:

  1. Преобразование нижнего регистра ← Мы хотим, чтобы CAT, Cat, и cat были одним и тем же словом.
  2. Лемматизация/стемминг ← Мы хотим, чтобы мяу, мяу,и мяу были одним и тем же словом.
  3. Удаление стоп-слов ← Мы знаем, что эти слова будут самыми частотными в каждом тексте; нас интересуют другие, более конкретные.
  4. Удаление пунктуации и других ненужных символов (например, цифр).

Теперь мы можем:

  • Подсчитайте слова, чтобы определить, какие из них более распространены в определенных классах. Эта информация может быть представлена ​​в виде гистограммы или облака слов.

  • Ключевые слова — это нечто иное, чем просто самые частотные слова. Существует несколько подходов к расчету показателей ключевого слова. Самый простой из них требует справочного корпуса для расчета балла за i-е слово следующим образом: keyword_score(w_i) = frequency_in_the_corpus(w_i) / frequency_in_the_reference_corpus(w_i). Слова с наивысшей оценкой, скорее всего, являются ключевыми словами.
    Вы также можете извлечь ключевые термины с помощью библиотеки textaCy.
    Эти оценки и соответствующие слова могут быть представлены на гистограмме.
  • Меры ассоциации вычисляют корреляцию между словами/n-граммами и текстовыми классами, которые также можно интерпретировать как ключевые слова. Наиболее распространены Чи2 и Взаимная информация.

Случаи использования:

  • На этапе EDA эта информация может сказать, достаточно ли лексической части для различения текстов и будет ли здесь хорошо работать простой векторизатор CountVectorizer или TF-IDF Vectorizer или мне нужны какие-то продвинутые методы.
    Как вы можете видеть на картинке выше, мы могли довольно уверенно предсказать тему по ее униграммам и биграммам, даже если бы мы не видели названий. Это хороший знак!
  • Эту статистику можно использовать для выбора функций, когда нам нужно уменьшить количество измерений при применении CountVectorizer или TF-IDF Vectorizer.
  • Возможно, мы захотим использовать эти оценки в качестве кодирования в векторизации текста.

3. Лексическое разнообразие

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

Были разработаны множественные оценки лексического разнообразия. Некоторые из них перечислены ниже:

  • Соотношение типов и токенов (TTR)
  • Соотношение корневого типа и токена (RTTR)
  • Исправленное соотношение типов и токенов (CTTR)
  • Соотношение типов и токенов Herdan (HTTR)
  • Летнее соотношение типов и токенов (STTR)
  • Массовое отношение типа к токену (MTTR)
  • Соотношение типов и токенов Dugast (DTTR)
  • Соотношение типа скользящей средней к токену (MATTR)
  • Среднее сегментное соотношение типов и токенов (MSTTR)
  • Мера текстового лексического разнообразия (MTLD)
  • Скользящая средняя мера текстового лексического разнообразия (MAMTLD)
  • Гипергеометрическое распределение D (HD-D)

Вы можете извлечь эти партитуры с помощью этой библиотеки.

Случаи использования:

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

4. Синтаксическая информация

Синтаксис касается порядка слов и отношений между ними в предложении.

  • Мы можем исследовать n-граммы, чтобы исследовать отношения между словами. Подсчитав их, мы можем найти часто встречающиеся и показать их на гистограмме, как мы это делали с часто встречающимися словами.
  • Коллокация — ряд слов, которые совмещаются чаще, чем можно было бы ожидать случайно. Как и некоторые слова, словосочетания могут быть специфическими для некоторых типов текстов.
  • Дерево зависимостей показывает, как слова в предложениях зависят друг от друга. Включив информацию о типичных зависимостях в текстовое представление, мы можем получить более высокий результат, например, в задаче определения авторства.
    Извлечение зависимостей доступно в Spacy.
  • Некоторые знаки препинания указывают, является ли предложение повествовательным (.), вопросительным (?) или восклицательным (!). Некоторые из этих типов часто встречаются в определенных жанрах. Например, я ожидаю увидеть больше вопросительных вопросов в интервью, чем в новостных статьях.

Случаи использования:

  • Точно так же, как при подсчете слов мы получаем некоторую информацию о семантике, ту же роль могут играть n-граммы и словосочетания. Следовательно, эти функции могут быть представлены на гистограмме на этапе EDA.
  • Применяя Count- или TF-IDF Vectorizer, мы можем set ngram_range = (1, n) тогда мы сможем представлять тексты не только словами, но и их совпадением.
    Примечание: n обычно не превышает 5.

5. Морфологическая информация

Для извлечения морфологической информации требуется морфологическая маркировка. По этой причине может пригодиться spacy.

После тегирования мы можем подсчитать всю доступную информацию, например. части речи, времена глаголов и т.

Случаи использования:

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

6. Метрики удобочитаемости

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

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

На этом пока все!✨

📈 Код для графиков из статьи, которую вы найдете в этой записной книжке Kaggle.

🤔Поделитесь своими мыслями о функциях текста в разделе комментариев и похлопайте, если вам понравилась статья!

🧠Чтобы узнать больше, ознакомьтесь с Контрольным списком для каждого проекта по науке о данных!