【初心者必見】Pythonで学ぶテキストマイニング&ワードクラウド活用術!ブログSEO改善へ向けて!

この記事は広告を含みます。

仕事の休みにタイトルにネタだけ書いてポケットに携帯を入れたら、公開してしまい、反省です。ブログあるあるなのでしょうか。。

さてさて、今回は、そんな失敗談から始まる記事ですが、ただの反省記ではなく、、 この記事では、Pythonを使った初心者向けのテキストマイニング入門として、具体的な手法や活用例を分かりやすく紹介していきます。

テキストマイニングとは?

テキストマイニングとは、大量の文章データから重要な情報や隠れたパターンを抽出する技術です。 - 文章の中のキーワード抽出 - 感情分析やトレンドの把握 - 市場の動向調査

などなどの用途があり、SNSやブログ、口コミなどの分析に広く利用されているようです。

初心者にも分かりやすい例

中学生の作文を例に挙げると、全員の作文から「一番使われている言葉」や「テーマごとの出現頻度」を調べる作業と似ています。

面白いですよね?

これにより、文章全体の傾向や重要な要素を見つけ出すことができます。

Pythonで始めるテキストマイニング

Pythonテキストマイニングの分野で非常に人気のある言語です。特に初心者でも扱いやすく、充実したライブラリが揃っています。

おもろしろかったら、定期企画でやりたいですね。

おすすめライブラリ

  • NLTK (Natural Language Toolkit)

初心者向けの豊富なドキュメントとサンプルがあるため、テキストの基本処理(トークン化、ステミング、品詞タグ付けなど)を学ぶのに最適です。 - spaCy

より高速で実践的な処理が可能。大量データの解析や固有表現抽出にも強みがあります。

  • Gensim

トピックモデリングやWord2Vecなどの高度な分析に適しています。

  • scikit-learn

テキストの数値化(CountVectorizer、TfidfVectorizer)を通じた機械学習の導入に役立ちます。

NLTKでの簡単な頻度分析

以下は、NLTKを使って文章をトークン化するシンプルな例です。

pip install janome
from janome.tokenizer import Tokenizer

tokenizer = Tokenizer()
text = "今日はとてもいい天気ですね。"
tokens = tokenizer.tokenize(text)

for token in tokens:
    print(token)

出力

(venv) C:\Users\user\Documents\python\text_mining>python sample_mining.py
今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
とても  副詞,助詞類接続,*,*,*,*,とても,トテモ,トテモ
いい    形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気    名詞,一般,*,*,*,*,天気,テンキ,テンキ
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね      助詞,終助詞,*,*,*,*,ね,ネ,ネ
。      記号,句点,*,*,*,*,。,。,。
from janome.tokenizer import Tokenizer
from collections import Counter

tokenizer = Tokenizer()
text = "今日はとてもいい天気ですね。公園で遊ぶ子供たちが元気いっぱいです。"
nouns = [token.surface for token in tokenizer.tokenize(text) if token.part_of_speech.startswith('名詞')]

count = Counter(nouns)
print(count.most_common())

出力

[('今日', 1), ('天気', 1), ('公園', 1), ('子供', 1), ('たち', 1), ('元気', 1), ('いっぱい', 1)]

このコードは、文章を単語ごとに分割し、各単語をリストとして出力します。実際に手を動かしてみることで、テキストマイニングの基礎を体感できます。

Janomeで抽出した名詞のリストをさらにNLTKにかけることで、頻度分布などの統計的解析を手軽に行うことができます。ただし、必ずしもNLTKに依存する必要はなく、Pythonの標準ライブラリやその他のツールでも十分に解析を行えるので、用途や好みに合わせて選ぶと良いかもですね。

ワードクラウドで画像化する方法

テキストマイニングの結果を視覚的に分かりやすく伝えるために、ワードクラウドは非常に有効です。頻出単語ほど大きく表示されるため、一目で文章の特徴が把握できます。

Pythonでワードクラウドを作成する手順

  • ライブラリのインストール

まずは、wordcloudmatplotlib をインストールします。

pip install wordcloud matplotlib

以下は、日本語フォントを指定してワードクラウドを生成するサンプルコードです。

from janome.tokenizer import Tokenizer
from collections import Counter
import matplotlib.pyplot as plt
from wordcloud import WordCloud

tokenizer = Tokenizer()
text = "今日はとてもいい天気ですね。公園で遊ぶ子供たちが元気いっぱいです。"
nouns = [token.surface for token in tokenizer.tokenize(text) if token.part_of_speech.startswith('名詞')]

count = Counter(nouns)
# print(count.most_common())

font_path = "C:/Windows/Fonts/msgothic.ttc"  # Windowsの例

wordcloud = WordCloud(
    font_path=font_path,
    width=800,
    height=400,
    background_color="white"
).generate_from_frequencies(count)

plt.figure(figsize=(10, 8))
plt.imshow(wordcloud)
plt.axis("off")
plt.title("text_mining_sample")
plt.show()

参考に記事を2つPickしてみます

kunio-ud-zatta.hatenablog.com

kunio-ud-zatta.hatenablog.com

うえの二つの文章を同じようにしてみます。

code系のワードが多いですね。もっと、改良したいですね。。

SEO対策としてのテキストマイニング活用法

テキストマイニングは、SEO対策にも活用できます。例えば、以下のような使い方があります。 - キーワード戦略の改善

抽出されたキーワードから、記事内で強調すべきポイントが明確になります。

  • 感情分析

読者のコメントやSNSの反応を解析し、ユーザーが求める内容やトレンドを把握する。

  • コンテンツ最適化

文章の中で頻出する語句や表現を整理し、より検索エンジンに評価されるコンテンツ作りに活かす。

さいごに

初心者でも簡単に取り組める方法を試し、SEO対策やブログ改善のヒントにしていただければ幸いです。