2022年3月29日火曜日

WordCloudで「葉」のポピュラーな形態を確認

 前回の記事で、植物の「葉」に関する珍しい形態を探してみました。その際に、抽出した関連用語の出現回数を得ていました。そこで今回はこれを利用して、(どれだけ意味があるかは別として)葉に関するポピュラーな用語にはどんなものがあるかを、WordCloudで可視化してみました。前回記事の場合とは逆で、よく使われる用語ほど大きな文字で表されています。

 あまり正確ではありませんが、ほぼ、「葉の形や色」「葉のつき方」「葉の縁」「葉の裂け方」「葉のその他の形態」に分類してプロットしました。ちょっと楽しめますか。

葉の形や色
長楕円形、卵形、楕円形、披針形、等々、これは納得ですね。

葉のつき方
3出複葉(両側と中央に3枚の葉)、小葉(それぞれの葉)

葉の縁
全縁(ギザギザなし)、鋸歯が多い

葉の裂け方

葉のその他の形態

2022年3月25日金曜日

植物図鑑などで珍しい形態の「葉」を見つけたい

 植物図鑑や写真集を眺めていて、「葉」の形態が珍しいものを見つけたいと思いました。でも、漫然と眺めていたのでは日が暮れてしまいます。そこで、植物の特性の説明文に対する自然言語処理の登場です。

「葉」の特性を示す用語の抽出
 まず、参考資料[1]に掲載されている、植物全2,174種(別名を含めると3,000種以上)に関する、簡潔な一行説明文の全てに自然言語処理(形態素解析と単語間・文節間係り受け解析)を施します。その結果を利用して、「葉」の特性に関する用語を全て抽出します。原則的には、「葉」の前方にある名詞、形容詞、動詞などの修飾語と、「葉」からその述語までの範囲の関連用語が対象となりますが、例外的に、その範囲を超えて、述語の後方まで調べる場合もあります。当然、その中で、「葉」以外の「花」や「果実」等に関する用語は除去するのですが、これがなかなか難しいです。ですが、用語の品詞と係り受けの種類などを頼りに、何とか曲がりなりにも目的を達するアプリケーションを作成しました。その実行結果が図1なのです!

 完璧ではありませんが、ご覧の通り、(重複無しで)約600語を抽出できました。この結果は、植物界の葉の形態の全貌を凝縮している、と言えないこともない。(ただし、上述の困難さから、花や果実に関する用語も若干入り込んでいます。)これなら、目視で、「おや、これは何だろう?」という珍しい特性が見つかるはずです。

珍しい特性を持つ「葉」を調べる
 このようにして、「葉」の幾つかの珍しい特性が見つかりました。例えば、図2に示すように、「表裏逆転」「右右左左」「2回偶数羽状複葉」「魚骨状」などです。あまり聞いたことのない、何か珍しそうな特性に見えます。


 ここまで来れば、あとは、植物写真集[1]を検索すれば良い。実際、図3に示す通り、該当植物が見つかり、一行説明文(詳細説明文へのリンクもあります)と写真を見て納得できました。こんな楽しみ方もあるのではないでしょうか。


 なお、「珍しい用語」は、出現頻度が低いと考えられますので、図1に示した各用語の出現頻度を計算して「珍しい」に当たりをつけるのも良いでしょう。実際、出現度数は以下の通りでした。WordCloudは、普通、出現頻度の高い単語を検出するための可視化ですが、ここではそれの逆順の使い方に相当します。
 なお、これらの関連用語の出現頻度のWordCloudによる可視化については、こちらの記事に書きました。

「花」についても同様に調べる
 さて、「葉」以外に「花」についても、同様に調べることができます。「花」の方が「葉」よりも多様であり、特性に関する抽出用語もうんと多いと予想しましたが、結果はむしろその逆でした。すなわち、上述の方法で調査する限り、「葉」の特性の方がより多様であることを示す結果となりました。(詳細は略しますが。)

国立国語研究所「長単位」向け係り受け解析モデル
 これまでの記事でも述べましたが、今回のアプリケーションは、参考資料[2][3]の国語研長単位解析モデルを利用しています。このため、上に示した通り、「楕円形」「長楕円形」「羽状複葉」「2回偶数羽状複葉」などがバラバラにならず、それぞれまとまった単語(形態素)として認識されており、アプリケーション作成がとても楽になっています。

参考資料
[1] 渡辺坦:植物の名前を探しやすい デジタル植物写真集

[2] yasuokaの日記: spaCy向け国語研長単位モデルja_gsdluw仮リリース
https://srad.jp/~yasuoka/journal/653385/

[3] UD Japanese GSD+GSDLUW r2.9 with Named Entity Gold Labels
https://github.com/megagonlabs/UD_Japanese-GSD/releases/tag/r2.9-NE

2022年3月22日火曜日

日本語解析では「くて」も曲者か?

  現代の日本語の係り受け解析を利用していて、時に困ったなあ、という場面に出会います。恐らく、解析プログラムのバグというわけではなく、その解析手法では必然的にそうなるように思われます。当方は素人なので、本当のことは分かりませんが、そういった事例を書き留めておいて、後日の検討、対策に資することができれば良い。

 ここで取り上げるのは、「短くて太い茎」や「小さくて厚い葉」などのくてです。図1に、以下の2つの例文とその係り受け解析結果を示します。(a)と(b)の違いは、「秋に」の有無だけです。

 (a) 小さくて厚い葉が秋に枯れる。
 (b) 小さくて厚い葉が枯れる。

 係り受け解析器として、参考資料[1]で紹介されている国語研長単位モデルja_gsdluw [2]を利用しました。

 当方のアプリケーションでは、係り受け解析結果を利用して、この場合「葉」を修飾する単語を全て求めたいのですが、例文(b)では、「小さくて→枯れる」という係り受けとなってしまいました。そのため、「葉」の修飾語としての「小さくて」を取り出すことができません。はて、どうしたものか。

 そこで、「小さくて厚い葉が、」のように、読点を追加してみた結果が図2です。これだと、例文(a)と同じく、「小さくて→厚い」という適切な結果が得られました。しかし、こんな短い文に、普通は、読点は入れませんが...

 実は、こうしても、まだ疑問が残ります。以前、[3]で安岡孝一教授からご教示いただいた通り、本来、「小さくて」と「厚い」は共に「葉」を修飾するものです。なので、「小さくて→葉」「厚い→葉」のような係り受けとすべきと思われる... つまり、今回の「くて」も[3]での「」も同じ問題のようです。

参考資料

[1] yasuokaの日記: spaCy向け国語研長単位モデルja_gsdluw仮リリース
https://srad.jp/~yasuoka/journal/653385/

[2] UD Japanese GSD+GSDLUW r2.9 with Named Entity Gold Labels
https://github.com/megagonlabs/UD_Japanese-GSD/releases/tag/r2.9-NE

[3] 例文 "紫色で細長い唇形花が総状に咲く" の係り受け解析
https://sparse-dense.blogspot.com/2022/02/blog-post.html

2022年3月17日木曜日

身近な春の雑草たちの言語学的解剖?(その2)

 前報(その1)の続編です。翌日に、さらに以下の3種の雑草を採取しました。本来は「言語学的解剖」のつもりでしたが、なんだかそれは野暮な気がしてきました。それはそれで、植物記述データベース(コーパス)を用意して本格的に取り組めばよい。ということで、今回は、追加した美しい花を眺めるだけで充分としました。

 前回は、植物を摘み取って持ち帰り、写真撮影していましたが、それだと、萎れたり、途中で花びらが落ちてしまう。そこで、今回は現地主義。白い紙を丸めて散歩に持参して、採取した植物を載せ、その場でスマホで撮影しました。

 そして、(植物図鑑などに頼らず)自分の観察に従って、以下に簡単な説明文を添えました。

オオアラセイトウ:ハナダイコン、ショカツサイとも呼ばれる。
 4弁の淡い紫色の花が美しい。少し縮れて波打っているようだ。葉の縁のぎざぎざは、花の姿に似合わず鋭い。Every rose has its thornということか。

スズランズイセン: 別名スノーフレーク
 鈴蘭に似た花のようだ。花弁の先端部にある緑色の斑点が珍しい。こちらも美しいが、有毒とのこと。

