意味AIを作る – 制作中
意味AIの制作作業を少しずつ進めてます
“どんな知識も何と繋がっているかで表現できる“というのがコンセプト
リンクの種類は、主構造・補構造・関連・分類の4種類
知識を”何で出来ているか”と”何と関わっているか”に分けて記述します
基本はメインとサブの木構造なのですが、内側へ伸びる木、外側に伸びる木、その2つを記録場所を分けることで実現します(憶測ですが、構造を左脳、関連を右脳が担っているのではないかと考えています)
初期の頃は、主と補の2種類のみでデータを入力していたので、現在、データを一から見直しているところです。
情報が内なのか外なのか判別に苦労してます。(自分の頭が悪いせい)
丸1日掛けても500件見直すのがやっとですね
AとはBのCである(構造)
AはDである(関連)
良い例が”野球ボール”です
“野球ボール”とは”野球用”の”ボール”である(構造)
“野球ボール”は”白い”(関連)
“野球ボール”は”スポーツ用品”である(分類)
こんな感じでデータを仕分けてます
記号はSub, Main, Relation, Classの頭文字です
“構造”は二つの言葉を組み合わせて1つの言葉にします。そうすることで組み合わせた言葉に対して新しい知識を紡ぐことができます。これが左脳が言語を司ると言われる理由じゃないでしょうか。○○の○○の○○とof思考で情報をどんどん具体化して情報を区別します。
“関連”はis思考。述語の繋がりです。その主に当たるのが分類。分類は構造の正反対の機能を提供します。物事を抽象化することで複数の知識を同一視します。右脳が感覚的なものや抽象的なものを司ると言われることと一致しますよね。
この二つの木を使って知識を記述しています。
入力済みのデータ数は15000、リンク数は27000
5年くらい前から空き時間を使ってデータを入力してきましたが、塵も積もれば何とやらですね
見直しにかかる時間・・・1か月
思考アルゴリズム
データを入力しただけではただのデータベース、マイWikiPediaにしかならないので、データを使ってどう思考させるかというのが大事です。
思いついた思考アルゴリズムをいくつか紹介します
逆参照によるグループ化
これが一番単純で強力なアルゴリズムです。
“赤い”を持っているものを逆参照して”赤いものリスト”を作りました。
更にその親を表示することで、具体例な赤いものの一覧が出てきます。
これは”工具”リストでも”酸化物”のリストでも何でも出せます
“分類”と”グループ化”が別物なのが面白いところですね
実用的な使い方として、症状から病名を当てるといったようなことができそうです
継承
親(主や分類)が持つ情報を子に継承して表示します。
最初の画像ではガンマ鉄に鉄の情報が展開されていましたね。
三段論法もこの継承を使うことで表現できます
ソクラテスは人間である
人間はいつか死ぬ
よってソクラテスはいつか死ぬ
(※ 多少、表現を変えてます)
応用(用途)
AをBするという構造データがあった場合、Aに対してBを展開する”応用展開”
ボールに対して直接、”投げる”や”蹴る”などの情報は登録せずに、それがどのように使われるかという情報は、”ボールを投げる”という言葉を作ることで表現します。
同じように物体の構造もこの方法で記述します。
自動車に対してハンドルを結び付けると、”自動車はハンドルである”という間違った知識構造になります。
そこで、”自動車のハンドル”という言葉を作ることで、整合性を保ちます。
知識の構造と物体の構造が違うことには随分悩まされました。
照合
補+主の知識と関連+分類が一致した場合に、前者に対し後者を分類情報として表示します。
例としては、”りんご”に対して、”赤い果物”を表示します。
上の画像では、ボールに対して”球状”の”物体”である”球体”が表示されています。
これは気付きになることが多いです
類似
情報を階層展開して共通項をカウントすることで類似度を出します
これは”りんご”の類似度です
自身を含むものが最上位、次に果物、丸いもの、赤いものと並びます
何と繋がっているかが知識のユニークさであり、共通項で類似度を判断しているというのが初期の構想。
新しいアイデアを生み出させるには類似物への置き換えが出来ると良いですね
経路探索
知識から知識への経路を探索するアルゴリズム
起点と終点をそれぞれ10階層程度幅探索をして、起点からの通過フラグ、終点からの通過フラグを付けます。両方のフラグが付いている知識が交点になります。辿った経路を記録しておいて、交点からルートをつなぎ合わせます。
生物学的ハザードから水までの経路(18階層)
無理やりな連想ゲームみたいなってますね(笑
プログラム
サーバープログラムはVisual C++で書いています。
最初はMySQLとPHPを使っていたのですが、子アイテムまで表示しようとすると情報の組み立てにクエリを数百回発行する必要があったため表示に時間が掛かるようになりました。問題解決のためネットワーク型のデータベースを探してみたのですが導入方法が分からず断念。C++でローカルアプリを作って簡易なHTTPサーバー機能を付けることにしました。ローカルアプリだと情報を展開済みで管理しているので爆速です。
C++でHTMLを出力するひどい仕様
ヘッダー、フッター、cssなどは外部ファイルから読み込むようにしてます。
クライアント側はHTML+Javascript, JQuery,Ajaxと言った感じです。テーブルのアイテムをクリックすると選択状態になり赤文字で強調表示され、削除・名前変更などの操作ができます。テキストを入力して、リンクタイプを選んで、登録ボタンを押すと子情報が追加されます。ダブルクリックすると情報が遷移。
ファイル名が.phpになっていますが、レンタルサーバーでやってたときの名残りです。
最初の頃はリンクタイプをチャンクと命名してました。繋がりの種類というのは脳の領域を指しているのではと思ったからです。
今後の展望
これをノートアプリに出来たら面白いんじゃないかと思ってます
アイデアの整理、思考のサポート、問題提起、ノートの自発的な思考
学校のノートだと見返すことはありませんが、アプリだと分野を問わず記録でき、知識を積み上げ続けることができます
一生をかけて育てる自分だけのノートとか面白そうですよね
死んだ後も自身のコピーとして残せないでしょうか
他者との情報交換
前述したとおり、何と繋がっているかが知識の本質なので、言葉を使わずに意味だけを伝えることが出来るんじゃないかと考えています
言語も文化も違う人に、意味を意味のまま伝えることが出来れば、情報伝達の壁を取り払うことが出来ると思います
全ての人が理解しあえる世界の実現が可能かもしれませんね
親から子への知識の継承とか、ゼロ座標に立つことによる悟りとか、スピリチュアルな話をし出すと止まらなくなりそうなので、この辺にしておきます
ではではノシ
最近のコメント