2020年9月10日木曜日

50年を越えて復刻されたある数学入門書

 人は、年をとるにつれて、感傷的に青春時代を思い起こすことがあります。今回の記事もそのような類いですが、それでもかなり抑制気味に書いていますのでご容赦下さい!?

    大学入学後間もなく、夢中になって読んだ(勉強した)数学書のひとつに「赤攝也著:集合論入門、培風館刊」があります。180ページほどの小冊子ではありますが、はしがきに「本書は、現代の数学的標準にてらしても、ほとんど杜撰な点を含まないものとなったと信じている」と書かれていたことに心が惹かれました。確かに、一歩一歩丁寧に精緻な叙述になっていますが、最後の方はかなり難解になっていました。すなわち、「整数と実数の濃度は異なる」ことに関する理論を経て、最後は、圧巻の「整列可能定理」と「ツォルンの補題(付録)」で終わっています。小生の手元にある本書には、「1967年8月31日読了」とメモ書きが残っていました。実に、今から53年前のことです!

    なぜ、今回この記事を書いたのかと言いますと、最近になってこの書が「文庫本」として復刻されているのを偶然知ったからです。普通のポピュラーな文庫本ではありません。「ちくま学芸文庫」という、筑摩書房による学術部門文庫判レーベルの一つです。これは名著の証ですね。さらに驚いたことに、著者の赤攝也先生ご自身が、「文庫化に際して」という文章を巻頭に寄せておられることです。すなわち、原本(培風館)の初版は1957年で、文庫本は2014年出版ですから、57年も経過しているのです。素晴らしいことだと思います。

    この50年を越える時の流れを振り返り、以下に新旧の本の写真を載せたいと思います。

(赤攝也先生は、他にも多数の数学の名著を書かれており、そのいくつかは同様にこの文庫で復刻されています。誠に残念ながら、先生は、昨年(2019年)お亡くなりになっていたことが分かりました。ご冥福をお祈り致します。)

赤攝也先生著「集合論入門」ちくま学芸文庫(2014)、培風館(1957)
初版本の中味(|V. 整列可能定理のところ)

現代の技術書と共に置かれた50年以上前の数学入門書(復刻版)


2020年9月8日火曜日

国立国語研究所「言語資源活用ワークショップ2020」(その2)

この記事は、前回記事の続きです。
国立国語研究所「言語資源活用ワークショップ2020」(その1)

以下は、ここでの小生のポスターWeb発表に対する質疑応答を記録したものです。(ご討論戴いた方のお名前は匿名化させていただきました。)デフォルトでは、SLACKのチャット機能を利用した討論形式です。希望者は、自分でzoomの部屋を立ち上げればリアルタイム映像で討論可能ですが、小生はSLACKだけにしました。ご参加戴いた方々、特にご討論戴いた方々に感謝申し上げます。

■ポスター発表 質疑応答状況(2020-9-8  15:00-15:50)
■本ポスターセッションの発表数 = 10件、セッションログイン数 = 318名
----------------------------------------------------------------
P2-5 植物に関する自由形式説明文からのJSON形式テキストの自動生成
発表者:山本 富士男(神奈川工科大)
----------------------------------------------------------------

■Fujio Yamamoto  2:31 PM
こんにちは、みなさま
ご質問ご意見等ございましたら、よろしくお願い致します。

■AAA氏  3:03 PM
京大のAAAと申します.興味深く拝見しました.こちらの JSON のタグとして type, what, how を設定されていますが,この value に入るものが重複しているのが気になりました.このサンプルではナツメの leaf の how は “楕円形で” となっておりますが,fruit の what にも “楕円形の” と類似した表現が生起していますが,これは設計通りのものなのでしょうか?

■Fujio Yamamoto  3:08 PM
気にしていた点をご質問いただき、ありがとうございます。確かに、現在のバージョンでは、例えば、花の色に関しては、「白い花」ならば、白はwhatに入りますが、「白く咲く」だとhowに入ってしまいます。そうすると、「白い花」の検索を、howとwhatの両方見る必要があり、不便です。改善を考えています。 

■BBB氏  3:24 PM
国語研のBBBです。今回、対象を植物とされたのは、どのような理由によるのでしょうか。例えば植物は動物にくらべると処理しやすいというようなことがあるのでしょうか。

■Fujio Yamamoto  3:29 PM
ご指摘ありがとうございます。今回、動物ではなく植物にしたという特別な理由はありません。きっかけは、予稿集の参考文献に挙げてあります、「デジタル植物写真集」の自由形式記述から、植物の特性を指定した柔軟な検索を行いたい、ということから始まりました。一定の検討は必要と思いますが、動物や観光地などの検索にも適用できるかも知れません。 

■BBB氏   3:31 PM
ありがとうございました。高い精度で自動抽出が可能になれば、大変有益だろうと思いました。

■Fujio Yamamoto 3:34 PM
重ねてありがとうございます。
今回は、type、what、howという大まかな特性の抽出に留まっています。それはそれで有利な面もありますが、特性の分解能をもう少し高くして、精密化を図れないか検討したいと思います。

==================================
感想:
この分野(コーパス言語学や言語資源研究)では全くの素人である小生ですが、情報系との接点である「自然言語処理」の応用という観点から参加させていただきました。初めてのWEB開催ということで、主催者側の準備も大変だったと思いますが、良い雰囲気で参加者と発表者の交流ができたと思います。来年は、恐らく世の中も落ち着いて、国語研究所現地での開催となることを期待し、小生もそれまでに少しでも新たな進展を達成して、また発表に望みたいと考えます。

クロージングでの、主催者側のまとめによりますと、下図のとおり、37件の発表の多くは言語学・日本語学に属するものでした。小生の発表は6件ある自然言語処理のひとつになっているはずです。恐らく、今後、自然言語処理も増加する方向ではないかと思います。

2020年9月7日月曜日

誰もが実感できる自然言語処理の発展

 趣味で、Googleアシスタント(OK Google!)を利用しています。自然言語処理の応用は、自動翻訳だけではないようです。今回は、植物の特性や台風情報等を音声で与えて、所望の情報が得られるかどうか確認してみます。

【音声による検索】
    ♪ 
漏斗状の赤紫の花を咲かせる植物
    ♪ 葉脈が明瞭な植物
    ♪ 虎柄の長い葉を持つ植物
    ♪ 葉は掌状で果実は楕円形
    ♪ 去年の台風で920hPa以下に発達したものはありますか
    ♪ それでは3.14かける8の答えは

 結論から言いますと、上記の最初の4例(植物)に対する結果は、いずれも、かなり優秀だと思います。Googleのやり方は、よく分かりませんが、最近雑誌などでも解説が増えているBERTという仕組みのもとで、実用的な自然言語処理がなされているのだと思います。



 利用した感触としては、出力結果はあくまで「候補」、ということのようです。ですから、例えば、「赤い4枚の花弁を持つ植物」と与えても、4枚に限らず、5枚や3枚の花弁のものも候補に挙がる場合があります。恐らく、この場合は、花弁の枚数よりも「赤い」が優先されるのだと思います。それはそれで、我々の感性に合致しているように思います。

 また、残りの2つの音声検索からも分かるように、人間がしゃべったことを正確に理解しているのではなく、いわば「拾い読み(赤字の部分のみを)」して、候補らしい回答を出力しているようです。的確な拾い読みができるとすれば、それは素晴らしい能力です。最終的には人間が判断するのですが、そのための有力な情報を与えるということでよろしいとおもいます。


2020年9月3日木曜日

Supporting social dilemma experiments with App Inventor

Abstract
    In the study of the problem called "social dilemma", various experiments targeting human behavior have been conducted. I created the following app to efficiently implement one of those kinds of experiments. The feature of this app is that it can automatically reflect in real-time the effects of individual actions on others.

Simple examples of social dilemmas and experiments
    According to Toshio Yamagishi (Professor Emeritus, Hokkaido University, Japan) [1], the social dilemma means that everyone can benefit if they cooperate with each other, but everyone suffers if they act only in their own interests. Research (consideration and experiment) about this has been done for a long time. Here we try to reproduce the famous experiment in this book. However, the following is an explanation based on my own understanding.

A) A group consists of four students who are strangers to each other.

B) Do not touch each other during the experiment.

C) Participants fully understand the mechanics of this experiment.

D) 100 yen will be given to each student in each round.

E) Participants can donate d yen arbitrarily.

F) In that case, the donor's money will be (100 - d) yen.

G) Based on the donated d yen, (2d / 3) yen will be given to each of the 3 people other than the donor.

    The experiment was repeated 12 times with the above items (D) to (G) as one set. The part-time job for this experiment was about 1 hour. In fact, the participants took it seriously because they could get that amount of money. In a round, if only one student donates 100 yen and no other students donate, the donating student gets 0 yen and the other student gets 167 yen. That is, only the donated student will lose. If no one donates at all 12 times, each person will get 1,200 yen. On the other hand, if everyone cooperates and donates 100 yen in all rounds, each person can finally get a total of 2,400 yen (this is the maximum amount). This is a very expensive hourly wage!

    It turned out that each person's donation behavior depends on the "interpersonal trustworthiness" that a person has. That is, it was confirmed that one's donation behavior is determined by "whether or not other people can be expected to contribute." Participants in this experiment include people with high confidence and those with low confidence. (This reliability depends on the response scores of the five questionnaires conducted separately.)

    According to the experimental results by Professor Yamagishi, for the 100 yen given in each round, those with high interpersonal reliability donated 55 yen on average, and those with low interpersonal trust donated 33 yen on average. This result seems convincing. In many cases, it seems that there is an awareness that "I don't know how much other people will donate, so I want to keep my donation at this level".

Smartphone app for a social dilemma experiment
    The calculation of the amount of money in the above social dilemma problem is easy, but it is convenient to have an app to proceed with the experiment smoothly. Reference [1] states that a PC was used, but the details are unknown. Here, we have created an app to perform this experiment using smartphones. Finally, I made a smartphone app with a design like Fig.1. This will be installed on the participant's smartphone. Data exchange between users is fully automated as described below. We thought that it would be desirable for each person to use a smartphone in order to proceed with the experiment without touching each other.

 

Fig.1 A support tool for social dilemma experiments

    An example of running this app with 4 students (4 smartphones) is shown below. Fig.2 shows the beginning of the first round, and each student decides how much to donate. Fig.3 is the execution result of the first round, reflecting those donations. 

Fig.2 Beginning of the first round (determining the donation amount)

Fig.3 Results of the first round (reflecting the distribution of donations)

Use of CloudDB (real-time database)
    The feature of this smartphone app is that each person's donation can be immediately reflected in other people's income without explicit communication or administrator intervention, as shown in Fig.3. That was easily accomplished by using CloudDB (real-time DB) built into MIT App Inventor. The main part is only the following figures. Fig.4 stores the donation amount in CloudDB together with the donor ID. When the donation is stored, the block of Fig.5 of the application of each smartphone is automatically called in real-time. Then, the distribution amount is calculated from the donation amount and added. In this way, the program has become very simple thanks to the real-time database.

 

Fig4. Blocks for registering donations to CloudDB

Fig.5 Blocks automatically called when registering donation to CloudDB

Notice
    By default, anyone can use CloudDB immediately with a common id and token. However, you cannot guarantee how long your data will live. Therefore, you can apply for your own id and token. Although the capacity of the free tier is small, it is stable and useful if you use it.

References
[1] Toshio Yamagishi : Social Dilemma ,PHP Laboratory, July 2000. (in Japanese)


