Согласно Википедии:
«Интеллектуальный анализ текста, также называемый интеллектуальным анализом текстовых данных, аналогичный текстовой аналитике, — это процесс извлечения высококачественной информации из текста. Он предполагает обнаружение компьютером новой, ранее неизвестной информации путем автоматического извлечения информации из различных письменных источников».
Дополнительная литература: Интеллектуальный анализ текста — Википедия
Технологии/человеческое развитие, как видно, значительно выросли за эти годы, что помогло людям и другим видам остаться на грани (выжить). В области искусственного интеллекта / машинного обучения анализ текста / аналитика стал одним из основных способов решения бизнес-проблем (или проблем в целом) за счет применения методов статистической лингвистики и машинного обучения, которые моделируют и структурируют текстовые данные в бизнес-аналитику, EDA, исследования и развитие. Интеллектуальный анализ текста используется в таких областях, как программное обеспечение, биомедицина, анализ настроений, бизнес-аналитика.
В этом примере давайте попробуем обнаружить больше связанных понятий, выполнив интеллектуальный анализ текста. Мы начнем с текста о машинном обучении, извлечем из него ключевые слова, а затем попробуем визуализировать результат.
- Получение данных.
Первым шагом в каждом проекте по науке о данных или машинному обучению является получение данных для работы. здесь мы будем использовать «запрос», чтобы получить данные из Википедии, которые будут информировать о 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')
Дальнейшее чтение: