Обработка тематического моделирования / Облако слов
Table Of Content
- Определение
- Подготовка
- Google Colab
- API Twitter
- _Tweepy_
- Natural Language Toolkit (NLTK)
- Как создать облако слов
- Парсинг данных из Twitter
- Установка библиотеки!pip install tweepy
- Импорт библиотекimport tweepyimport pandas as pdimport numpy as np
- Заполните ключ APIAPI_key = 'Вставьте ваш ключ API'API_secret = 'Вставьте ваш секретный ключ API'access_token = 'Вставьте ваш токен доступа'access_token_secret = 'Вставьте ваш секретный токен доступа'
- Аутентификацияauth = tweepy.OAuthHandler(API_key, API_secret)auth.set_access_token(access_token, access_token_secret)api = tweepy.API(auth)
- Поиск твитов по ключевому словуtweets = api.search('chanyeol', count=5000, lang='id')
- Показать твитыtweets
- Вывести собранные твитыdata = pd.DataFrame()data['Created At'] = [tweet.created_at for tweet in tweets]data['Screen Name'] = [tweet.user.screen_name for tweet in tweets]data['Tweet'] = [tweet.text for tweet in tweets]data['Location'] = [tweet.user.location for tweet in tweets]data['Number of Retweet'] = [tweet.retweet_count for tweet in tweets]data['Number of Like'] = [tweet.favorite_count for tweet in tweets]display(data.head(25))
- Сохранить в формате .CSVdata.to_csv('scarping-chanyeol.csv')
- Маппинг
- Ссылки :
Определение
Что такое облако слов? Облако слов - это один из методов визуализации текстовых данных. Этот график популярен в области обработки текстов, так как он легко понятен. С помощью облака слов можно отобразить частоту использования слов в привлекательной и информативной форме. Чем чаще слово используется, тем больше его размер в облаке слов.
Подготовка
Для создания облака слов необходимы данные. В этом примере мы возьмем данные из Twitter.
Google Colab
Google Colab используется для написания и выполнения кода, и доступен по ссылке https://colab.research.google.com/. Затем нажмите "New notebook".
API Twitter
Чтобы получить API Twitter, вам необходимо зарегистрироваться в качестве разработчика на Twitter по ссылке https://developer.twitter.com/en/apply-for-access. Затем вы можете создать новый проект, чтобы получить API Twitter и токен доступа по ссылке https://developer.twitter.com/en/portal/projects-and-apps.
Tweepy
Tweepy - это библиотека, используемая для сбора данных из Twitter с использованием API Twitter и ключевых слов. Вот документация по tweepy https://docs.tweepy.org/en/latest/.
Natural Language Toolkit (NLTK)
NLTK - это платформа для разработки программ анализа текста. Вот ссылка на модуль NLTK https://www.nltk.org/py-modindex.html.
Как создать облако слов
Парсинг данных из Twitter
Первым шагом является установка Tweepy в Google Colab
# Установка библиотеки!pip install tweepy
Затем импортируем библиотеки
# Импорт библиотекimport tweepyimport pandas as pdimport numpy as np
Затем заполните ключ API и токен доступа Twitter
# Заполните ключ APIAPI_key = 'Вставьте ваш ключ API'API_secret = 'Вставьте ваш секретный ключ API'access_token = 'Вставьте ваш токен доступа'access_token_secret = 'Вставьте ваш секретный токен доступа'
Затем выполните аутентификацию
# Аутентификацияauth = tweepy.OAuthHandler(API_key, API_secret)auth.set_access_token(access_token, access_token_secret)api = tweepy.API(auth)
Далее найдите твиты с помощью ключевого слова и желаемого количества
# Поиск твитов по ключевому словуtweets = api.search('chanyeol', count=5000, lang='id')
Затем отобразите твиты
# Показать твитыtweets
Отобразите первые 25 твитов в виде таблицы
# Вывести собранные твитыdata = pd.DataFrame()data['Created At'] = [tweet.created_at for tweet in tweets]data['Screen Name'] = [tweet.user.screen_name for tweet in tweets]data['Tweet'] = [tweet.text for tweet in tweets]data['Location'] = [tweet.user.location for tweet in tweets]data['Number of Retweet'] = [tweet.retweet_count for tweet in tweets]data['Number of Like'] = [tweet.favorite_count for tweet in tweets]display(data.head(25))
Сохраните данные в формате csv
# Сохранить в формате .CSVdata.to_csv('scarping-chanyeol.csv')
Затем загрузите csv-файл, полученный в результате выполнения кода, и загрузите его в папку на вашем диске.
Маппинг
Шаг 1: Импорт библиотек
import pandas as pd
import numpy as np
import re
import nltk
import matplotlib.pyplot as plt
%matplotlib inline
Затем импортируем диск, чтобы получить доступ к CSV-файлу с диска. В этом процессе вам будет предложено ввести токен. Вы можете нажать на ссылку в выводе и перейти к своей учетной записи Google. Выберите учетную запись, в которой хранится CSV-файл, и скопируйте токен после этого. Введите скопированный токен в поле ввода в выводе, а затем нажмите Enter.
from google.colab import drive
drive.mount('/content/drive')
Затем укажите путь к CSV-файлу на диске для загрузки данных CSV.
dataset = pd.read_csv("/content/drive/My Drive/TTKI/scarping-chanyeol.csv")
Затем отобразите первые несколько строк данных в виде таблицы.
dataset.head()
Объявите содержимое твита в переменной и отобразите его.
label = dataset['Tweet']
label[:10]
Затем выполните очистку текста.
processed_features = []
for sentence in range(0, len(label)):
# Удаление всех специальных символов
processed_feature = re.sub(r'\W', ' ', str(label[sentence]))
# Удаление всех отдельных символов
processed_feature = re.sub(r'\s+[a-zA-Z]\s+', ' ', processed_feature)
# Удаление отдельных символов в начале
processed_feature = re.sub(r'^[a-zA-Z]\s+', '', processed_feature)
# Замена нескольких пробелов одним пробелом
processed_feature = re.sub(r'\s+', ' ', processed_feature, flags=re.I)
# Удаление префикса 'b'
processed_feature = re.sub(r'^b\s+', '', processed_feature)
# Преобразование в нижний регистр
processed_feature = processed_feature.lower()
processed_features.append(processed_feature)
Импорт NLTK.
import nltk
nltk.download('punkt') # Токенизатор предложений
nltk.download('stopwords') # Стоп-слова
Импорт стоп-слов на индонезийском языке.
from nltk.corpus import stopwords
stop = nltk.corpus.stopwords.words('indonesian')
label = label.apply(lambda x: " ".join(x for x in x.split() if x not in stop))
label.head()
Затем удалите пунктуацию.
label = label.str.replace('[^\w\s]','')
label = label.str.replace('RT','')
label = label.str.replace('[\d]', '')
label.head()
Последний шаг - облако слов.
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
word_string = " ".join(label.str.lower())
wordcloud = WordCloud(stopwords=STOPWORDS, background_color='white').generate(word_string)
plt.figure(figsize=(15,10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()