2020年5月23日土曜日

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

 前回の(その2)の続編です。

ねらい
 植物の特徴を1行で簡潔に記述した文から、その内容を反映するJSON形式テキストを自動生成する試みです。これによって、高度な検索や、植物の世界の特性の集合を求めたりすることができそうです。方式の概要は以下のとおりです。
  • 内容が簡潔に圧縮されているので、自然言語解析にとっては難しそうであるが、CaboChaによる係り受け解析をベースにJSONを生成する。
  • JSONのタグは、"葉"、"花"、"果"のそれぞれについて、type、what、howとする。
  • 係り受け解析の結果は、右端の文節を根とする木(tree)になるので、その部分木を根や葉の方向に適宜だどり、辺どおしの関係も考慮しながらJSONを生成する。
解析と生成の例
 以下において、対象となる原文はすべて、参考資料[1]にあるものを利用させていただきました。まず一例として、「シロモジ」に対する説明の原文、係り受け解析結果の要約、および、JSON(tag : value)生成結果を示します。(この例は、解析と生成がうまくできる易しい場合です。もっと難しいケースは多数あります。)
-----------------------------------------------------
【例:原文】
シロモジ:葉は3中裂し、黄色くて小さい花が咲き、丸い液果ができる。
【係り受け解析結果の要約】
0→1  葉は |  名詞-一般, 助詞-係助詞
1→5  3中裂し、 | [0] 動詞-自立, 記号-読点
2→3  黄色くて |  形容詞-自立, 助詞-接続助詞
3→4  小さい | [2] 形容詞-自立
4→5  花が | [3] 名詞-一般, 助詞-格助詞-一般
5→8  咲き、 | [1][4] 動詞-自立, 記号-読点
6→7  丸い |  形容詞-自立
7→8  液果が | [6] 名詞-一般, 助詞-格助詞-一般
8→E  できる。 | [5][7] 動詞-自立, 記号-句点
【Json(tag:value)生成結果】
<葉> type:葉, what:how:3中裂し
<花> type:花, what:黄色くて小さい, how:咲き
<果> type:液果, what:丸い, how:できる
-----------------------------------------------------

*2020-05-26現在、JSON生成法を改善して、多少、性能が上がりましたので、以下改訂してあります。

植物の一行記述33例についての解析とJSON生成
 上記方式の解析と生成の性能を調べ、その課題は何かを把握するため、約3,000行(約3,000種の植物)の記述(参考資料[1]で示されている)のうちから、33例を対象として実験を行いました。実験結果を要約すると以下のようになります。原文に軽微な変更(句読点の追加)を許容するとすれば、33件のうち、約82%(=27/33)で正常にJSON生成ができたことになります。(->詳細な結果は後の方にあります。)

(a) 原文のままで、正常にJSON生成 -> 17件
(b) 原文に句読点を追加することで、正常にJSON生成 -> 10件
(c) 原文の助詞等を置き換えることで、正常にJSON生成 -> 5件
(d) 妥当な係り受け解析結果を得るために原文の一部を書き換え -> 1件

 以上のうち、(b)は、原文に含まれている複文(主語と述語の組が複数)の区切りを、係り受け解析がうまく判断できなかったためです。複文を単文に切り分けることは、(b)のように単純に句読点を追加すれば済む場合もありますが、一般にはそれでは済まない場合も多く知られています。
 また、(c)のケースは、人間が意図した意味が伝わらないという問題です。本格的な対応としては、もっと意味解析が必要かもしれません。

感想
 上記の問題(c)(d)を扱うには、(深層格フレーム辞書を用いるような)意味解析も必要かとも思いますが、このような植物記述の分野で考えた場合は、もっと単純に意味を対応づけるための辞書を使う方が実用的とも思います。
 JSON生成アルゴリズムの不備は、試行しながらかなり改善できました。

33件の解析結果の詳細(変更しました:2020-6-2)
 上記に述べた、33件の解析とJSON生成結果ですが、ここに記載していましたが、取り止めました。もう少し完全な結果が得られた後に(全3,000件への適用結果の分析後に)改めて概要を報告したいと思います。

参考資料
[1] 渡辺 坦:植物の名前を探しやすいデジタル植物写真集
http://plantidentifier.ec-net.jp


0 件のコメント:

コメントを投稿