PythonとJanomeで始める!日本語形態素解析と分かち書き入門


この記事では、Pythonの形態素解析ライブラリJanomeを使って、日本語の文章を単語に分割する「分かち書き」について解説します。自然言語処理の基礎となる形態素解析は、日本語の文章を理解し、分析するために不可欠な技術です。

形態素解析とは?

形態素解析とは、文章を意味を持つ最小単位の「形態素」に分割する分析手法です。例えば、「私は猫が好きです」という文章は、「私」「は」「猫」「が」「好き」「です」という形態素に分けられます。日本語は単語の区切りが曖昧なため、形態素解析は文章の構造を把握する上で非常に重要です。

分かち書きとは?

分かち書きは、形態素解析の結果として得られる単語の羅列です。文章を単語ごとに区切って表示することで、テキストデータの前処理や分析が容易になります。


Janomeとは?

Janomeは、純Pythonで書かれた日本語の形態素解析ライブラリです。MeCabなどの外部ライブラリを必要とせず、手軽に利用できるのが特徴です。シンプルなAPIで、初心者でも簡単に形態素解析を行うことができます。

Janomeのインストール方法

Janomeはpipを使って簡単にインストールできます。

pip install janome

Janomeを使った形態素解析と分かち書きの基本

Janomeを使って形態素解析と分かち書きを行う基本的な手順を説明します。

Tokenizerの利用

Janomeで形態素解析を行うには、Tokenizerクラスを使用します。

from janome.tokenizer import Tokenizer

t = Tokenizer()
text = "すもももももももものうち"
for token in t.tokenize(text):
    print(token)

上記のコードを実行すると、以下のように形態素の情報が出力されます。

すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

分かち書き(単語分割)の例

分かち書きだけを行う場合は、wakatiメソッドを使用すると便利です。

from janome.tokenizer import Tokenizer

t = Tokenizer()
text = "Pythonで日本語の形態素解析を学ぶ"
wakati_words = t.wakati(text)
print(" ".join(wakati_words))

実行結果は以下のようになります。

Python で 日本語 の 形態素 解析 を 学ぶ

形態素情報の活用

tokenizeメソッドで得られるTokenオブジェクトには、単語の表層形だけでなく、品詞や読みなどの詳細な形態素情報が含まれています。これらの情報を活用することで、より高度なテキスト分析が可能になります。

品詞情報の抽出

例えば、名詞だけを抽出したい場合は以下のように記述します。

from janome.tokenizer import Tokenizer

t = Tokenizer()
text = "私の趣味は読書とプログラミングです。"
nouns = []
for token in t.tokenize(text):
    if token.part_of_speech.startswith('名詞'):
        nouns.append(token.surface)
print(nouns)

実行結果:

['私', '趣味', '読書', 'プログラミング']

まとめ

Janomeを使うことで、Pythonから手軽に日本語の形態素解析や分かち書きを行うことができます。これらの技術は、テキストマイニング、自然言語処理、情報検索など、様々な分野で活用されています。ぜひJanomeを使って、日本語テキストデータの分析に挑戦してみてください。

あわせて読みたい

学習の順序はPython学習のロードマップ、標準で使える機能の一覧はPython標準ライブラリのモジュール一覧にまとめています。

詳しくは形態素解析とは?日本語をAIが理解する仕組みを完全解説で解説しています。