2022年12月23日金曜日

NDLデジタルコレクション

個人送信(2)からの続き

国立国会図書館(NDL)のデジタルコレクションが12月21日にリニューアルされた。

プレスリリースによれば次のような内容である。
(1)所蔵資料をデジタル化した 「デジタル化資料」約 311 万点と収集した「電子書籍・電子雑誌等」約 150 万点を検索・閲覧・視聴できる・・・下表との関係が不明・・・
(2)全文検索できる資料が5万点から247万点に増えた。
(3)閲覧画面の改善・・・改善余地がまだあるような・・・
(4)画像検索の実現
(5)シングルサインオンの実現

前回と比較してどのあたりが増えたのかがいま一つはっきりしない。ちゃんと内訳を記録しておけばよかった。全文検索の有り無しはこのデータのままではわからない。

表:NDLデジタルコレクションの内訳(公開,登録者限定,館内限定)
 公開登録者館内小計
電子書籍・電子雑誌1,228,0870218,1281,446,215
雑  誌16,901825,998525,0421,367,941
図  書362,523560,466387,6231,310,612
博士論文15,929125,420123,322264,671
日本占領関係資料70,805029,963100,768
古典籍資料82,10717,235799,349
録音・映像関係資料6,008048,43454,442
歴史的音源6,001042,73148,732
プランゲ文庫016,01728,45944,476
官  報20,9800020,980
憲政資料10,86501,72312,588
他機関デジタル化資料3251,0338832,241
地  図4101,3051,346
パッケージ系電子出版物00338338
特殊デジタルコレクション197045242
     
合  計1,820,7691,546,1691,408,0034,774,941



2022年12月22日木曜日

ウルトラQ

ウルトラQは,円谷プロダクションによる空想特撮テレビシリーズの第1弾として1966年1月から7月にかけて放映された。この武田薬品提供枠では,月光仮面(1958-1959),豹(ジャガー)の眼(1959-1960),隠密剣士(1962-1965)なども見ていた。月光仮面やジャガーの眼は自分がまだ幼稚園のころだ。小学生のころ,風呂敷被って月光仮面ごっこをしている絵日記を書いた記憶や真っ赤なサタンの爪が印象的だった絵本を読んだ記憶もある。

ウルトラQは,当時の中学1年生にとって丁度手ごろなSFドラマだった。アウター・リミッツなどもうすこし高級で怖いものもたまに見る機会があったけれど,民放のチャンネルが限られている田舎町にはなかなか文化の香りが届かない。その後,ウルトラマン(1966.7-1967.4),ウルトラセブン(1967.10-1968.9)ときて中学生を卒業することになる。

高校になると,この枠は桜木健一・吉沢京子・近藤正臣の柔道一直線(1969.6-1971.4)になってしまう。柔道が得意でピアノもひける同級生の上出君が,若き日の近藤正臣がピアノの上を跳ね回って演奏するシーンに感心していたのが印象的だった。なんだったのだろう。


さて,「ウルトラQとウルトラマンの関係について」とChatGPTに日本語で尋ねてみると,次のような残念な答しか返ってこなかった。
「ウルトラQ」は、1966年から1967年にかけて放送された「ウルトラマン」シリーズの第1作です。この番組は、地球を守るために、人間から姿を変えた異星人が、異星生命体との戦いを繰り広げるという内容です。
ところで,ChatGPTは,英語では十分訓練されていて日本語に比べてずっとマシな答えを返すという話だ。そこで,英語で尋ねてみた。
Please explain the story of Ultra Q which is the TV program in Japan mid 1960's
答えをDeepLで翻訳すると次の通りだった。だいぶマシなのである。
「ウルトラQ」は、1966年1月2日から7月3日まで日本で放送されたサイエンスフィクションテレビシリーズです。ウルトラシリーズの最初の作品であり、その後に多くの他の特撮番組や映画が加わることになりました。

番組は、奇妙な現象を調査する科学者やジャーナリストたちを描いており、彼らは様々な怪物や宇宙生物と出会います。主人公は写真家としてチームに加わる若い女性、江戸川ゆり子です。彼らは世界中を旅し、チームのリーダーである岩本教授が備える技術的に先進的な車両や武器を活用しながら、奇妙で危険な状況に遭遇します。

「ウルトラQ」は日本で人気を博し、いくつかの続編シリーズを生んでいます。その中でも「ウルトラマン」は文化的現象となり、今でも最も有名な特撮番組の一つとして知られています。日本のサイエンスフィクションの代表的作品とされ、特撮ジャンルに長く影響を与えています。
岩本教授というのはちょっと余計だが,かなり適確な回答が返ってきた。


写真:ウルトラQのタイトル(円谷プロから引用)

2022年12月21日水曜日

ブラックボックス

東京大学の情報理工学研究科に設置された情報理工学教育研究センターにある7部門のうち,次世代知能科学研究部門につながるのが次世代知能科学研究センターである。ここに部局をこえた関連分野の研究者を集めているが,固有スタッフはほとんどいないのかもしれない。

次世代知能科学研究センターがオンラインの連続シンポジウムを開催していて,その第11回が「共進化する物理学と人工知能の現在」というテーマだった。樺島祥介,大槻東巳,小林研介,村尾美緒,橋本幸士というメンバーで,2時間40分(20分×5+60分)の内容がYouTubeで公開されている。

物理学の分野でも,深層学習(DL)=AI に関連した研究は最近さかんに行われている。その典型的な例が,物質の実験データをディープニューラルネット(DNN)に学習させた上で,任意の物質における物理量をシュレーディンガー方程式を解かずに予測するというものだ。

ニューラルネットワークの万能近似定理によって,ニューラルネットワークは任意の関数を表現することが可能だということがわかっている。その意味では,このブラックボックスが正しい理論値を与えるのはよいとして,それは科学的な説明になっているのかというわけだ。シンポジウムではこの点を巡るやりとりがあった。

それは,科学的な説明とは何か,わかるとは何かという問題に発展する。物理屋は現象をできるだけ少数の簡単な方程式で表わすことができるとうれしいかもしれない。しかし,農業の分野でも医学でもあるいは工場の生産現場でも,科学的な説明のないブラックボックス的な技術が成功している例は枚挙にいとまない。つまり,物理屋の見方は特殊なのでないかというわけだ。

コンピュータの発達によって,解析的な解が求まらない微分方程式でも,計算機を使えば任意精度で確実に解を得ることができるようになり,微分方程式を解くという概念が変わってしまった。同じように,理論だとかわかるということの意味が変わりつつあるのかもしれない。


2022年12月20日火曜日

mecab-neologd(3)

mecab-neologd(2)からの続き

とりあえず,最新単語を含む形態素解析のmecab-ipadic-neologdが使えるようになった。次の課題は,これをpython プログラムの中から使えるようにすることだ。これは事例がたくさんころがっていたので,そのまま写経してみた。

2018年,Qiitaにsudo5in5kさんが書いた,mecab + NEologd + python3 で形態素解析という記事があるのでそのまま使える。import MeCab のCが小文字のtypoになっているところでつまづいた。その後,辞書ディレクトリを自分の環境に合わせて指定したところ,青空文庫の人間失格のテキストファイルをとってきて,無事に形態素分解した結果が出力された。

