Pythonを使った日本語テキストマイニング:夏目漱石「こころ」

記事
IT・テクノロジー
テキストマイニングとは、テキストデータから有用な情報を抽出するための方法です。それを行う言語としてPythonは非常に優れています。この記事では、Pythonとそのライブラリを使い、夏目漱石の「こころ」をテキストマイニングする基本的な手順を解説します。

0.必要なライブラリのインストール

今回使用するライブラリは、MeCab、gensimです。
MeCabはオープンソースの形態素解析エンジンであり、日本語テキストを単語に分割し、それぞれの単語の品詞情報などを提供することができます。
gensimは自然言語処理ライブラリで、主にトピックモデリングとドキュメント類似性の分析に利用されます。これらのタスクは、大量のテキストデータから主要なトピックを抽出したり、文書間の類似度を計算したりするためのものです。
コマンドプロンプトからインストールを行ってください。
pip install Mecab
pip install gensim

1. データの取得

まずは、青空文庫から「こころ」のテキストをダウンロードします。ここでは、事前に手動でダウンロードしたテキストデータを使うこととします。

2. データの読み込み

Pythonの標準ライブラリを使ってテキストファイルを読み込みます。
f= open('kokoro.txt', encoding="utf-8")
text = f.read()
f.close()

3. データの前処理

日本語テキストデータを解析するためには、形態素解析という前処理が必要です。ここでは、日本語に対応した形態素解析器「MeCab」を用いてテキストを単語に分割します。また、不要な単語(ストップワード)を除去します。
import MeCab

m = MeCab.Tagger()

def tokenize_text(text):
    text = m.parse(text).strip()
    return text

tokenized_text = tokenize_text(text)

4. 単語の出現頻度の分析

テキストマイニングの一つの手法として、単語の出現頻度を分析します。ここでは、Pythonのcollectionsライブラリを使って単語の出現頻度をカウントし、最も出現頻度が高い単語を表示します。
from collections import Counter

words = tokenized_text.split()
counter = Counter(words)

# 最も頻繁に出現する10単語を表示
print(f'頻出単語: {counter.most_common(10)}')

5. 単語の共起関係の分析

次に、単語の共起関係を分析します。単語の共起関係とは、ある単語が他の単語と一緒に出現する頻度を分析することです。ここでは、gensimライブラリのmodels.Phrasesを用いて共起関係を分析します。
from gensim.models import Phrases
from gensim.models.phrases import Phraser

# Phrasesモデルの学習
phrases = Phrases([words], min_count=10, threshold=100)

# 共起関係の抽出
bigram = Phraser(phrases)
transformed_text = bigram[words]

# 共起関係の確認
print(f'共起関係: {transformed_text}')

以上がPythonを用いた日本語テキストマイニングの基本的な手順です。これらの基本的な手法をマスターしたら、次のステップとして、感情分析やテキスト分類など、さらに高度なテキストマイニングの手法を学ぶことができます。

Pythonのお悩み相談

ビデオチャットによるPythonのお悩み相談をしています。「独学でPythonの勉強を始めてみたけど、何から学べばいいかわからない」「Pythonでどんなことができるかイメージできていない」など、お気軽にご相談ください!


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す