環境
・MacOS
・python 3.8.7
・mecab-python3 1.0.3
・matplotlib 3.3.3
・wordcloud 1.8.1
概要
業務上SEO対策の一環で、競合サイトを解析する機会がありますが、どのようなキーワードを使って訴求しているか、一目で分かる方法がないか考えた結果、上述のライブラリをJupyter Notebookを使って実装することにしたので、参考までに記します。
手順
・事前に、必要に応じてライブラリ(Mecab,Matplotlib,WordCloud)をインストール
・該当ページのテキストをコピーし、任意のファイルに貼り付け
・Mecabで形態素解析
・WordCloudで可視化
該当ページのテキストをコピーし、任意のファイルに貼り付け
解析したいページのテキストを抽出し、テキストを貼り付けたファイルを読み込む。
index.ipynb
f = open('your_text.txt')
text = f.read()
f.close()
Mecabライブラリをインポート
Mecabの"-Ochasen"をインポートしnodeを作成。
今回は、形容詞、名詞、動詞の3種類を抽出。
index.ipynb
import Mecab
tagger = Mecab.Tagger("-Ochasen")
# nodeの作成
node = tagger.parseToNode(text)
word = ''
while node:
hinshi = node.feature.split(".")[0]
if hinsh in ['形容詞', '名詞', '動詞']:
origin = node.surface
word = word + " " + origin
node = node.text
WordCloudをインポート
後々アウトプットする画像の幅や高さ等の規格、抽出された文字の大きさを指定したインスタンスを生成。
generate()でワードクラウドを作成し、不要な目盛り表記は削除。
index.ipynb
from wordcloud import WordCloud
# インスタンス作成
wordcloud = WordCloud(background_color="white",
font_path='/System/Library/Fonts/ヒラギノ明朝 ProN.ttc',
width=800,
height=500,
min_font_size=10)
# ワードクラウドの作成
wordcloud.generate(word)
# 目盛り表記の削除
plt.tick_params(
labelbottom=False,
labelleft=False,
labelright=False,
labeltop=False,
length=0
)
Matplotlibをインポート
グラフ描画でよく使われるライブラリ"Matplotlib"をインポート。
画像を表示し、拡張子pngで画像をアウトプット。
index.ipynb
import matplotlib.pyplot as plt
# ワードクラウドの表示
img = plt.imshow(wordcloud)
# 画像の書き出し
img.write_png("your_text.png")
まとめ
どの言葉が頻出しているか、キーワードを可視化し全体像を俯瞰することができると思います。
これからも興味のあるライブラリなど実装していきます!