【簡単】Pythonでワードクラウドを作る方法
ワードクラウドとは
ワードクラウドは、テキストデータの中で頻繁に出現する単語を視覚的に表現する方法です。
単語の出現頻度が高いほど、その単語は大きく表示されます。
これにより、テキストの中でのキーワードやトピックを一目で把握することができます。
ワードクラウドは、ニュース記事、論文、ウェブサイトのコンテンツなど、さまざまなテキストデータの分析に使用されます。
特に、大量のテキストデータを一度に分析する際に、キーワードやトピックの傾向を迅速に把握するのに役立ちます。
ワードクラウドがやっていること
これからPythonでの実装方法を紹介していきますが、その前に、
結局、ワードクラウドは何をやっているか?のご説明です。
ワードクラウドは単語の出現回数によって、単語の表示サイズを変えます。コレがワードクラウドの本質です。
まずは、分析するテキストを、単語に分解します。
そして、単語ごとにテキストに出現する回数をカウントします。
出現回数が高い順に単語を並び替えを行い、出現回数に応じて表示サイズを変えるプログラムを走らせます。
なお、単語の出現位置はランダムで、コードを実行するたびに変わります。
Pythonでの実装方法
Google Colaboratoryで実装していきます
1. ライブラリーのインストール
!pip install -q mecab-python3
!pip install -q ipadic
!pip install -q japanize-matplotlib
!apt-get -yq install fonts-ipafont-gothic
2.ライブラリーのインポート
import pandas as pd
import numpy as np
import unicodedata
import MeCab
from collections import Counter
import requests
from bs4 import BeautifulSoup
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import ipadic
import re
3.テキストの取得
url = "https://www.aozora.gr.jp/cards/000148/files/789_14547.html"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
text = soup.get_text()
4.テキストの前処理
#関数の設定
def mecab_tokenizer(text):
replaced_text = unicodedata.normalize("NFKC",text)
replaced_text = replaced_text.upper()
replaced_text = re.sub(r'[【】 () () 『』 「」]', '' ,replaced_text) #【】 () 「」 『』の除去
replaced_text = re.sub(r'[\[\[]\]]', ' ', replaced_text) # []の除去
replaced_text = re.sub(r'[@@]\w+', '', replaced_text) # メンションの除去
replaced_text = re.sub(r'\d+\.*\d*', '', replaced_text) #数字を0にする
parsed_lines = mecab.parse(replaced_text).split("\n")[:-2]
#表層系を取得
surfaces = [l.split("\t")[0] for l in parsed_lines]
#品詞を取得
pos = [l.split("\t")[1].split(",")[0] for l in parsed_lines]
#名詞、動詞、形容詞に絞り込み
target_pos = ["名詞", "動詞", "形容詞"]
token_list = [t for t , p in zip(surfaces, pos) if p in target_pos]
#ひらがなのみの単語を除く
kana_re = re.compile("^[ぁ-ゖ]+$")
token_list = [t for t in token_list if not kana_re.match(t)]
#各トークンを少しスペースを空けて(' ')結合
return ' '.join(token_list)
#関数の実行
words = mecab_tokenizer(text)
5.ワードクラウドの作成
#フォントの設定
font_path="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf"
#色の設定
colormap="Paired"
wordcloud = WordCloud(
background_color="white",
width=800,
height=800,
font_path=font_path,
colormap = colormap,
stopwords=["する", "ある", "こと", "ない"],
max_words=100,
).generate(words)
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
6.ワードクラウドのカタチを変える
以下の画像をダウンロードして、Googleコラボのランタイムにアップロードしてください。ファイルパス名は、/content/cat.pngにします。
from PIL import Image
font_path="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf"
colormap="coolwarm"
mask = np.array(Image.open("/content/cat.png"))
wordcloud = WordCloud(
background_color="white",
width=800,
height=800,
font_path=font_path,
colormap = colormap,
stopwords=["する", "ある", "こと", "ない"],
max_words=200,
mask=mask
).generate(words)
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!