ここ数日、今までの人生でないくらい、日本十進分類法(NDC)に触れてます。(今までも毎日目にはしてましたが)
今、作っているNDCカルタのテストプレイを何十回と繰り返しているうちに、自然とNDCが頭に馴染んできて、やっぱりちゃんと意味が近い言葉は近い番号になっているんだなぁと、当たり前のことを今更ながら深く実感する毎日です。
そんなことを感じるなか、そういえばPythonで言葉の意味の近さを計測できるとどこかに書いてあったことを思い出し、NDCの分類でやってみて近い分類は関係性が強く出たりしたらおもしろそうと思い、例のごとく、ChatGPTに手取り足取り教えてもらいながら、NDCの各分類の単語の意味をネットワーク図にするということをやってもらいました。
ネットワーク図
見てみる
星座みたいで綺麗ですよね。マウスのコロコロで拡大縮小したり、ドラッグで引っ張ったりできると思うので、いじってみてください。
日本語でもやったのですが、英語の方がきれいに関係性が出ている気がしたのので、英語版で個人的な萌えポイントをご紹介します。
ここら辺は7類、8類、9類ですね。ちゃんと類の塊が出ているのもいいですし、8類、9類は密集しているのに対して、7類のあたりは相互の繋がりが少ないところに言葉の距離感が出ていていい感じです。
ここら辺、5類と6類の距離が近いのは、まあそうかなという感じですが、IndustryからEconomicsに繋がっていて、そこからMathematicsにくるという6,3,4という繋がりに美しさすら感じます。内容的に近いけど配架場所は遠いこと、よくありますね。
370番という割と地味(?)なところに位置するEducationですが、ネットワーク図にすると、「言語」や「文学」のようにお仲間がいっぱいいる言葉は別として、かなり上位で他の多くの単語と繋がりを持っていて、そうだよなぁとしみじみしました。
どことも線で繋がれなかった(正確には設定した線引きの閾値より関係値が低かった)分類たち。やっぱり「医学・薬学」は不均衡記号だから…とか感じて面白いです。Google Mapで海にポツンと浮いてる島をみるのとか、ドラクエ2のザハンとか好きなんですよね。
これを見て、NDCはちゃんと意味が近いものが近くなるように分類できてるんだなぁと解釈するか、NDCをちゃんと表せるってことは本当に言葉の意味って計測できるんだなと解釈するか、どちらを正としてみたらいいのかはよくわからないのですが、個人的には直感に近い図が出てきたことに気持ちよさを感じるのでした。
それはそれとして上の文章を書くとき、スラスラと分類番号が思い浮かんだことに、ここ最近のパワーアップを感じます。
技術的な話
今回はPythonを使って、日本語は「cl-tohoku/bert-base-japanese-v3」というモデル、英語は、「all-MiniLM-L6-v2」というモデルで単語をベクトル化し、sklearnのcosine_similarityというのを使って単語間のコサイン類似度を計算し、それをpyvisでグラフ表示するということをしました。ChatGPTに言われるがままにやっただけなので、雰囲気でしか理解していません。
id:otani0083さんにPythonを使うならノートブックを使うのが良いと教えていただいので、今回本格的に使ってみたのですが、ターミナルでプログラムを実行していた今までとは比べ物にならないくらい、格段に楽に作業を進めることができました。ありがとうございました。
ChatGPTのおかげで、こういうのをやってみたいと思った時にサクッとできて、とても楽しいです。スト6がモダン操作のおかげで、コマンド入力ができなくてもコンボができて大流行りと同じ感じだなと思いました。
お相手はやわらか図書館学でした。