このページの本文へ

悟空、秘技「分かち書き」を習う (3/3)

2009年04月22日 08時00分更新

文●清田陽司/東京大学 情報基盤センター 図書館電子化研究部門 助教

  • この記事をはてなブックマークに追加
本文印刷

「パソコンの都合」で単語を扱う ~分かち書き~

  「ほら、やっぱり人間の都合を考えないとダメじゃない。で、人間の都合をどうやってパソコンが考えられるの?」――以前説明した通り、パソコンに情報を扱わせるときには「パソコンの都合」、つまりアルゴリズムを考えてあげないといけません。「人間の都合」をうまく反映したアルゴリズムが必要なのです。転置インデックスを使った検索エンジンに「人間の都合」を反映させるには、単語を転置インデックスのキーワードとして採用するのが一番です。

 単語は文書(=文字列)の断片なので、文字列を分解して単語を切り出すアルゴリズムが必要です。この連載では、文字列から単語を切り出すことを「分かち書き」と呼ぶことにしましょう。分かち書きをするための最も簡単なアルゴリズムとしては、次の2つが考えられます。


1. スペース(空白文字)で区切るアルゴリズム

 英語、ドイツ語、フランス語など、「語と語の間がスペースで区切られている」言語に使えるアルゴリズムです。たとえば、"Natural language processing is interesting" (自然言語処理は面白い)という文字列をスペースで区切ると、「Natural」「language」「processing」「is」「interesting」という5つの単語が切り出されます。すごく簡単ですね。

 スペース(空白文字)で区切るアルゴリズムにはいくつか欠点があります。たとえば、「New York」をスペースで区切ると「New」「York」になってしまうように、単語をさらに細かく区切ってしまうことがあるのです。上で説明したとおり、「New York」から取り出した「New」「York」は単語ではありません。

 また、スペースで区切るアルゴリズムは欧米の言語には通用しますが、日本語はスペースをほとんど使いませんので、この方法では単語を取り出せません。


2. 文字の種類で区切るアルゴリズム

 日本語にはスペースがない代わりに、とても面白い性質があります。文字の種類がたくさんあるのです。ひらがな、カタカナ、漢字、アルファベット(ラテン文字、A~Z)、アラビア数字(0~9)などが代表例です。句読点や括弧文字、ローマ数字、ギリシャ文字など、挙げるとキリがありません。

 試しに、手元にある書籍の巻末索引を開いて、どんな文字でキーワードができているか観察してみてください。大部分のキーワードが、カタカナ・漢字・アルファベットのいずれかでできていることに気づきましたか? ひらがなはほとんど使われていません。「もしかして、カタカナ・漢字・アルファベットだけを抜き出してあげればいいの?」――それでは実際にやってみましょう。

 「パソコンの出現は人類と情報のかかわりの歴史における革命だ」という文を文字の種類ごとに区切ると、「パソコン|の|出現|は|人類|と|情報|のかかわりの|歴史|における|革命|だ」になります。さらにカタカナ・漢字・アルファベットの並びだけを選ぶと、「パソコン」「出現」「人類」「情報」「歴史」「革命」が単語として切り出せました。おめでとうございます! パソコンは文字の種類を簡単に判別できるので、このアルゴリズムも簡単に実現できます。

 このアルゴリズムにも、やはり欠点があります。単語とは呼べない中途半端な文字列を切り出すことが多いのです。「自然言語処理は面白い」からは、「自然言語処理」「面白」が切り出されます。「自然言語処理」はともかく、「面白」は単語ではありません。単語、すなわち私たちがまとまりを感じる最小単位は「面白い」です。単語の中には2種類以上の文字でできているものもたくさんあるのです。

 では、どうすればいいのでしょうか。次回は、これら2つのアルゴリズムの欠点を解決し、コンピュータに単語の区切りを「解釈」させる方法について考えてみます

前へ 1 2 3 次へ

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています