Согласно Википедии:

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

Дополнительная литература: Интеллектуальный анализ текста — Википедия

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

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

  1. Получение данных.

Первым шагом в каждом проекте по науке о данных или машинному обучению является получение данных для работы. здесь мы будем использовать «запрос», чтобы получить данные из Википедии, которые будут информировать о HTML.

import requests 
url = 'https://en.wikipedia.org/wiki/Machine_learning'
text = requests.get(url).content.decode('utf-8')
print(text[:1000])

2. Преобразование данных.

мы импортировали часовые данные в виде кода HTML, поэтому нам нужно преобразовать наши данные в более структурированную форму. В этом случае мы будем использовать встроенный объект HTMLParser из python.

from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
    script = False
    res = ''
    def handle_starttag(self, tag, attrs):
        if tag.lower() in ['script', 'style']:
            self.script = True
    def handle_endtag(self, tag):
        if tag.lower() in ['script', 'style']:
            self.script = False
    def handle_data(self, data):
        if str.strip(data) == '' or self.script:
            return
        self.res += ' '+data.replace('[ edit ]','')
parser = MyHTMLParser()
parser.feed(text)
text = parser.res
print(text[:1000])

3. Статистика.

Самый важный шаг — преобразовать наши данные в какую-то форму, из которой мы можем сделать выводы. В нашем случае мы хотим извлечь ключевые слова из текста и посмотреть, какие из них более значимы. Мы будем использовать библиотеку Python под названием RAKE для извлечения ключевых слов.

import sys
!{sys.executable} -m pip install nlp_rake
import nlp_rake
extractor = nlp_rake.Rake(max_words=2, min_freq=2,min_chars=13,)
res = extractor.apply(text)
res

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

4. Визуализация

WorldCloud — отличный инструмент, который можно использовать для визуализации частотности слов.

!{sys.executable} -m pip install wordcloud
from wordcloud import WordCloud
wc = WordCloud(background_color='white', width=800, height=600)
plt.figure(figsize=(15,7))
plt.imshow(wc.generate_from_frequencies({k:v for k,v in res}))

WordCloud объект отвечает за прием либо исходного текста, либо предварительно вычисленного списка слов с их частотностью, а также возвращает и изображение, которое затем можно отобразить с помощью matplotlib.

Давайте попробуем построить исходный текст, который не имеет частоты:

plt.figure(figsize=(15,8))
plt.imshow(wc.generate(text))

5. Заключение.

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

Бонус.

мы можем сохранить наш результат как изображение png.

wc.generate_from_frequencies({k:v for k,v in res}).to_file('ml_worldcl.png')

Дальнейшее чтение:

Наука о данных для начинающих (microsoft.github.io)