2020年9月2日水曜日

国立国語研究所「言語資源活用ワークショップ2020」(その1)

 【要旨】国立国語研究所 コーパス開発センター主催の「言語資源活用ワークショップ2020」が、9月8日と9日に開催されます。ただし、新型コロナウィルス感染予防の観点からWeb開催です。情報系の研究者や技術者にとっては、少し分野が違いますが、ご参考までに(小生の理解の範囲で)概要を書きます。→続編はこちらにあります。

■ワークショップの趣旨
 本研究所は、日本語の全貌を把握するために様々な観点から研究開発を行っています。多様で大規模な言語コーパスの開発もその一貫です。今回は、そのようなコーパス言語学および言語資源研究の開かれた研究交流の場を提供するとのことで、一般からも関連の研究成果を募集しました。
https://pj.ninjal.ac.jp/corpus_center/lrw2020.html

■ワークショップの概要
 2日間で、シングルセッション(4セッション)で合計37件のポスター発表だけというゆったりしたスケジュールです。第1セッション(6件)は学生発表、残りは一般研究者です。もちろん「自然言語処理」に特化した研究ばかりではありませんが、この分野でも機械学習は重要な手段になりつつあるようです。実際、いくつかの発表タイトルには、このことを示唆する以下のようなキーワードが含まれています。

    単語N-gramを用いた分析
    JSON形式テキストの自動生成
    実践医療用語を構成する語の意味分布
    BERTによる単語埋め込み表現の分散値
    教師データを必要としない感情分析
    BERT の Masked Language Model
    語義曖昧性解消
    日本語学術文技術文長単位解析
    『分類語彙表』の質的拡張

■ワークショップの運営
    当初は、OSFのMeetings機能を使う予定でしたが、何らかの都合で、SLACKの掲示版(チャット形式)でポスター発表することになりました。ただし、発表者は、自分で開設したZOOMの部屋を用意すればそこでリアルタイムビデオ会話もできます。SLACKには要旨とポスター配置し、参加者とディスカッションします。質問したい人は、SLACKへログインする必要があります。(以下に小生のポスター例を示します。)


    しかしながら、いきなりポスターを見ただけでは質問もしづらいので、すでに予稿集(10ページ程度のフルペーパー)が公開されていますので、それを読んでから質問することになるでしょう。以下にプログラムと予稿があります。
(小生も12ページの予稿を書きました。セッション2のP2-5です。)

■予稿原稿の情報系一般との違い
    予稿原稿の形式ですが、情報系の一般的な論文形式と異なる点がありましたので、それを簡単に示します。
  • 情報系では、一般にダブルカラムだが、ここではシングルカラム
  • 参考文献に文献番号を記さない(これにはちょっと戸惑いました!)
  • 予稿原稿の枚数は、4枚以上で制限なし(多くの人は、10枚前後のようです)

2020年8月5日水曜日

散歩で見つけた昆虫をGoogle Lensで調べる(2020年度)

【趣旨】身近な昆虫等をスマホで撮影して、その名前をGoogle Lensで見つけましょう!

===============================================
ようやく梅雨が明け、本格的な夏のおとづれ。昆虫たちの動きも活発に!
昨年度(2019年度)は、以下の様に、24連勝でした!今年も続けます。
===============================================

25. アオスジアゲハ(ちょっと遠くから撮影のため、画像全体に占める蝶は非常に小さいのですが、特徴的な模様を見事に認識しているようです!)
 この例は、AIの本質的な特性を考える好例かもしれません。あなた(AI)は、この画像のどこに興味があるのですか?自分で判断してよいですよ。私(人間)は、私自身の興味と合致していれば受け入れるし、そうでないなら棄却しますから。

26. ハラビロカマキリ(かなり攻撃的な昆虫ですね。腹部を強く反り返させるこのポーズは、幼虫によく見られるようです。)