ハナニラ:
 花弁は6枚だが、3枚づつ違う面にあるように見える。白みがかった淡い紫色の美しい花。雑草と呼ぶにはふさわしくないようだ。 太古から生き延びてきたのか、神秘的でもある。

2022年3月15日火曜日

身近な春の雑草たちの言語学的解剖?(その1)

  春めいてきました。本日(2022-03-15)午前中の近所散歩で、道端の雑草を摘み取ってみました。すぐに6種類ほど採取できましたが、まだまだ他にもたくさんありそうです。写真撮影して、Google Lensとデジタル植物写真集[1]などで調べると、すぐに名前が分かりました。普段はあまり気にとめていませんが、こうして眺めてみると、「雑草」と呼ぶには「かわいそうな植物たち」と思えるくらい美しい。

上段左から、
ナズナ(ぺんぺん草)スギナ(つくし)
ホトケノザ オオイヌノフグリ

 ここで、無慈悲にも、これらの可憐な雑草たちを解剖してみます。と言っても、メスで中身を切り開く訳ではありません。簡潔に一行で表現されたこれらの植物[1]に手を触れずに、言語学的に解析してみるのです。つまり、記述文の形態素解析と係り受け解析(単語間・文節間)[2]です。一般的な文章に比べて、堅めで専門的な難しい文ですが、完璧に解析されているようです。

ナズナ:根生葉は羽状、茎葉は細長く、果実は三味線のバチ状。
 従来の国語研究所「短単位」の形態素解析器では、植物専門用語「根生葉」や「茎葉」はひとまとまりにならずに、バラバラな単語として扱われました。しかし、今回の解析器[2]では「長単位」解析モデルが使われ(BERTがここにも進出しています)、上図のような結果が得られています。つまり、専門用語をユーザ辞書登録しなくても、このように形態素解析され、それが適切な係り受け解析(上図の矢印関係)につながっているようです。

ホトケノザ:丸い葉が蓮華座状につき葉腋から紅紫色の唇形花が出る。
 この例でも、「蓮華座状」や「唇形花」などがひとまとまりとなっていて、「長単位」形態素解析の効果が出ています。また、この文には途中に読点「、」がありませんが、「つき」「出る」に関する係り受けも適切に行われています。



オオイヌノフグリ:葉は広楕円形で、粗鋸歯があり、瑠璃色の小さい花が咲く。
 同様に、この例でも、「広楕円形」や「粗鋸歯」に関する形態素解析、係り受け解析は適切な結果となり、嬉しくなります。ところで、もしも「広楕円形で、」での読点「、」が無いとすると、結果は微妙に変わります。それも興味深いところであります。

 ところで、最後の「オオイヌノフグリ」という名前の由来を参考資料[3]で知って、ちょっと失笑といったところです。その内容は、ここでは述べられません。さらに別の面もあります。この植物の学名Veronica persicaは、「ベロニカ」という聖女の名前にちなんでいるそうです。花の形と色彩が高貴でそれにふさわしい。あらためて、群生している写真を載せておきます。

参考資料

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

[2] yasuokaの日記: esuparの国語研長単位向け係り受け解析モデルbert-base-japanese-unidic-luw-uposリリース
https://srad.jp/~yasuoka/journal/652806/

[3] 稲垣栄洋:身近な雑草の愉快な生き方、ちくま文庫、2011年4月発行

2022年3月9日水曜日

植物記述文からのjsonテキスト自動生成の精密化(2)

【what is this】先の記事の続編です。植物に関する記述文からjsonテキストを自動生成する際のさらに難しい例文に出会いました。これを記録しておき、係り受け解析の他にどのような情報(推論の枠組みや辞書類)が必要なのかを検討したい。

散歩で見つけたウメの小枝
 
確実に春めいてきました。近所にあった田んぼや畑は年々消えて行きますが、それでも散歩道の近くには農家が散在しています。道の一角に無人の野菜販売スタンドがあります。小さな貯金箱みたいなのが置いてあり、一包みあたり、百円をそこへ投入して買います。今日は、野菜の他に、梅の小枝3本ほどを束ねたものも置いてありました。これはいい、と思って買いました。図1のように、丸い小さな蕾もたくさんついています。

