Автоматический анализ текста с помощью Streamlit

Эффективный и быстрый инструмент анализа текста, созданный с использованием Streamlit, включая суммирование текста, теги POS и распознавание именованных сущностей.

Введение в анализ текста

Текстовая аналитика - это автоматизированный процесс преобразования больших объемов неструктурированного текста в количественные данные для выявления идей, тенденций и закономерностей. В сочетании с инструментами визуализации данных этот метод позволяет компаниям понять суть цифр и принимать более обоснованные решения. Это технология искусственного интеллекта (AI), которая использует обработку естественного языка (NLP) для преобразования неструктурированного текста в документах и ​​базах данных в нормализованные структурированные данные, подходящие для анализа или для управления алгоритмами машинного обучения (ML). [1]

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

Любой, кто работал над проблемой НЛП, знает, что анализ текста - самый важный шаг перед тем, как начинать работу с любым решением машинного обучения. Написание всего этого кода часто может занять много времени, и поэтому важно иметь возможность быстро выполнить этот процесс. Создание приложения для автоматического анализа текста имеет множество преимуществ. Тем, кто хочет начать исследование данных, не нужно писать конвейеры для визуализации своих данных и начала моделирования. Подобное приложение сокращает время между исследовательским анализом данных (EDA) и построением модели.

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

Приложение для анализа текста

В моем приложении много инструментов для визуализации и анализа данных. Пользовательский интерфейс - важный аспект моего приложения. Пользовательский интерфейс предлагает несколько инструментов на выбор, используя левый раскрывающийся список.

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

Требования

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

Инструменты, к которым можно получить доступ из приложения

В это приложение интегрировано множество инструментов, и вы можете разместить их все в раскрывающемся списке, как это.

1. Генератор облака слов ☁️

Облако слов - это метод визуализации данных, который составляет неотъемлемый аспект текстовой аналитики. Это текстовое представление, в котором слова отображаются в разных размерах в зависимости от того, как часто они появляются в нашем корпусе. Слова с более высокой частотой выделяются более крупным шрифтом и отличаются от слов с более низкой частотой. Обязательным условием для выполнения этой задачи является набор функций очистки и обработки текста.

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

Функция create_wordcloud была создана в другом файле и находится здесь.

2. Анализ N-грамма

n-грамма - это непрерывная последовательность n элементов из заданного образца текста или речи. Элементами могут быть фонемы, слоги, буквы, слова или пары оснований в зависимости от приложения. N-граммы обычно собираются из корпуса текста или речи. В этом анализе я пытаюсь определить наиболее часто встречающиеся n-граммы. В то время как облако слов сосредоточено на отдельных словах, этот анализ может дать несколько фраз вместо одной. Это используется для анализа стиля письма человека, чтобы увидеть, насколько он повторяющийся и какие шаблоны часто встречаются в письме. Он реализован аналогичным образом, поэтому я не буду повторять его снова, и код можно найти здесь, а вывод - здесь.

3. Анализ тональности ключевых слов

Это задача, состоящая из двух частей. Первая часть - это извлечение настроения, которое для данного предложения определяет, является ли оно положительным или отрицательным. Второй этап - определение того, какое ключевое слово в предложении вызывает эту эмоцию. Ключевые слова извлекаются на основе вклада слова в окончательную тональность утверждения.

Набор данных. Сначала модели были обучены на большом корпусе, чтобы сделать их более надежными и универсальными. Данные были собраны с помощью скребка, который я построил для очистки обзоров Google Play Store. Скребок собрал около 12500 отзывов. Реализацию парсера можно найти в папке Notebooks под именем sentiment_analysis_data_collection.ipynb.

Код для задачи анализа настроений можно найти здесь.

5. Обобщение текста

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

Количество предложений = η * Общее количество предложений

где η - степень сжатия от 0 до 1. Я использовал различные формы алгоритма ранжирования текста, который строит график, связанный с текстом. В графе каждое предложение рассматривается как вершина, и каждая вершина связана с другой вершиной. Эти вершины голосуют за другую вершину. Важность каждой вершины определяется большим количеством голосов. [6] Алгоритмы, которые я использовал, можно найти в Text_Summarization.ipynb записной книжке. Код реферирования в Streamlit можно найти здесь.

6. Пометка части речи

В традиционной грамматике часть речи (POS) - это категория слов, которые имеют аналогичные грамматические свойства и аналогичное синтаксическое поведение. Части речи полезны, потому что они многое говорят о слове и его соседях. Знание того, является ли слово существительным или глаголом, говорит нам о вероятных соседних словах. Действие по присвоению тегов POS словам в корпусе называется тегированием POS. Я намеревался сделать теги на основе набора тегов Penn-Treebank [4]. Это набор из 45 тегов, который использовался для маркировки многих корпусов.

Реализацию можно найти в text_analysis.ipynb записной книжке. Результат в приложении можно увидеть ниже.

7. Распознавание именованных сущностей

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

Для этого я использую библиотеку SpaCy, которая выполняет аннотацию именованных сущностей. Я также добавил поле выбора, из которого мы можем выбрать, какие именованные объекты мы хотим отобразить. Модель распознавания именованных сущностей SpaCy была обучена на корпусе OntoNotes5 [5]. После того, как пользователь вводит предложение, оно маркируется, маркируется и затем добавляется к функции NER, которая помогает в выборе и визуализации различных сущностей. Результат можно увидеть ниже.

Код для POS-тегов и NER можно найти здесь. Целью этой статьи не было предоставить вам весь код прямо здесь, потому что это огромное приложение с множеством аспектов. Вы можете самостоятельно изучить репозиторий и возможности Streamlit. Статья предназначена для ознакомления вас с концепциями анализа текста и развертывания ваших инструментов машинного обучения в Streamlit. Надеюсь, вам понравилось!





использованная литература

[1] Бримакомб, Дж. М. (13 декабря 2019 г.). Что такое интеллектуальный анализ текста, анализ текста и обработка естественного языка? Лингваматика. "Доступ."

[2] Метсис В., Андроутсопулос И. и Палиоурас Г. (2006) Фильтрация спама с помощью наивного байесовского метода - какой наивный байесовский метод? Третья конференция по электронной почте и защите от спама (CEAS), Маунтин-Вью, 27–28 июля 2006 г., стр. 28–69.

[3] Джурафски Д. (2000). Обработка речи и языка. Pearson Education India.

[4] Митчелл П. Маркус, Мэри Энн Марцинкевич и Беатрис Санторини. 1993. Создание большого аннотированного корпуса английского языка: penn treebank. Comput. Лингвист. 19, 2 (июнь 1993 г.)

[5] Weischedel, Ralph, et al. OntoNotes версии 5.0 LDC2013T19. Интернет-загрузка. Филадельфия: Консорциум лингвистических данных, 2013.

[6] Михалча, Рада и Тарау, Пол. (2004). TextRank: упорядочение текста.