27. イトトンボ(美しい。玉の様な眼、赤み帯びた黄金の背、精密な縁紋と翅脈、輝く青銅色の細い胴体、軽やかなこの姿勢、どこからきたものなのでしょうか。もう、Google Lensの結果は要りません。ただただ、この画像を眺めるだけで十分です。)

    美しくも悲しい出来事が。There are things I don't want to say. Two of the three legs on the left side of this dragonfly are missing for some reason. Another dragonfly in the picture below has three legs normally on one side. Nature is in a harsh environment. However, this degree of damage will not affect survival. Good luck!

2020年7月28日火曜日

プログラムソースリスト等を綺麗にブログに貼り付ける

 できました。(えっ、今ごろ分かったの?)

 今まで、プログラムのソースリストやデータテーブル(表)を、手っ取り早く画像にして掲載していました。その場合、かなり高解像度の画像にしないと文字が綺麗にならないので、どうしたものか、と思っていました。

 でも、少し調べた結果、テキストのまま簡単に、書式付きで(背景もつけて)貼り込むことができました。HTMLをちょっと編集すればそれが可能なのですが、それが億劫で行っていませんでした。今後、以下のようにテキストで掲載しようかと思います。

 (ただし、このwebページをスマホの画面で見た場合は、横幅サイズがうまく調整されない場合があると思います。そのような場合は、画像の方が有利です。ともかく、本格的にソースコードを公開するのであれば、GitHubを利用ということになるでしょうが、なかなかそこまでは考えていません。)

 取りあえず、以下に、今回のきれいな貼り付けの成果を。

●前回記事(こちらです)にあったJavaScriptソースリスト
「植物の種類(区分)毎に、葉の特徴に関する記述をまとめる。」

 

   // “plants_real.json”は、2,965種(別名含む)の植物を記載したJSONファイル

 // 植物の種類(7区分)毎に「葉」の特徴に関する記述を纏める(集約する)

    $.getJSON("plants_real.json", d => {

        var obj = d.plants  //JSONファイルから植物の配列を取り出す

            .filter(p => p.alias == "N") //別名は除く

            .reduce((acc, x) =>{ //accは集約のための配列、xは個々の植物

                if (!acc[x.group]) acc[x.group] =[]; //groupは種類(区分)

                if (x.leaf.type != "") acc[x.group].push(x.leaf.type);

                if (x.leaf.what != "") acc[x.group].push(x.leaf.what);

                acc[x.group] = Array.from(new Set(acc[x.group]));

                return acc; 

            },{}); //以上で、objは集約結果の配列となる。{}はaccの初期設定用

        Object.keys(obj).forEach(k =>{ //kは種類(区分), obj[k]は集約結果

            if (k != "null") document.write("●"+k+":"+obj[k]+"<br>");

        });

    });


●上記プログラムの実行結果

●双子葉木本:葉,奇数羽状複葉,掌状複葉,楕円状の,小葉,3出複葉の,長楕円形の,葉腋,旧葉,若葉,掌状に裂けた,3出複葉,棘が大きく,被針形の,細長い,鱗片状の,卵形の,緑白色の丸い,奇数羽状複葉の,葉柄,倒卵形の,奇数羽状複葉で棘のある,常緑樹の,羽状複葉,偶数羽状複葉,線形の,披針形の細鋸歯の,掌状複葉の,革質の,卵形で束生する,2回偶数羽状複葉,葉裏,大きな,丸い,苞葉,白い2枚の,2回羽状複葉,羽状複葉の,広卵形の,3枚の,先が3浅裂した,有毛の,葉脈,3回羽状複葉

