プログラミングって難しい。例えば「If x % 5 == 0」というプログラミング言語で書かれたものは「もしxが偶数であれば」という意味。って、そういう具合に日本語で書いてくれたら、うんとわかりやすいのにね。グラハム先生は、そういう、プログラムを言葉(日本語)で説明してくれるプログラムの開発に取り組んでいます。
難しいプログラミング言語が、日本語で説明されていたらどんなにいいか!~プログラミングを説明するプログラム開発
みなさん、コンピュータは、プログラミングで情報処理をしていることはご存知と思います。でもプログラミングって難しいですね。例えば、Clojureというプログラム言語で書かれた
(def y
(if (= (mod x 5) 0) “yes” “no”))
を、日本語で「もしxが5で割り切れるならyを『yes』に設定し、そうでなければyを『no』と設定する」と書いてもらえたら、どんなにわかりやすいでしょう。ほかにもJava言語、Pythonなどプログラミング言語にはいろいろな書き方があります。どれも難しいです。
私たちは、難しいプログラミング言語を、日本語のような自然言語で説明してくれる手法に取り組んでいます。
きっかけは、私の専門の機械翻訳にあります。機械翻訳とは、英語から日本語への変換といったような、自動的に人間の言葉に翻訳する技術です。機械翻訳はコミュニケーションを円滑にする素晴らしい技術ですが、残念ながらよく失敗します。単語を正しく翻訳したとしても、単語の順番がおかしくなって、意味がわからなくなる問題がよく発生します。
我々はこのような失敗を減らす技術を長年開発してきました。それをどうやってやるか。
答えはすべての言語に存在する隠れた構造にあります。
この構造では、それぞれの単語がどの役割を持っているか、それぞれの単語がどう組み合わされるかがわかります。この構造をきちんと解析する手法を開発し、より原文の意味に沿った機械翻訳ができるようになりました。
同じことを、プログラミングでも利用することができます。例えば「If x % 5 == 0」というプログラミング言語で書かれたものは、「もしxが偶数であれば」という意味です。私たちは、プログラミング言語からも同じような隠れた構造を解析し、これを自動生成できるプログラムを開発しました。
実際にプログラミングを始めた初心者に見せると、プログラムがよりよく理解できたということも確認できました。
今後この研究が取り組むべきは、プログラミング言語から日本語への変換でなく、その逆の、日本語からプログラミング言語への翻訳です。
日本語で入力したら、プログラムが勝手に出てくる。これはなかなか難しいんです。というのは、日本語の表現には独特の曖昧性があるからです。そこを乗り越え、プログラムをわかりやすく説明できるような変換ができることが課題です。でも日本語でプログラミングできるよう期待していてください。
自然言語処理の基本と技術
奥野陽、Graham Neubig、萩原正人 小町守:監修(翔泳社)
Webやクラウド上の膨大な文字情報の中から、「意味のある」情報だけを取り出して文章を自動的に作る。そんな夢のようなことも実現可能にするのが「自然言語処理」と呼ばれるテクノロジー。この未来に不可欠となるに違いない自然言語処理をコンパクトに図解している。Graham Neubig先生はじめ、この分野の第一線で活躍するエキスパートが執筆。
自然言語処理
黒橋禎夫(放送大学教育振興会)
日本を代表する自然言語処理の研究室の一つである京都大学黒橋研修室。みらいぶプラスでも、自然言語処理について解説している黒橋先生の著書。自然言語処理の仕組み、難しさ、今後の展開などを理解し、ウェブサーチや機械翻訳等の自然言語処理の応用システムを健全に利活用する能力を身につけるための大学テキスト。高校生に難しいかもしれない。