2020年5月12日火曜日

植物に関する自由記述からJSONを自動生成(その1)


自然言語処理を学んで何をしたいか

 日本語の文は表現豊かで、自由度の高い書き方ができます。ですから、その解析はとても難しそうですが、近年その研究はかなり進んでいるようです。ここでは、そのうちの、係り受け解析(Cabocha等による)[2]を利用して、植物の特徴を一行で自由記述した文の内容を、自動的にJSONファイルに変換するJavaプログラムを作成しました。

 以下の2つの例文は、参考文献[1]にあるものを使わせて戴きました。ここでは、"花"と"葉"についてのみ着目することとしました。"花"と"葉"のそれぞれについて、JSONでは、タグWhat(色や形など)とHow(葉や花の付き方等)を用意しました。

 実行結果を以下に示します。これらの例文に関する限り、うまくJSONを自動生成できたようです!



JSONの自動生成を可能にした係り受け解析
 上記のJSONファイルを自動生成できたのは、以下に示すような係り受け解析の結果を得ることができたためです。基本的な戦略は、この図で赤色(ピンク色)はWhatに対応させ、青色(水色)はHowに対応させることです。


 実際、作成したプログラムは、上図に色分けした文節を、JSONの対応タグの値にマッピングするのが主な役目でした。久しぶりに、Javaプログラムを書きました!しかしながら、一筋縄では行きません。上記の2例はうまく行きましたが、うまく行かないケースもだいぶ分かってきました。

Google Translateではどうなのか
 上記の結果を得て喜んでいる場合なのか?例えば、Googleの機械翻訳では、日本語を完全に構文解析(句構造や係り受け構造)、意味解析、文脈解析もしている筈です。そうでないと正しい英文は作れないでしょうから。以下のとおり確認してみました。まだまだ、Googleの解析には及んでいないと思いますが、上図のような構造を得て自分用のアプリを作成するには、独自にプログラムするしかない。
(1)アオヤギソウ
原文:広線形の葉が茎の下部につき、黄緑色の花が円錐状に咲く。
Google : Broad linear leaves on the bottom of the stem, yellow-green flowers in a cone.
(2)アガパンサス
原文:葉は線形で厚く、茎先に漏斗状の紫色の花が輪生する。
Google: The leaves are linear and thick, and the funnel-shaped purple flowers form a ring on the tip of the stem.

今後
 他の植物記述の文についても、順次適用して、課題を洗い出し、改良を進めていきたい。うまく、JSONファイルができれば、高度な検索や植物の特徴に関する統計解析などに使えるような気がします。

参考資料
[1] 渡辺 坦:植物の名前を探しやすいデジタル植物写真集
http://plantidentifier.ec-net.jp
[2] 杉本 徹、岩下志乃:Javaで学ぶ自然言語処理と機械学習、オーム社、平成30年9月発行

0 件のコメント:

コメントを投稿