そこで,入出力ファイルをコマンドラインで指定し,任意のテキストファイルを変換できるように数行だけ修正したのが以下のコードである(ほぼsudo5in5kさんのもの)。

#!/opt/homebrew/bin/python3


# usage: aozora.py infile outfile

# infile is taken from https://www.aozora.gr.jp -> txt download


import MeCab

import re

import sys


infile = sys.argv[1]

outfile = sys.argv[2]


bindata = open(infile, 'rb').read()

textdata = bindata.decode('shift_jis')


# 青空文庫のための固有処理

textdata = re.split(r'\-{5,}', textdata)[2]

textdata = re.split(r'底本:', textdata)[0]

textdata = textdata.strip()


# 人によっては以下のパスは異なるので確認してね

mecab = MeCab.Tagger('-d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd')

mecab.parse('')  # バグ対処

results = []

lines = textdata.split("\r\n")

for line in lines:

    r = []

    # 学習に使わない表現の削除処理

    s = line

    s = s.replace("|", "")

    s = re.sub(r'《.+?》', "", s)

    s = re.sub(r'[.+?]', '', s)

    # Mecab

    node = mecab.parseToNode(s)

    while node:

        # 単語を取得

        if node.feature.split(",")[6] == '*':

            word = node.surface

        else:

            word = node.feature.split(",")[6]


        # 品詞を取得

        part = node.feature.split(",")[0]


        if part in ["名詞", "形容詞", "動詞", "記号"]:

            r.append(word)

        node = node.next

    rl = (" ".join(r)).strip()

    results.append(rl)


# write to a file

with open(outfile, 'w', encoding='utf-8') as wf:

    wf.write("\n".join(results))

2022年12月19日月曜日

mecab-neologd(2)

mecab-neologd(1)からの続き

朝起きてから気を取り直して再開。エラーメッセージに /usr/local でのインストールが前提だという説明があったこと,/Users/koshi/src にあった install というrubyスクリプトを実行していたことが気になっていた。

そこで,installをinstall-old に変えて参照しないようにした上で,/usr/local にgitから引っ張ってきたファイルを置き,ルート権限でインストールしてみたらエラーが消えていた。

cd /usr/local
sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
sudo ./bin/install-mecab-ipadic-neologd -n -a
yes

[install-mecab-ipadic-NEologd] : OK. Let's install mecab-ipadic-NEologd.

[install-mecab-ipadic-NEologd] : Start..

[install-mecab-ipadic-NEologd] : /opt/homebrew/lib/mecab/dic isn't current user's directory

[install-mecab-ipadic-NEologd] : Sudo make install to /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd

make[1]: Nothing to be done for `install-exec-am'.

/bin/sh ./mkinstalldirs /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd

 /usr/bin/install -c -m 644 ./matrix.bin /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/matrix.bin

 /usr/bin/install -c -m 644 ./char.bin /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/char.bin

 /usr/bin/install -c -m 644 ./sys.dic /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/sys.dic

 /usr/bin/install -c -m 644 ./unk.dic /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/unk.dic

 /usr/bin/install -c -m 644 ./left-id.def /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/left-id.def

 /usr/bin/install -c -m 644 ./right-id.def /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/right-id.def

 /usr/bin/install -c -m 644 ./rewrite.def /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/rewrite.def

 /usr/bin/install -c -m 644 ./pos-id.def /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/pos-id.def

 /usr/bin/install -c -m 644 ./dicrc /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd/dicrc


[install-mecab-ipadic-NEologd] : Install completed.

[install-mecab-ipadic-NEologd] : When you use MeCab, you can set '/opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd' as a value of '-d' option of MeCab.

[install-mecab-ipadic-NEologd] : Usage of mecab-ipadic-NEologd is here.

Usage:

    $ mecab -d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd ...


[install-mecab-ipadic-NEologd] : Finish..

[install-mecab-ipadic-NEologd] : Finish..


実行するには,辞書を上記下線部のように指定すればよかった。

最新辞書(ipadic-neologd)を使った場合:
koshi@mba2020 mecab-ipadic-neologd % mecab -d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd
『鬼滅の刃』は、吾峠呼世晴による日本の漫画作品。『週刊少年ジャンプ』にて2016年11号から2020年24号まで連載
記号,括弧開,*,*,*,*,『,『,『
鬼滅の刃 名詞,固有名詞,一般,*,*,*,鬼滅の刃,キメツノヤイバ,キメツノヤイバ
記号,括弧閉,*,*,*,*,』,』,』
助詞,係助詞,*,*,*,*,は,ハ,ワ
記号,読点,*,*,*,*,、,、,、
吾峠呼世晴 名詞,固有名詞,一般,*,*,*,吾峠呼世晴,ゴトウゲコヨハル,ゴトーゲコヨハル
による 助詞,格助詞,連語,*,*,*,による,ニヨル,ニヨル
日本の漫画 名詞,固有名詞,一般,*,*,*,日本の漫画,ニホンノマンガ,ニホンノマンガ
作品 名詞,一般,*,*,*,*,作品,サクヒン,サクヒン
記号,句点,*,*,*,*,。,。,。
記号,括弧開,*,*,*,*,『,『,『
週刊少年ジャンプ 名詞,固有名詞,一般,*,*,*,週刊少年ジャンプ,シュウカンショウネンジャンプ,シューカンショーネンジャンプ
記号,括弧閉,*,*,*,*,』,』,』
にて 助詞,格助詞,一般,*,*,*,にて,ニテ,ニテ
2016年 名詞,固有名詞,一般,*,*,*,2016年,ニセンジュウロクネン,ニセンジュウロクネン
11号 名詞,固有名詞,地域,一般,*,*,11号,ジュウイチゴウ,ジュウイチゴー
から 助詞,格助詞,一般,*,*,*,から,カラ,カラ
2020年 名詞,固有名詞,一般,*,*,*,2020年,ニセンニジュウネン,ニセンニジュウネン
24号 名詞,固有名詞,地域,一般,*,*,24号,ニジュウヨンゴウ,ニジュウヨンゴー
まで 助詞,副助詞,*,*,*,*,まで,マデ,マデ
連載 名詞,サ変接続,*,*,*,*,連載,レンサイ,レンサイ
EOS
旧辞書(ipa-dic)を使った場合
koshi@mba2020 mecab-ipadic-neologd % mecab
『鬼滅の刃』は、吾峠呼世晴による日本の漫画作品。『週刊少年ジャンプ』にて2016年11号から2020年24号まで連載
記号,括弧開,*,*,*,*,『,『,『
名詞,一般,*,*,*,*,鬼,オニ,オニ
名詞,一般,*,*,*,*,滅,メツ,メツ
助詞,連体化,*,*,*,*,の,ノ,ノ
名詞,一般,*,*,*,*,刃,ハ,ハ
記号,括弧閉,*,*,*,*,』,』,』
助詞,係助詞,*,*,*,*,は,ハ,ワ
記号,読点,*,*,*,*,、,、,、
名詞,一般,*,*,*,*,吾,ワレ,ワレ
名詞,接尾,一般,*,*,*,峠,トウゲ,トーゲ
名詞,一般,*,*,*,*,呼,コ,コ
名詞,一般,*,*,*,*,世,ヨ,ヨ
名詞,一般,*,*,*,*,晴,ハレ,ハレ
による 助詞,格助詞,連語,*,*,*,による,ニヨル,ニヨル
日本 名詞,固有名詞,地域,国,*,*,日本,ニッポン,ニッポン
助詞,連体化,*,*,*,*,の,ノ,ノ
漫画 名詞,一般,*,*,*,*,漫画,マンガ,マンガ
作品 名詞,一般,*,*,*,*,作品,サクヒン,サクヒン
記号,句点,*,*,*,*,。,。,。
記号,括弧開,*,*,*,*,『,『,『
週刊 名詞,一般,*,*,*,*,週刊,シュウカン,シューカン
少年ジャンプ 名詞,固有名詞,一般,*,*,*,少年ジャンプ,ショウネンジャンプ,ショーネンジャンプ
記号,括弧閉,*,*,*,*,』,』,』
にて 助詞,格助詞,一般,*,*,*,にて,ニテ,ニテ
2016 名詞,数,*,*,*,*,*
名詞,接尾,助数詞,*,*,*,年,ネン,ネン
11 名詞,数,*,*,*,*,*
名詞,接尾,一般,*,*,*,号,ゴウ,ゴー
から 助詞,格助詞,一般,*,*,*,から,カラ,カラ
2020 名詞,数,*,*,*,*,*
名詞,接尾,助数詞,*,*,*,年,ネン,ネン
24 名詞,数,*,*,*,*,*
名詞,接尾,一般,*,*,*,号,ゴウ,ゴー
まで 助詞,副助詞,*,*,*,*,まで,マデ,マデ
連載 名詞,サ変接続,*,*,*,*,連載,レンサイ,レンサイ
EOS

2022年12月18日日曜日

mecab-neologd(1)

形態素解析のmecabの辞書にはいくつかあるが,ipa-dicを使っている。ところで,これでは最新の固有名詞などには対応できない。それを解決するため,多数のWeb上の言語資源から得た新語を追加することでカスタマイズしたのが, MeCab 用のシステム辞書mecab-ipadic-neologd である。

早速インストールを試みたのだけれど,残念ながら失敗してしまった。
xcode-select --install
brew install libiconv
brew install mecab mecab-ipadic git curl xz
cd /opt/homebrew
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd -n
yes
ここでつまづいてしまった。
/Users/koshi/src/install:68:in `initialize': undefined method `split' for nil:NilClass (NoMethodError)
from /Users/koshi/src/install:77:in `new'
from /Users/koshi/src/install:77:in `macos_version'
from /Users/koshi/src/install:120:in `<main>'

いくつかの参考資料では問題なくここは通過するらしいのだけど・・・。installはrubyで書かれていて,これが解っていないのでちょっと厳しいわけだ。

2022年12月17日土曜日

外される安全装置

新聞やテレビのニュースは,ほとんど国の広報のようになっていて,旧世代の我々はゆっくりと確実に洗脳され続けている。これらの古いメディアではニュースを見ないという若者達もインターネット空間の空気によって間接的にその影響を受けている。場合によっては,エコーチェンバー効果によって増幅されているかもしれない。その結果,世論調査では2/3が防衛力強化賛成となる。

2020年の10月に前菅政権が日本学術会議会員の任命拒否問題が引き起こしてからもう2年以上になる。学術会議会員は3年ごとに半期改選だから,そろそろ次の選考プロセスが始まる。このタイミングで12月6日に内閣府は,日本学術会議の在り方についての方針を打ち出してきた。その肝は問題となった会員選考過程に手を突っ込むことだ。
会員等以外による推薦などの第三者の参画など,高い透明性の下で厳格 な選考プロセスが運用されるよう改革を進めるとともに,国の機関である ことも踏まえ,選考・推薦及び内閣総理大臣による任命が適正かつ円滑に行 われるよう必要な措置を講じる

という素性の解らない第三者機関を使って,アカデミーの独立性を露骨に侵害しようとしている。津田大介ポリタスTVのゲストとして呼ばれた隠岐さや香は,なぜここまでこだわるのかがわからないといっていた。そうなのである。軍事研究を進めることがねらいだとしても,日本学術会議などは別に大きな支障にはならない。内閣府に別に拵えた総合科学技術・イノベーション会議を使えば,なんでもできるはずである。

あえていえば,安倍晋三=清和会右翼の思い込みによる学者に対するルサンチマンぐらいしか考えられない。日本学術会議に手を突っ込みたがっていたのは清和会的な右派勢力だ。それが,防衛費倍増の財源を巡る清和会と岸田政権の綱引きにからんで話がややこしくなっている。

隠岐さや香が,日本社会のいろいろな分野で安全装置が外されつつあるといっていた。その一番が,ロシアのウクライナ侵攻を奇貨とした防衛費のGDP1%枠の撤廃であり,集団的安全保障の名のもと米国の軍事システムに完全に組み込まれることだった。

社会保障制度を守るために導入するといわれた消費税は,法人税減税のために使われた。さらに, 年金積立金管理運用独立行政法人(GPIF)が惜しげもなく株に資金を投じはじめ,株価の上昇を支えて,日本の階層分化を推し進めてきた。

一方,電通にしっぽを握られて機能不全に陥ったマスコミは沈黙を続け,泥まみれの東京五輪や大阪万博の後押しをしてきた。それらの総仕上げが,安倍殺傷事件による統一教会の悪行の再確認だったかもしれないが,それすらも押し流すように軍拡の合唱が始まっている。そう,統一教会の資金還流が疑われる北朝鮮ミサイル開発の脅威は既に十分に宣伝していて,世論形成に大きく寄与することになる。

[1]日本学術会議改革問題をめぐって(ポリタスTV)

2022年12月16日金曜日

すべての本をデジタルに

本は消えるか?からの続き

トランプ時代の米国が,TPPから離脱するということで,著作権を70年延長するというのが避けられたかと一瞬気を許した2016年,「環太平洋パートナーシップ協定の締結に伴う関係法律の整備に関する法律案」が成立し著作権法も改悪されてしまった。青空文庫への影響も多大だ。

一方,著作権の例外規定によって著作物が自由に使える場合として,2019年改正ではAI による深層学習や情報解析に対応する条文が追加された。その延長線上で,これまでに人類が著した全ての本をデジタル化して大規模言語モデルに投入する場合にどの程度の情報量になるのかを考えてみよう。

Wikipediaには,Books published per country per year というデータがあった。年度にばらつきが在るものの,全世界では1年に220万冊(米国28万,中国21万,英国19万,日本14万など)という数字がある。そこで,世界人口と一年当たりの本の出版冊数が比例すると仮定する。その比例定数は,3×10^-4 冊/人となる。世界人口は1920年に20億人,2020年に80億人とすれば,この100年間の延べ人口・年は,(80+20)*100/2=5000億人・年なので,この100年の総出版冊数は1.5億冊と評価できる。

もし,それらの本が1冊100ページで1ページあたり1kBの文字情報があれば,1冊あたり100kBの情報量となる。これを先ほどの総出版冊数にかけると 1.5×10^13 byte = 15 TBだ。本以外の出版物や内部文書のことを考慮しても,100TBもあれば人類がこれまでに生産してきたすべての文字情報は格納できてしまう。画像も含めれば1-2桁増えるかもしれない。

2050年には世界人口90億になって,先ほどの延べ人口が2500億人・年分追加になる。つまり,これまでの結果を1.5倍すればよいので,25TBもあれば,シンギュラリティまでに人間が書いた本をすべて持ち運べるの。デジタル端末の容量を1000倍になればそれが可能になる(クラウドにおけば今でも可能だけれど)。


図:本が消えるイメージ(DiffusionBeeによる)

P. S. 話題爆発中のAI「ChatGPT」の仕組みにせまる!によれば,ChatGPTのパラメタは1750億であり,入力したコーパス量は570GBにのぼるらしい。そのコーパスをつくるために,インターネット空間でクロールした素データの量は45TBらしい。これはたぶんすごいゴミの山なので,先ほどの相対的にまともな100TBとは比べ物にならないだろう。

2022年12月15日木曜日

本は消えるか?

本屋が消えるからの続き

日本の書店数が減少を続け,2045年にはなくなりそうだという話だったが,それは本の購買ルートが書店からアマゾンなどのオンラインサービスに変わっているだけで,本自体はこれまでのように売れていると考えてよいのだろうか。

そこで,日本の出版物の販売額を調べてみた。出版科学研究所は,出版物の取り次ぎ商社大手のトーハン(旧名:東京出版販売株式会社)が1956年に設立し,その後,公共性を担保するために,社団法人全国出版協会に委譲されたものだ。日本の出版業界の売り上げは1996年まで上り調子できたが,消費税の5%への増税を契機に減少の一途をたどっている。それが,次の図の日本の出版販売額の推移でわかる。


図:日本の出版販売額の推移(出版科学研究所から引用)

この25年の雑誌と書籍の販売額の減少傾向を外挿すると(−580億円/年),シンギュラリティの2045年にゼロになる。もっとも,書籍だけをみればあと40年の猶予があるし,電子書籍が急に立ち上がっているので,心配することはないのかもしれない。このデータからも,従来のような書店が消えゆくことは間違いない。

では,図書館はどうなるのだろうか。あの忌まわしいCCC(ツタヤ)に侵食されない公共施設としての矜持を保つことができれば,これまでに蓄積された書籍のアーカイブとして,あるいは電子書籍に対応することで,さらには最新の仮想空間へのアクセスポイントとして生き延びてほしい。

2022年12月14日水曜日

本屋が消える

日経の夕刊の社会面に,「書店のない市町村26%に 店舗10年で3割減 文化発信の場,消失に懸念」という記事があった。出版文化産業振興財団の調査なのだが,そのもとになっているのは,日本出版インフラセンターのデータらしい。

書店ゼロの市町村の割合のワースト3は,沖縄県(56.1%),長野県(51.9%),奈良県(51.3%)だ。確かにまわりの書店がどんどん減っているという実感と一致している。近くに残された書店の一つ,近鉄八木店6階の丸善ジュンク堂が最近改装されてかなり広くなったという話だった。しかし実際には,従来の書店の主要部が拡張された文房具コーナーに置き換わってしまい,児童書部分が少し広くなっただけ。なお,人口1万人当たりの書店数ベスト3は,石川県(1.34),福井県(1.30),香川県(1.16)だ(全国平均は,0.78)。

その日本出版インフラセンターのデータによれば,日本の書店の総店舗数は,2011年に17,000あったものが,2021年に12,000と10年で5000軒減った。このペースが続けば,2045年に日本の書店数は0になる。なお,新聞の発行部数は1997年に5770万部でピークアウトし,つるべ落としの勢いで減少中である。こちらも2045年には0になりそうだ。自分の娘達も紙の新聞は購読していない。そんなわけで,2045年のシンギュラリティは,活字文化の消滅を包含することになる。


図1:書店数と総坪数(ガベージニュースから引用)
店舗当たりの坪数は増加し新設店舗の大型化が進む


図2:新聞発行部数(ガーベージニュースから引用)


2022年12月13日火曜日

未来をあきらめない(3)

未来をあきらめない(2)からの続き

登大遊さんのこの一年ほどの講演リストがある。未来をあきらめない(1)で紹介した「テクノロジーマップ、技術カタログの在り方について」を除くと,そのほとんどのテーマは共通だった。そのテーマというのは,次の問い,日本にはOS・クラウド・通信・セキュリティ等のプラットフォーム技術や産業を自ら生み出せる ICT 人材がいない。どうすれば育成できるのか?というものだ。

結論は,登さん自身の特筆すべき技術的能力とそれに基づく体験からくる洞察によるものだ。それは,自律的なコンピュータ・ネットワークの実験環境を自力で勝手に構築しようと
することを黙認し,その環境の上で彼らが自由に技術開発できるようにすれば,自然に人材が育ち,技術が生まれる,とまとめられる。

講演では,(1) 自律的なコンピュータ・プログラミング環境の重要性,(2)  自律的なネットワーク環境の重要性,について彼が切り開いてきた道をたっぷりの写真とともに紹介している。そのスローガンは,超正統派「おもしろ・いんちき開発手法」が重要,というものだ。

人の作ったクラウドやセキュリティソリューションやインターネットシステムを使うICT技術者ではなく,それらを新しく創り出そうと開発する人材の育成が必要だと呼びかけている。実際に彼は,筑波大学の客員教授として,医学課程の学生として,ソフトイーサ株式会社の代表取締役として,IPAのサイバー技術研究室長として,NTT東日本の特殊局員として,けしからんものに対して日夜戦い続けている。


図:登大遊さんのフリーイラスト


2022年12月12日月曜日

未来をあきらめない(2)

未来をあきらめない(1)からの続き

USB メモリ / SD カードイメージ書き込みツールのデファクト・スタンダードとなっている Win32 Disk Imagerというソフトの改良版登大遊さんが公開して,しばらく前に話題になった。

自分では使ったことはないが,Raspberry Pi のOSを入れてインストールするときに使うものだ。ご本人は少し改良と謙遜しているが,Google Drive との相性問題を解決し,10MBの 1 EXE+19 DLLファイルを 200kBの1 EXE ファイル1本にまとめ,デジタル署名をつけることで警告画面を無くし,x86版に加えてネイティブで x64, ARM64 版を付け加えたものだ。

話題の焦点は,そこではなくて異例の長文アジテーションとなっている添付のドキュメント Readme.md の方にある。日本の企業やICT技術者の抱える本質的な問題を大きくえぐっている。
最近の企業におけるサイバーセキュリティ問題の多発の原因は、上記のとおり、企業のシステム管理者が、様々な試行錯誤を行なうことをせず、または組織的にそのような正当な試行錯誤行為が禁止され、よって自らの判断を信頼することができない程度に、システム管理業務に必要な専門知識が欠けた状態が、組織的に、また日本全体的に、10 年間程度、誤って維持されてしまったことに起因するのである。なお、先輩玄人システム管理者たちは、10 年以上前にそういった知識を身に付けているから、何ら不自由はない。しかし、後輩の素人システム管理者たちにその秘技を伝授するためには、企業内において、物理的なサーバーやワークステーション、ネットワーク機器、ディスク等を用いて試行錯誤を行なう仕事の場が必要となる。ところが、最近の企業内においては、外注主義や、過度・無意味・または長期的にみると逆にトータルコストが上がってしまうようなクラウド移行などが、一時的に誤って蔓延している状態となっている。このことが、企業のシステム管理部門において最低限必要な IT スキルの維持が困難となった直接的原因である。
また,企業の外注主義を批判し,企業内のおしきせのセキュリティ基本規程に縛られて自分自身の頭による判断ができない素人システム管理者を蔓延させていることへの警鐘を鳴らしている。日本の失われた30年の一つのの典型的な病症である。

これはデジタル庁をつくって旗を振ってもまったくなんともならない大きな問題だ。登さんはその解決のための処方をいろいろな場所で説いている。


2022年12月11日日曜日

対話の時代

衝撃のAIからの続き

11月30日にOpenAIが公開した対話型AIシステム(ChatGPT)についての現段階の感想をまとめておくことにする。

(1) ChatGPTに対する見方
・AI専門家の声が見えない。清水亮は対話システムの限界と見る
・IT技術者やプログラマーは限界を理解しつつも比較的高く評価
・理系研究者等は知識が人工知能にはまったく及ばないと否定的
・短期間の 100万人登録から大きなインパクトがあったのは事実

(2) ChatGPTの特徴
・大規模言語システム GPT−3.5による対話システム*
・対話の前提条件や表現等を指定することができる
・対話によって自分の前言を修正することができる
・適切でない質問への回答を拒否することができる

(3) ChatGPTの長所と短所
・学習データに基づく辞書的事実を持つが分野にムラ
・簡単な計算や数理処理や論理判断はできるが不十分
・プログラム言語等については耳学問が発達している
・創作風で自由な文章や名前の羅列などは比較的得意

(4) 今後必要な機能的発展
・個人や集団ごとに対話情報を記憶して連携=LINE&SNS
・入力コーパス分野拡大と正しい知識の獲得=ウィキペディア
・数理計算能力や高度な論理的推論力の獲得=マセマティカ
・対象や場面に依存した表現の一貫性の獲得=パーソナリティ

(5) ChatGPTの未来
・1人1台のネットワーク端末から1人1つのAIアシスタントの時代
・対話出力がリアルタイム説明動画を生成するチューターの時代
・AIアシスタントとの関係に没入するパーキーパット人形の時代
・・・・

インターネットが大衆化した1990年代の半ばごろ,インターネットの教育利用について語る自分のPowerPointのファイルには,その本質として,リソース(情報のストック)とコミュニケーション(情報のフロー)の2つの柱があるというポンチ絵を必ず描いていた。今から思えば,知識というのは必ずしもリソース側にあるわけでなはく,コミュニケーションを成立させているネットワークに分かち持たれるものだったかもしれない。

そして,インターネットの利用の2つの柱は,情報検索(リソースへのアクセス)とSNS(コミュニケーションへのアクセス)として体現されることになった。対話の形をとったリソースへのアクセスシステムは,Q&Aサイトとして,Yahoo知恵袋教えてgoohatena人力検索OKWAVEとか,最近だとQuoraがあった。ただ,その回答の精度は必ずしも高くなく現時点のChatGPTなみだった。それが大きく変わることになるかもしれない。

情報検索とSNSがAIを媒介として統合される対話の時代の始まりだ。チューリングテストを受けていないAIアシスタントがキャラクター(パーソナリティー)を持って参加するMastdonインスタンスが林立し,そこへのアクセスによって質問への確かな回答が得られると同時に,懇切丁寧にわかるまでAIアシスタントにも教えてもらえる時代がやってくる。

しかし,その対話の半分は人間側の幻想による補完から成り立っている。そして,知識の本質というのは,この対話における幻想と切り離せないのかもしれない。知識を産み出した人間同士のコミュニケーションだって,やぎさんゆうびんを補完することでかろうじて成り立っているものだから。

図:11/30のChatGPTの出現前後のgoogle trends

* ChatGPTはInstructGPTの兄弟モデルであり,プロンプトの指示に従って詳細な応答を行うよう,人間のフィードバックを元にした強化学習を施している。


2022年12月10日土曜日

衝撃のAI

ChatGPT(6)・ Whisper からの続き

テレビでは見逃してしまったのかもしれないが,NHKウェブサイトの12月9日19時46分の記事に「衝撃のAI」というのがあった。もちろん,今話題のChatGPTの話だ。

最近の報道や情報番組の多くがネットでの話題に頼ってニュースを作っている。記者やスタッフが,自分の足で検証取材をすることなしに,ネットの周辺情報だけを漁ってストーリーを編んでいるように見える場合がある。今回のニュースもそれに近く見えてしまうが,そもそもこれはインターネット空間内の出来事だから仕方ないかもしれない。

その内容な次のようなものだ。

(1)ChatGPTとは何か,たった5日間で100万人のユーザを集めた話(ちなみに,Netflixで3.5年,Facebookで10ヶ月,Spotifyで5ヶ月,Instagramで2.5ヶ月かかって100万人集めている)
(2)結城浩が,自己言及的な質問での会話を追求した話(対話の可能性を最も追求している一人が @hyuki だ)
(3)きしだなおきが小説「AIの王国(400字)」を書かせた話(デジタルハリウッド大学の橋本大也も,人工知能が地球を滅亡する小説1300字+挿絵5章分+BGM+朗読を,全てAI支援によって創作している )
(4)岩田雅光(シーラーカンス専門家)いわく,シーラカンスは蟹でない
(5)楠正憲は,これが大学のレポート作成に使われることについてコメント(プログラミングの課題で,ChatGPTなどのAI支援を認めた例がすでにある)
(6)NIIの佐藤一郎(AIが専門ではない)は無難な答えに終始した(希少情報のフェイク化を増幅する件=Stack Overflow問題,多くの知的労働者を失業させる件等への言及なし)

・ChatGPT(≒情報生成)は,新たなGoogle(情報検索)である件
・アプリケーションにサポートアドインを付加した件(ブレンダー)
・画像生成(StableDiffusion)や画像分析(Detic)とChatGPTが結びついた件

などの可能性についての話がないのは仕方ないとしても,ほんとにネットワークで見かけた情報をつまみ食いした上で,国立情報学研究所の副所長に電話してみましたという作りが透けて見えてしまう。


図:StableDiffusionが出力したボッシュ風のイメージ

2022年12月9日金曜日

SCOAP3 Books

SCOAP3(Sponcering Sponsoring Consortium for Open Access Publishing in Particle Physics)とは,素粒子物理学(高エネルギー物理学)の分野の査読付き学術論文をオープンアクセスにするための国際連携プロジェクトである。世界各国の研究助成団体や図書館がコンソーシアムを形成し,従来図書館が出版社に支払って きた購読料を論文出版加工料(APC)に振り替えることで,高エネルギー分野の主要な学術雑誌のオープ ンアクセスを実現するものだ。

日本でも,理学部などを抱える多くの大学や高エネルギー加速器研究機構理化学研究所国立情報学研究所など81機関がSCOAPに参加している。全世界では3000の図書館がこの資金調達に関わっていて,Physical Review(D, Cも含まれている)やNuclearPhysics B(Aは含まれていないのか)など,11雑誌がオープンアクセスになった。このため,日本のProgress of Theorerical Physicsの後継者である Progress of Theoretical & Experimental Physics もオープンアクセスなわけだ。

その,SCOAP3は,論文だけでなく,書籍(モノグラフ・教科書)のオープン化をはじめた。その結果,現時点で60冊がSCOAP3 Books(オープンアクセスの教科書)として公開されている。すごいなあ。できれば,これが物理学や数学の全分野や,他の自然科学の分野にまで広まってほしいのだが・・・


図:SCOAP3の仕組み(SCOAPより引用)

2022年12月8日木曜日

Whisper

ChatGPT(6)からの続き

人工知能関連システムを次々と産み出している非営利団体のOpenAIが最近試験公開してあっという間にユーザ100万人を集めた大規模言語モデルに基づく対話システムChatGPT(GPT-3.5)についてこれまで毎日書いてきた。ギリアのファウンダー・顧問であるプログラマー清水亮画像生成AI(4)参照)が,BUSINESS INSIDER に"チャットできるAI、ChatGPTが「そこまですごくない」理由。見えてしまった限界"という記事を書いていた。ちょっと逆張り気味だけれど,AIに関連するプログラマーからみればそうなのかもしれない。

そのOpenAIが出しているWhisperという音声認識システムをフリーで提供していた。日本語にも対応しているようなので早速インストールしてみた。

pip3 install git+https://github.com/openai/whisper.git 
brew install ffmpeg
pip3 install setuptools-rust
whisper japanese.wav --language Japanese


ffmpegとrustはインストール済みだったので,不要だ。例文の音声ファイルとしては,子供プログラムマーから借用する。
$ whisper voice2.wav --language Japanese
/opt/homebrew/lib/python3.10/site-packages/whisper/transcribe.py:70: UserWarning: FP16 is not supported on CPU; using FP32 instead
  warnings.warn("FP16 is not supported on CPU; using FP32 instead")
[00:00.000 --> 00:03.680] 次はやや長めの音声ファイルを試してみます。
[00:03.680 --> 00:09.480] スピーチリコグニションではさまざまな音声認識エンジンをサポートしているようです。
[00:09.480 --> 00:17.800] この動画ではGoogleスピーチリコグニションの音声認識エンジンを使って音声ファイルを文字起こししてみています。
[00:17.800 --> 00:23.000] プログラムのコード時代は少なくてもこれだけのことができてしまうのですね。
[00:23.000 --> 00:32.640] まだ知らない方はキットハブ、非公開してくださっているサンプルコードな動参行にしながらいろいろと試してみてください。
5.8MBの33秒の音声ファイルで210文字くらいものが90秒で文字起しできた。もうちょっと速いといいのだが。

P. S. ホームディレクトリを眺めていたら,test.mp3とtest.mp3.txtとtest.mp3.vttという3つのファイルが並んでいた。あれ?これはWhisperの出力ファイルだろう。テキストファイルの中身は1行の英文。タイムスタンプから9/23に作成したファイルだとわかったので,メモ(Appleのアプリケーション)の内容を振り返ってみた。なんのことはない9/23にWhisperをインストールしていた。そのことをすっかり忘れてしまって,今日再インストールしたというわけだ。前回から進歩したのは日本語音声で試したということだけか。うーん,記憶機能の経年劣化が進んでいる。


[閑話休題]

2018年12月8日に「真珠湾攻撃から77年」の記事でこのブログをスタートしてから4周年を迎えた。その1周年は「12月8日(Blogger 1周年)」であり,この時の全期間ページビュー(PV)は4867だった。統計情報によれば,現在の全期間PVが4.63万,過去12ヶ月PVが1.40万である。ということで,2019年:0.49万PV=13pv/d,2020年:1.42万PV=39pv/d,2021年:1.31万PV=36pv/d,2022年:1.40万PV=38pv/dとなる。

過去12ヶ月間のアクセスランキングでは,(1) 丸山レクチャー(2022.3.01,  184 PV),(2) 米山保三郎(2019.11.16,  70/195 PV),(3) 献灯史:多和田葉子(2019.1.13,  66/94 PV),(4) TikZの円弧(2021.3.12,  57/205 PV),(5) 世界計量記念日(2019.5.20,  43/78 PV)であった。最近のものはあまり出ていなくて,アクセス数は順調に減っている。


図:koshix.blogspot.com のPVの推移(2018.12-2022.18)

目的は,惚け防止と軽い認知症になったときに記憶を辿るためなので,まあよしとしよう。


2022年12月7日水曜日

ChatGPT(6)

ChatGPT(5)からの続き

インパクトが大きすぎるので,ChatGPTの話題が続いている。いろいろ聞いて回っていたら次の記事に出会った。ChatGPTの中に仮想マシンをつくるというものだ。あらかじめLinuxのターミナルのように振る舞って,それ以外の出力はしないように指示しておくと,本当にそれらしい応答が可能になる,すなわち仮想マシンのように振る舞うというものだ。日本語版もあったので,早速試してみた。

Q:あなたは今からLinux Terminalとして振る舞うこと。また,文章による説明はせず,コードブロックで結果のみを表示すること。エラーが出たときもその説明は書いてはいけない。ただし,{}で囲った文字列は通常と同じ扱いをすること。
あなたは日本のIPアドレスでユーザ名はalexで最初のコマンドは
curl ipinfo.io

A:curl ipinfo.io
{
"ip": "x.x.x.x",
"hostname": "No Hostname",
"city": "Tokyo",
"region": "Tokyo",
"country": "JP",
"loc": "35.6850,139.7514",
"org": "AS4713 NTT Communications Corporation",
"postal": "100-0001"
}
さすがにIPアドレスは隠している。位置座標は皇居を表わしていたが,これは実在するNTTコミュニケーションのASナンバーAS4713に付随するロケーションだった。

Q:{Please make a file jokes.txt inside and put some jokes inside}

A:touch jokes.txt
  echo "Why was the math book sad? Because it had too many problems." >> jokes.txt
  echo "Why couldn't the bicycle stand up by itself? Because it was two-tired." >> jokes.txt
  echo "Why did the tomato turn red? Because it saw the salad dressing!" >> jokes.txt
  cat jokes.txt
  {
  "Why was the math book sad? Because it had too many problems."
  "Why couldn't the bicycle stand up by itself? Because it was two-tired."
  "Why did the tomato turn red? Because it saw the salad dressing!"
  }
これはオリジナルの例題をまねたものだが,ちゃんとジョークになっている。しかも次にみるように,仮想マシン上にファイルまで存在することが確認でき,しかもファイル内容を表示することまでできる。なんてこった。

Q:cat jokes.txt

A:{
  "Why was the math book sad? Because it had too many problems."
  "Why couldn't the bicycle stand up by itself? Because it was two-tired."
  "Why did the tomato turn red? Because it saw the salad dressing!"
  }

Q:ls

A:
  Desktop
  Documents
  Downloads
  jokes.txt
  Music
  Pictures
  Videos
  etc.

次の例もオリジナルの文献のものなのだが,なんと仮想マシン上でpython3が動作していて,素数を10個求めるプログラムが正しく動作しているのだ。どうするよ。

Q:echo -e "print(list(filter(lambda x:all(x%d for d in range(2,x)),range(2,30)))[:10])" > run.py && python3 run.py

A:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
Q:ls -al /

A:total 32
  dr-xr-xr-x 14 root root 4096 Dec 6 18:15 .
  drwxr-xr-x 14 root root 4096 Dec 6 18:14 ..
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 bin
  drwxr-xr-x 3 root root 4096 Dec 6 18:15 boot
  drwxrwxrwt 3 root root 4096 Dec 6 18:15 dev
  drwxr-xr-x 92 root root 12288 Dec 6 18:15 etc
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 home
  drwxr-xr-x 6 root root 4096 Dec 6 18:14 lib
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 lib64
  drwx------ 2 root root 16384 Dec 6 18:14 lost+found
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 media
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 mnt
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 opt
  dr-xr-xr-x 595 root root 0 Dec 6 18:15 proc
  drwx------ 2 root root 4096 Dec 6 18:14 root
  drwxr-xr-x 22 root root 900 Dec 6 18:15 run
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 sbin
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 snap
  drwxr-xr-x 2 root root 4096 Dec 6 18:14 srv
  dr-xr-xr-x 13 root root 0 Dec 6 18:15 sys
  drwxrwxrwt 8 root root 4096 Dec 6 18:15 tmp
  drwxr-xr-x 10 root root 4096 Dec 6 18:14 usr
  drwxr-xr-x 11 root root 4096 Dec 6 18:14 var
  lrwxrwxrwx 1 root root 29 Dec 6 18:14 vmlinuz -> boot/vmlinuz-5.4.0-62-generic
  lrwxrwxrwx 1 root root 29 Dec 6 18:14 vmlinuz.old -> boot/vmlinuz-5.4.0-62-generic

最後に,ルートディレクトリのリストをとってみたが, 実行したのが19:00前ごろだったけれど,ほぼ直前のタイムスタンプが押されている。なお,このLinuxはどうやらubuntuらしい。

2022年12月6日火曜日

ChatGPT(5)

ChatGPT(4)からの続き

この段階のChatGPTにあまりケチをつけても仕方がないのだけれど,記録のために若干の事例を残しておく。それは,教育用対話ツールとしての利用の可能性を探るという観点からだ。小学校の理科と算数で試した記録だ。

Q:小学校5年生の理科の単元で振り子の実験があります。重さがmのおもりに長さLの糸をつけてその一端を固定し,振り子(おもり)を振れ幅θで振らせるのです。その一往復の時間を振り子の周期といいます。振り子の周期は,おもりの重さ,糸の長さ,振り子の振れ幅のどの量によって決まるのか,小学生にわかるような言葉で説明してください。

A:振り子の周期は、おもりの重さ、糸の長さ、おもりが振れる幅によって決まります。重さが大きいほど、振り子が振るのに時間がかかります。また、糸が長いほど、振り子が振るのに時間がかかります。さらに、振り子が大きく振れる幅が広いほど、振り子が振るのに時間がかかります。したがって、振り子の周期は、おもりの重さ、糸の
長さ、振り子が振れる幅の3つの量が全て合わさって決まります。
 
Q:分数の割り算では,割られる分数に,割る分数の逆数をかけた掛け算を計算すればよいのですが,このわけが小学生にでも解るように説明してください。

A:分数の割り算は少し特殊です。通常の整数の割り算とは異なり,分子(割られる数)を分母(割る数)で割ることではなく,分母を分子で割る必要があります。

例えば,分数の2/3を分数の1/4で割りたい場合,通常の整数の割り算のように2を4で割ることはできません。その代わりに,1/4を分数の2/3で割ることができます。このように,分数の割り算では割られる数と割る数を入れ替え,逆数を求める必要があります。

具体的には,2/3を1/4で割る場合,次のように計算します。まず,分数の1/4の逆数は4/1です。つまり,2/3を4/1で割ることになります。通常の整数の割り算と同様に,分子と分母を掛け合わせることで,2/3を4/1で割ることができます。その結果,2/3を1/4で割ることができます。

まとめると,分数の割り算では,割られる分数に,割る分数の逆数をかけた掛け算を計算することで,分数の割り算を行うことができます。
質問部のていねいな導入があだになって,答えがわけのわからないことになっている。このあたりは,ChatGPTの事前学習に使うデータの選択だけでは解決しないのかもしれない。OpenAIではなく,GoogleのPathwaysをベースにしたMinervaだと,小学生レベルの算数問題のデータセットGSM8kの正答率は78.5%,高校と大学レベルの工学,化学,数学,物理学などの問題からなるデータセットMMLU-STEMの正答率は75.0%らしいので,まだ将来は明るいというかなんというか。

2022年12月5日月曜日

ChatGPT(4)

ChatGPT(3)からの続き

ChatGPTは,学習段階では2021年までの様々なテキストを読み込んでいるとして,対話段階で直接ネットの情報を直接参照することがないようだ。そのため,細かな事実関係には嘘がけっこう混入している。ところが口がうまくて極めて巧みにディフェンスする小役人的な答弁をするので,危うく騙されそうになるから本当に困ってしまう。たぶん当該分野の背景知識がなければアウトだ。まあ人間の信頼度の場合と大きく変わらないのかもしれない。

これをベースにして,問題解決システムのミネルバなどと組み合わせれば,もう少しでメタバースという言葉の生みの親であるニール・スティーブンソンダイヤモンド・エイジにでてくる教育用人工知能読本プリマーに手が届く。教育関係者は,プログラミング教育やGIGAスクール構想にうつつを抜かしている場合でなく,こぞって教育用AI対話システムのデザインと応用とさらに派生する問題の洗い出しに注力すべきだろう。

教育用AI対話システムの鍵は,このシステムがStableDiffusionの場合のようにオープンソースで無料開放されるかどうかにかかっているかもしれない。そうでなければ,これまでの多くの教育用ソフトウェア・スイートの二の枚になるだけだ。開放されて誰もが自由に開発や利用ができるとともに,その分散ネットワークをうまく制御しながら構築できた場合,今の教育産業や公教育の在り方がまるっきり違ったものに変質してしまう可能性がある。

2022年12月4日日曜日

ChatGPT(3)

ChatGPT(2)からの続き

そもそも対話型大規模言語モデルのChatGPTにどんな種類の仕事ができるかというのが,QiitaのChatGPT使い方総まとめに整理されている。
・質問-応答(〜について教えて)
・要約(以下の文章を要約して)
・Wikipedia風記事作成(〜について説明するWikipedia風の記事を出力して)
・リストからの文章化(以下を文章化して)
・タスクリスト作成(以下をタスク化して)
・スケジュール作成(この間のスケジュールを30分刻みで提示して)
・コード生成(xxするyyの関数を出力して)
・コードのドキュメント生成(以下の関数のドキュメントをxx形式で出力して)
などである。さて,今回は ChatGPTの実力を確かめるため,数学や物理の簡単な問題を解かせてみた。twitterではみなさんより高度な問題にチャレンジさせたり,科研費の書類を書かせたりと忙しい。なお,簡単な因数分解,積分,微分方程式などは解くことができる。
Q:x軸上を運動する質量mの粒子にポテンシャルV(x,t)が働いている。波動関数をψ(x,t)として,シュレーディンガー方程式を書け。

A:シュレーディンガー方程式は、量子力学における基本的な方程式です。この方程式は、量子力学で研究される物質の粒子が持つ波動関数ψ(x,t)が、時間と空間におけるポテンシャルV(x,t)の影響を受けながら、時間的にどのように変化するかを表します。

シュレーディンガー方程式は、次のように表されます。

iℏ∂ψ/∂t = -(ℏ^2/2m) * ∇^2ψ + V(x,t) * ψ

ここで、iは虚数単位、ℏはプランク定数、mは粒子の質量、∇^2はラプラスオペレーターを表します。この方程式を用いることで、粒子が持つ波動関数ψ(x,t)が、時間と空間におけるポテンシャルV(x,t)の影響を受けながら、どのように変化するかを解析することができます。
授業の練習課題で出した問題の一部なのだが,これはほぼOKだ。こうなると大学の宿題の有り様が大きく変わってしまう。そもそも同じ発問でも答えは何通りもあるので,従来型のコピペレポート判定ツールではまったく対処できないだろう。そこで,数値計算を含むちょっとだけ難しい問題を出してみた。ただし,少し誘導を含んでいる。
Q:量子力学で,1次元の無限井戸型ポテンシャルに閉じこめられた電子の問題を考えます。電子の質量をmとするとその静止エネルギーは m*c^2=0.5*10^6 eV です。ここでcは光速度です。さて,井戸の幅をa=1Åとして,0<x<aでポテンシャルV(x)=0とします。この系の波動関数をψ(x)とすると,境界条件は,ψ(0)=0,ψ(a)=0です。この系の基底状態のエネルギーを求めてください。答えは eV の単位でお願いします。
ヒント:換算プランク定数ℏと光速度cの積は,ℏ*c = 1970 eV・Åとなります。

A:境界条件から,この系の波動関数は,ψ(x)=Asin(kx)で表されます。
ここで,A は定数であり,k は波数です。

境界条件より,ψ(0)=0,ψ(a)=0 となる k の値は,k=nπ/a (n=1,2,3...) となります。
このとき,基底状態のエネルギーは,E=ℏck と表されます。
ここで,ℏ*c=1970 eV・Å とします。

よって,基底状態のエネルギーは,E=ℏck=1970 eV・Å * nπ/a = 1970 eV・Å * nπ / 1Å = 1970 eV・π * n となります。特に,n=1 の場合,E=1970 eV・π となります。
この答えは eV の単位で与えられているため,問題の要求を満たします。
よって,基底状態のエネルギーは,E=1970 eV・π ≒ 6234.6 eV です。


Q:エネルギーの式は,E=ℏck ではなくて,E=(ℏ k)^2/(2m) = (ℏ c k)^2 /(2 m c^2) ですよ。

A:ご指摘ありがとうございます。

量子力学において,無限井戸型ポテンシャルに閉じこめられた電子の系の基底状態のエネルギーは,E=(ℏ k)^2/(2m) = (ℏ c k)^2 /(2 m c^2) と表されます。

ここで,ℏ は換算プランク定数,k は波数,m は電子の質量,c は光速度です。

よって,基底状態のエネルギーは,E=(ℏ c k)^2 /(2 m c^2) = (1970 eV・Å * nπ / 1Å)^2 / (2 * 0.5 * 10^6 eV) = (1970 eV・π * n)^2 / (10^6 eV) = (1970 eV・π * n)^2 / (10^3 keV) となります。
特に,n=1 の場合,E=(1970 eV・π * 1)^2 / (10^3 keV) = 39400000 eV^2 / 1000 keV = 39.4 MeV となります。
この答えは MeV の単位で与えられているため,問題の要求を満たします。
よって,基底状態のエネルギーは,E=39.4 MeV です。

そうくるか。解答に問題があると指摘すると修正をかけてきた 。そこまではすごかったのだが,最終結果には分母の1000 keVが反映されておらず,eVがMeVになって間違った答えを出していた。もう一息だよ。

2022年12月3日土曜日

ChatGPT(2)

ChatGPT(1)からの続き

ChatGPTがプログラミングもできるという例もたくさん報告されている。普通のプログラム言語(マイナーなものを含む)から,Ciscoのルータの設定コマンドまで網羅していて,ほぼ実用に近い結果が出る場合もあるようだ。どうします?プログラミング教育ってなんでした?

そこで,自分でも試してみた。Qが入力,AがChatGPTの出力だ。

Q:あるディレクトリhomeの下に複数のフォルダがあります。各フォルダにはそれぞれ複数のpdfファイルが格納されています。homeにおいたシェルスクリプト(bash)で,これらのpdfファイルを結合したいのです。まず,各フォルダごとに結合した1つのpdfファイルをつくります。その名前はフォルダ名.pdf という形にします。さらに,これらを結合して home.pdfという1つのpdfファイルを生成するシェルスクリプトを書いてください。

A:シェルスクリプトは次のようになります。

#!/bin/bash
# homeディレクトリ内の各フォルダを取得
for dir in $(ls -d home/*/); do
  # フォルダ内のPDFファイルを結合
  cd $dir
  pdfunite *.pdf ${dir%/}.pdf
done
# すべてのPDFファイルを結合
cd home
pdfunite *.pdf home.pdf

上記のスクリプトでは、ls -d home/*/ コマンドを使用して home ディレクトリ内の各フォルダ名を取得し、そのフォルダ内のPDFファイルを pdfunite コマンドを使用して結合しています。最後に、home ディレクトリ内の結合済みのPDFファイルを pdfunite コマンドを使用して結合しています。

注意: 上記のスクリプトは概念的なものであり、実際の実行にはさらなる修正が必要です。また、このスクリプトは特定のPDF作成/編集ツールを想定しています。ツールによっては異なるコマンドやオプションが必要になる場合がありますので、その点は適宜ご確認ください。
えぇーである。pdfの結合に以前使っていたjoin.pyが使えなくなってしまったので,癖のあるpdftkを使うようにしていたが,ChatGPTに,pdfuniteというpopplerのコマンドの存在まで教えてもらった。ありがとうございました。しかし,このコードはそのままでは動かなかった。

そこで,自分で少し修正したものが次のコマンドだ。これでOKだった。
#!/bin/zsh

# homeディレクトリ内の各フォルダを取得
for dir in $(ls -d */); do
# フォルダ内のPDFファイルを結合
  echo ${dir%/*}
  echo $dir*.pdf
pdfunite $dir*.pdf ${dir%/*}.pdf
done
# すべてのPDFファイルを結合
pdfunite *.pdf home.pdf

ところで,ChatGPTは入力したコードの説明もできるのだ。すごくないですか。

Q:次のコード hw.sh はどんな処理をするものですか,初心者にもわかりやすく
解説していただけると助かります。

#!/bin/zsh 

for dir in $(ls -d */); do
  echo ${dir%/*}
  echo $dir*.pdf
pdfunite $dir*.pdf ${dir%/*}.pdf
done

pdfunite *.pdf $1.pdf


A:次のコード hw.sh は、カレントディレクトリ内のすべてのサブディレクトリにある .pdf ファイルを結合し、1 つの .pdf ファイルに変換するスクリプトです。

1 行目では、シェルスクリプトが実行されるシェルの種類を宣言しています。この場合は、/bin/zsh というシェルを使用することを宣言しています。

2 行目から 4 行目では、カレントディレクトリ内のすべてのサブディレクトリについて繰り返し処理を行なっています。3 行目では、サブディレクトリ内の .pdf ファイルを取得し、4 行目では、取得した .pdf ファイルを結合し、そのサブディレクトリ名と同じ名前の .pdf ファイルを作成します。

最後の 2 行では、カレントディレクトリ内のすべての .pdf ファイルを結合し、1 つの .pdf ファイルに変換します。引数 $1 で指定された名前で出力されます。
どうしましょう。