Special
» 2015年04月23日 10時00分 UPDATE

クラウド辞書とキラキラネームの関係とは?:スマホやPCはどのように“言葉”を扱っているのか?――「Simeji」の日本語入力システム入門 (1/4)

スマホやPCを使う上で欠かせない日本語入力。今ではできて当たり前のことだが、精度の高いかな漢字変換を実現するまでには長い時間がかかっている。その開発の歴史を、2人の専門家に振り返ってもらった。

[PR/ITmedia]
PR

 フィーチャーフォンとスマートフォンの違いはさまざまあるが、スマホはPCのように日本語入力システム(アプリ)を入れ替えできるのが便利という人は多い。またスマホ自体の処理能力もアップし、日本語入力アプリの性能も高くなったことで、PCの日本語入力システムに匹敵する変換精度を持つものも増えてきた。さらに通信機能も備わっているため、クラウドを活用した新しい言葉への対応も速い。

 そんなスマートフォン向け日本語入力システムで高い人気を得ているのが、バイドゥの「Simeji」だ。ではSimejiはどのように日本語を処理しているのか、またほかの日本語入力システムとどんな違いがあるのか? それを理解するためにも、まずスマホやPCなどの現在の“コンピューター”向け日本語入力システムがどう進化してきたのかをみていきたい。

 今回は、首都大学東京の小町守准教授とバイドゥの加藤昌範氏に、日本語入力システムの進化の歴史を説明してもらった。小町准教授は同大 システムデザイン学部 情報通信システムコースで自然言語処理の研究開発に従事。大規模テキストを用いた統計的手法によって、人間の言葉を解析し、多言語コミュニケーション支援につなげる研究を行っている。また加藤氏は、1986年よりソフトウェア開発企業で製品の開発や販売に携わり、日本語、中国語の漢字変換ソフトや校正支援ツールなどの言語処理系システムを開発。現在は、バイドゥでSimejiの変換性能の向上に携わっている。

“実現不可能”だった日本語入力 エンジニアが図書館を巡って辞書を作成

小町氏 私は2005年以降に自然言語処理の研究を始めましたので、それ以前の歴史的な話は調べた範囲、伝え聞いた範囲になりますが、コンピューターの日本語入力、いわゆる「かな漢字変換」に関する歴史的な経緯を少し紹介したいと思います。

photo 首都大学東京の小町守准教授

 英語を始めとするヨーロッパの言語ですと、文字入力はキーボードにある文字を打てばいい。タイプライターをイメージしてもらうと分かりやすいと思いますが、アルファベットとシフトキーを押すくらいで、だいたい文ができあがります。日本語だと使える文字が、ひらがなとカタカナ、記号を合わせて数百、JISが定めたコンピューター用の漢字を入れると数千の文字があるので、キーボードにあるキーとの1対1対応では入力できないという背景があります。そこで過去にいろんな取り組みがありました。

 1970年代の半ばには、「日本語の入力システムなんてコンピューターでできるわけがない」と話す学者もいたくらいでしたが、今では幼稚園児でも使えるくらい、当たり前の技術になりました。

 かな漢字変換なんて無理、と思われていた時代から40年が経ち、コンピューターや携帯電話、スマートフォンがこんなに普及しました。同時にこうしたデバイス上でさまざまな日本語入力システムが動いています。もちろん、現在に至るまでさまざまな試行錯誤の変遷がありました。 

 例えばメモリーの容量、ハードディスクの容量が増えたことで、辞書をものすごく大きくできるようになったり、プロセッサーが高速になったことで複雑な変換アルゴリズムを動かすことができるようになりました。最初に、変換アルゴリズムの試行錯誤について話をしたいと思います。

 どうすれば、ひらがなの文字列をかな漢字混じり文にできるのか? という課題に対し、最初は人手で、変換する文字や文のルール作りをしました。文法や辞書にある知識を元に、1つ1つ、アルファベットやひらがなで入力された「読み」をどの漢字に変換するのか、マンパワーで指定していきました。

 言語を使うので言語学の知識がないといけないのですが、実際に開発するのはエンジニア。大企業であれば人文学部出身者を言語学者として雇ったりしたでしょうが、日本語がネイティブな人なら、ある程度の経験や直感で決められますので、言語学の専門家じゃなくてもかな漢字変換用の辞書を作成することがあっただろうと思います。

 「電脳日本語論」(篠原一著、作品社刊:2003年)という本には、有名な日本語入力システムを開発してきた人たちのことが描かれていますが、辞書作成にまつわる泥臭い話がたくさんあって非常に面白いです。現在の日本語入力システムが形作られてきた1970年代から80年代は、ヒューリスティックというか、いろんな試行錯誤をして、たまたまうまくいく方法が見つかった、というようなことで、つぎはぎしながら開発されていたのかなと思っています。徳島の図書館に行って、ひたすら単語を登録した、というようなエピソードもありました。

