お知らせ

ただいま、シンタックスハイライターの設定を見直しております。
プログラムが見にくくなっているページがありますが、ご容赦ください。

にほんごであそぼ!(形態素解析のお話)

データの活用

辞書と虫眼鏡

こんにちは。Eテレの番組のようなタイトルなので、間違えてこのページに来てしまった人、本当にごめんなさい。少しばかり残っている良心が、サブタイトルをつけるように耳元でささやいたのですが、タイトルを変えるほど気持ちが動きませんでした。

コンピュータ上で日本語を扱って遊ぶためには、工夫が必要です。なんといっても、アルファベットを使う言語や韓国語のように分かち書きされていません。つながって表記された文章を単語レベルまで分解する必要があります。今日はそのお話です。

どうして情報科なのに形態素解析なの?

前回、学習指導要領でのデータの活用についてまとめました。そこで、テキストマイニングという言葉が出てきました。テキストマイニングは文字列を対象にしたデータマイニングのことです。ざっくりいうと、文章からお宝である重要情報を採掘するといった感じでしょうか。しかし、これはものすごく困難なことです。小学生レベルのネタになりますが、「ここではきものをぬいでください」や「ねえちゃんと風呂に入った?」みたいに読点の位置によって全く違う意味になってしまうのが日本語です。そもそも文章をより小さなまとまりにするということをしなければ、お宝どころかまさに玉石混淆なままです。そこで、文章を分割するために形態素解析を行います。

形態素ってなんだろう?

中学校で文章を分割して小さな単位に区切ることを学習します。 文章 → 文 → 文節 → 単語 という感じで分割し、最も小さな単位は、「単語」と習っています。実際はそれよりもさらに分割できます。例えば「お金」という単語ですが、丁寧に表現する接頭辞の「お」と金銭を表す「金」とに分割できます。このように接頭辞や接尾辞のような純粋な単語に付くような語を分割することが形態素解析で、このレベルに分解した一つ一つが形態素になります。

どうやって形態素に分割するの?

Webサイトで

コンピュータでやりましょう!では雑すぎる説明なので、もう少し真面目に説明します。単に形態素に分解するだけなら、Webサイトにいくつかそのようなサイトがあります。いくつかのサイトへのリンクをはっておきます。

形態素解析エンジンをインストールして

実際には、形態素解析エンジンが裏側で動いています。これもいくつかありますので、リンク先を参照してください。

などがあります。これらを使って形態素解析することができます。

プログラムを書いて

形態素解析した後に様々な処理を行うのであれば、プログラムを書くことも選択肢に含めておく必要があります。ここでは、勤務校の授業で生徒に配布したPythonのプログラムを掲載します。ライブラリをインストールしておかなければならないので、コマンドプロンプトを開いて

pip install janome

を実行しておく必要があります。

そして、実際に授業の際に配布したプログラムは次のとおりです。

from janome.tokenizer import Tokenizer

t = Tokenizer()
text = '日本語も分かち書きだったら、楽なのに。'
tokens = t.tokenize( text )
for token in tokens:
 print( token )

変数textに代入する文字列を変更していろいろ試してみることができます。固有名詞を含めると予想しないところで分解していることがあります。生徒には作業全体の流れが見えにくくなってしまわないように、授業では行いませんでしたが、ユーザ定義辞書を追加して本来は1形態素になる語句が分解されないようにできます。まず、次のようなCSVファイルを用意します。

時の鐘,1223,1223,4000,名詞,固有名詞,一般,*,*,*,時の鐘,トキノカネ,トキノカネ

このCSVファイルはMeCabのドキュメントを参考にしてください。

辞書を使って形態素解析するには、3行目を次のように変更します。あわせて辞書に登録した「時の鐘」を形態素解析するために、5行目の文も変更しました。

from janome.tokenizer import Tokenizer

t = Tokenizer("dic.csv", udic_enc="utf8")
text = '時の鐘に行きたい。'
tokens = t.tokenize( text )
for token in tokens:
 print( token )

辞書の形式がもう少し簡単な簡略辞書フォーマットもありますが、本エントリーでは割愛します。次のリンクを参考にしてください。

これで、とりあえず形態素に分割できました。

どうでもいいのですが、川越近辺に住んでいないと「時の鐘」という言葉が謎だと思います。川越のシンボルのような存在で、江戸時代から時を告げてきた鐘です。今でも1日に4回鳴らされているそうです。

この形態素を使って分析していくのは次のステップになります。今回はこれでおしまい。それでは、また。

この記事を書いた人
春日井 優

高校で情報科という教科を担当しています。以前は数学科も担当していました。(今でも数学科の教員免許状は有効です。)プログラムを覚えたのは、「ゲームセンターあらし」という漫画のキャラクターがBASICを解説する「こんにちはマイコン」を読んだことがきっかけでした。

Posted by kasugai