●双子葉草本:葉,3出複葉,卵形の,2回奇数羽状複葉,茎葉,奇数羽状複葉,丸い,小葉,複葉の,羽状深裂した,3出複葉の,苞葉,茎や,楕円形の,茎や広卵形の,3小葉,羽状複葉,円心形の,円心形の薄い,葉裏,茎も,茎と,線形の,偶数羽状複葉,心形の,2回3出複葉,矛形の,披針形の,掌状の,へら形の,裂片が鋭くとがった,小さくて厚い,2回羽状複葉,偶数,ほとんど毛のないへら状の,根生葉,水辺に生え,頂小葉の大きい,長い,広卵形の,羽状に深裂した,葉先,掌状複葉,掌状に深裂する,数回羽状複葉,繊毛のある,上部の,2~3回3出複葉,楕円状葉,2~3回羽状複葉,扁平な肉質の,狭披針形の,下葉,羽状複葉の,2出複葉,大きな掌状の,楕円状被針形の,葉柄,3出羽状複葉,奇数羽状複葉の,細長い,長楕円形の,狭卵形の,掌状複葉の,倒被針形の,羽状深裂した大きい,卵円形の,3角状の,無毛に近い,束生する,偶数複葉,幅広の,葉腋,腎円形の,卵心形の柄の長い,葉身が糸状に裂けた,偶数花状複葉,掌状に深裂した,3回3出羽状複葉,葉身,大きく丸い,広線形の,狭長楕円形の,裏に灰白色の毛のある,卵状被針形の,茎や波状鋸歯のある

●被子植物:省略

●単子葉草本:省略

●裸子植物:省略

●シダ植物:省略

●単子葉木本:省略

2020年7月27日月曜日

今さらJSONをJavaScriptで検索?なんて言わないで

【要旨】植物に関する自由形式記述からJSONファイルをJAVAを用いて自動生成しました。その結果のJSONの検索プログラムを、今回はJavaSriptで書きます。初心者の方にとって、ご参考になる点があれば幸いです。

■JSONを扱うならJavaScriptを使うのが普通?
 これまで、日本語の係り受け解析(MeCabとCaboChaによる)を使ってJSONを自動生成するプログラムをJAVAで作りました。その流れで、結果のJSONを検索するプログラムもJAVAで書いてきました。そこでは、ラムダ式とストリームが有効に働きました。

 しかし、JSONは元々JavaScriptと相性が良く、特にwebアプリにする際はJavaScriptの方が何かと便利かも知れない。そこで、今さら、という思いもあるのですが、いくつかの形態の検索をJavaScriptで作成してみました。具体的な方法はいくつかあるのですが、今回はjQueryを利用します。結論としては、JAVAの場合とほぼ同様の書き方でできました。

 JAVAで実施した場合の記事は以下にあります:
(対象としたJSONファイルの説明はこの記事の後半にあります。)

■JavaScriptによる検索(上記JAVAの場合の3例に対応)
 以下にソースコードを示します。JAVAの場合と同様に、.filter、.map、.reduce、.forEachなどを使っています。従来型の書き方と比較すると、このような検索をするのに、明示的なforループが全然出てきません。(テキストで綺麗に表示する方法が分からないので、画像にしてあります。)出力は、上記のJAVAの場合とほぼ同じ(形式が若干異なるが)になりましたので、省略します。

↑葉が"倒披針"で、花が"白"または"紫"の植物
↑掲載されている植物の果実の種類(type)を重複なく列挙する
↑植物の種類(区分)毎に、それに属する植物の葉の特徴を纏める

 こんな感じでJSONを検索できるので、フォームやボタンをつけて、ユーザフレンドリーな検索画面は作れそうですね。

2020年7月23日木曜日

梅雨の合間のアゲハチョウ (Swallowtail butterfly)

Atsugi-shi, Japan,  2020-07-22
It's still rainy season, but sometimes it's a little sunny.
At that time, I saw a swallowtail butterfly. Enjoy this short video!


2020年7月19日日曜日

植物の自由形式説明文からJSON形式テキストを自動生成(まとめ)

 これまで、植物の自由形式説明文からJSON形式テキストを自動生成して、多様な検索を可能とする試みについて書いてきました。8回くらい連載してきたと思います。今回は、これを分かりやすく(ポスター形式で)纏めてみました。