加藤氏 この時代は単語を集めるのも全部人力でした。今みたいにインターネットもありませんから、単語だけでなくさまざま文章の使われ方を知る機会も少ない。読みをどう漢字に変換するのか、どういう風に順番付けするかは、全部人力でやっていました。それは難しかったです。

photo バイドゥの加藤昌範氏

 例えばエンジニアは、先頭の文節から入力していくイメージで日本語変換システムを作るのですが、実際に日本語を入力するユーザーは、単語を入れて確定した後に「を」を入れるとか、付属語から入力することもあるので、誤変換をする確率が高くなったりする。ユーザーによって入力をする癖がありますから、付属語から入ってもちゃんと入力できるように変換の優先順位を調整するとか、その辺は全部人力でやっていたので、すごく時間がかかりましたね。

小町氏 入力の単位も人によって結構違いが出る。自然言語処理をやっていると、文の単位で入力されることが多いので、文全体を入力して変換するとうまくいくようなアルゴリズムを考えがちなんですが、文節単位で切った方がいいというのはよくあります。あと、ユーザーが誤変換に慣れてきて、この単位で入れると誤変換されないということを学習して、短い単位で入れることもよくありますね。

加藤氏 ツール(日本語入力システム)によって癖がありますから、そういうことがありますね。

小町氏 例えばバイドゥの日本語入力システム「Simeji」も以前は「OpenWnn」というかな漢字変換エンジンを使っていました。WnnやCannaというようなオープンソースのかな漢字変換エンジンは、ソースコードが公開されています。このソースを見てみると、単語を変換するときに、ここは内容を表すような単語になっていて、ここは助詞になっていて、というように、切り出して変換していくという膨大なルールが書いてあります。メジャーバージョンアップの度に「アルゴリズムを変えました」とあり、そのアルゴリズムを見てみると「文節の定義が変わりました」というようなことが書いてあります。

 ただ、OpenWnnの前のバージョン、Wnnなんかでよくありましたが、いろいろ設定しなくちゃいけないパラメータ項目があって、例えば、何文節見るとか、直前に選択した候補をどれくらい重視するかを決めたりだとか、いろんな数値を人手で調整しなくちゃいけないということがあって、「必殺パラメータ」というものが(パソコン通信の)ニュースグループ上に出回っていたようなことがあって、使いこなすのが非常に難しかったんじゃないかと思います。加藤さんも、実際にユーザーに届けるときは、テストをして出していたと思います。

photo 現在のかな漢字変換のアルゴリズムは、「N文節最長一致法」を経て「接続コスト最小法」が主流(出典:小町准教授)

 文節を使って変換する方法は試行錯誤の中で見つかり、良いヒューリスティックというか、これなら長文でも短文でもうまく変換できると使われてきたものが、「N文節最長一致法」というアルゴリズム。現在はこれよりシンプルで理論的な背景もある「接続コスト最小法」が一般的だと思います。

単語とそのつながりを数値化して変換候補を探し出す

小町氏 このN文節最長一致法とは、一番長く変換できる文節を取って確定していくという手法です。文節の長さを元にして、次にどんな言葉が続くのかを予測し、変換する漢字の優先順位を決めます。

 接続コスト最小法は「接続コスト」という単語に関する重み付けです。N文節最長一致法も文節の長さがコストと考えると、この数字が上か下かで変換結果の順位を決めるという仕組みです。

 つまり文節を単位にするのがいいのか、単語を単位にするのがいいのか、何をコストと考えるのかという点が、2つのアルゴリズムの違いです。

加藤氏 接続コスト最小法の方が、文節の分け方としては細かく分かれています。単語ごとに分かれていて、N文節最長一致法は辞書の中に入っている言葉の一番長いものをとにかく持ってきて、一番長いものを一番いいものとして採用する、という処理。だから、処理としてはN文節最長一致法の方が速い。

小町氏 そうですね。例えば1つの文の中に、長い文だと10文節もあったりすると、先頭の方から決めていけますが、接続コスト最小法は文全体を見て決めないといけないので、入力が終わるまで待たないといけない。

加藤氏 逆に性能的には接続コスト最小法の方がいいです。長い文を細かく区切って、こういう風な組み合わせですよ、というときに、ちゃんとした文にしてくれます。

小町氏 文全体が見られるか、先頭の方だけを見て変換するのか、という違い。文全体を見た方が手掛かりは多いので、変換が正しくなりやすいのです。ただし入力された文の全体を見なくてはならないので、コンピューター的には負荷が高くなって、処理が遅くなる。その分、変換精度が上がるというのが接続コスト最小法ですね。

       1|2|3|4 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.


提供:バイドゥ株式会社
アイティメディア営業企画/制作:ITmedia Mobile 編集部/掲載内容有効期限:2015年5月22日

関連リンク