ウメについての簡潔な記述からのjson自動生成
 
この梅に関する簡潔な記述が、参考資料[1]にあります。

 ウメ:花に柄がなく、葉が出る前に咲き、古枝に棘がある。

 図1の写真からも分かるように、これはウメを的確に表現していると思います。これから、次のような(ウメの"花"についての)jsonテキストを自動生成したい、ということがすぐに想い浮かびました:

 {"花":{"柄":"無い", "時期":"葉が出る前"}}

 しかし、これは難しそうです。図2には、SuPar-UniDic[2]による係り受け解析結果を示しましたが、他にどんな情報(辞書や推定の枠組み)が必要なのでしょうか。

 課題は多そうです。例えば、「葉が」という主語があるのですが、この文は主に「花」について述べており、「葉」は「咲く」ことを修飾しているに過ぎません。また、「出る前に」だけでなく、「出た後に」や「出る前後に」や「出る頃に」などが出現することも多そうですので、これらを全部、「時期」というkey(タグ)に集約できるのでしょうか。難しそうですが、今後の検討材料として記憶しておく価値はあるでしょう。

参考資料

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

[2] yasuokaの日記: BERTモデルを用いた日本語係り受け解析ツールSuPar-UniDicリリース
https://srad.jp/~yasuoka/journal/645402/


2022年3月1日火曜日

植物記述文からのjsonテキスト自動生成の精密化(1)

【what is this】先の記事では、植物に関する記述文から、葉や花などに関する特徴を取り出し、構造化して表現するアプリを作成しました。しかしながら、対象とする文の表現は多様であり、まだまだ課題が多いことを改めて知りました。その一部をここで検討します。係り受け解析結果を、アプリ側でどのように解釈し利用するかだけでなく、(アプリに特有の)植物に関する知識も取り入れる方策が必要です。

植物に関する記述文からJsonテキストを生成する
 
実は過去に、(ここにあるように)「植物記述文からJsonテキストを生成」を行いました。その時のJsonのkey(タグ)は、大まかな特性に関する事前に用意された数個に限定していました。今回は、そのkeyをもっと精密なものにしたいと思います。

 何をやりたいのかを、図1で説明します。例文L1〜L5は、ある植物の「葉」の特徴を述べています。表現は違いますが、内容は、以下の通り全く同一と言えます:

  1. 葉に脈と剛毛がある。
  2. 脈は3本あって明瞭である。
  3. 剛毛は両面につく。

 従って、これら5つの文を、いずれも、図中の「json1」のようなJsonテキストに自動変換したいのです。一方、例文L5の「両面に」を「果実に」に変更した例文F5は、「json2」のように変換したい。なぜなら、今は「葉」に関する特徴を抽出したいのですから。

Jsonテキスト生成の検討
 
この課題について、簡単に検討します。ここでは、SuPar-UniDic[1]による係り受け解析を利用させていただきました。まず、例文L1の係り受け解析結果は図2のとおりです。「葉」に係る「ある」を経由して「脈」をkeyとすることができるでしょう。そして、「3本の」と「明瞭な」が並列的に「脈」を修飾することを利用して、json1の前半部は生成できます。後半部の生成は、「葉は」の述部「つける」から遡って作れそうです。

 次に、例文L5をみます。図3の通り、今度は「葉は」が「明瞭で」に係るので、L1の場合と様子が違いますので、慎重にkeyとなるものを見つけ、適切に係り受け関係をたどりながらjson1を生成する必要があります。

 そして、最後の例文F5です。例文L5にある「両面に」が「果実に」に変わっただけなので、図4の通り、係り受けの関係は全く変わりません。しかし、「剛毛」は「葉」にではなく「果実」につくので、「葉」に着目している限り、json1の後半を削除したjson2のようなjsonテキストを生成する必要があります。


 まとめとして、少なくとも、図1に示したようにjsonテキストを生成できなければ、真の自然言語処理とは言えませんので、検討を深めて行きたいと思います。

参考資料
[1] yasuokaの日記: BERTモデルを用いた日本語係り受け解析ツールSuPar-UniDicリリースhttps://srad.jp/~yasuoka/journal/645402/