コニュニケーションへの衝動としての笑い

コンピュータないしはロボット(単にAIとよぼう)は、人に対するコミュニケーション衝動のようなものを持たなければならないと、何回か書いてきた。人に伝えたいことがあってこそ、それをどのように伝えるのかが問題になるのだ。AIは、衝動に基づいて、言葉を選ぶ、構成する。言葉を編集する。外的な刺激に対して、独自の、創造的な衝動を構成する。それをなんとか言語的に相手に伝えようとするわけだ。

衝動は、AIの側に、それを必要とする内的な環境・状態・理由があるから形成される。それをまた明確にしていくことはとても高度の情報処理、知能的活動などが必要になる。

しかし、「笑い」あるいは「人を笑わせる」というのは、極めて単純な動機、衝動となりうる。単純というのは、簡単という意味ではない。明確という意味に近い。

人としての相手を笑わせるためのコミュニケーションである。どのような言葉を選び、どのように言葉を構成し、どのように編集し、どのように文章をつなげれば、人を笑わせることができるのか。これがとてもわかりやすい衝動なのだ。

そういう衝動をAIの側に持たせることは不可能ではないだろう。可能性はある。その衝動から、言葉を創造するのだ。

経済学が想定する人間と評価関数のこと


Warning: fopen(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_e62b31da5d52902774efd1e241538653.gif): failed to open stream: Permission denied in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 123

Warning: fputs() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 124

Warning: fclose() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 126

Warning: getimagesize(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_e62b31da5d52902774efd1e241538653.gif): failed to open stream: No such file or directory in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 129

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 47

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 49

Warning: fopen(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_4c614360da93c0a041b22e537de151eb.gif): failed to open stream: Permission denied in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 123

Warning: fputs() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 124

Warning: fclose() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 126

Warning: getimagesize(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_4c614360da93c0a041b22e537de151eb.gif): failed to open stream: No such file or directory in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 129

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 47

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 49

Warning: fopen(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_9dd4e461268c8034f5c8564e155c67a6.gif): failed to open stream: Permission denied in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 123

Warning: fputs() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 124

Warning: fclose() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 126

Warning: getimagesize(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_9dd4e461268c8034f5c8564e155c67a6.gif): failed to open stream: No such file or directory in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 129

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 47

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 49

Warning: fopen(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_05e42209d67fe1eb15a055e9d3b3770e.gif): failed to open stream: Permission denied in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 123

Warning: fputs() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 124

Warning: fclose() expects parameter 1 to be resource, bool given in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 126

Warning: getimagesize(/data/htdocs/ibot/wpibot//wp-content/plugins/latex/cache/tex_05e42209d67fe1eb15a055e9d3b3770e.gif): failed to open stream: No such file or directory in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 129

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 47

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/htdocs/ibot/wpibot/wp-content/plugins/latex/latex.php on line 49

コンピュータが自然言語を構成することを想定すると、コンピュータが目的とか意欲とか意図を持たなければならないとつくづく思う。単純に、意欲という言葉で表そう。いろいろなレベルの意欲というのがある。何かを話そうというか、話し言葉を構成しようとするときには、これを相手に伝えたいという意欲が大事な働きをするはずだ。それは、どのように表現するのかを少し考えてみる。

何を隠そう、私が生業としているのは、経済学である。博士号も、経済学でとっている。大学は工学部で、情報を専門としていた。共通しているのは、数学をツールとするところか。まあ、いろいろあった。

経済学は理論的には、人間を一個の経済評価をする機械のように考えている。多次元の効用関数を持っているのだ。その効用関数で見て、より評価値の高いものを求めて「選択」をする機械が経済学が見る人間なのだ。

が評価関数としての効用関数である。という変数の値によって評価値が変わる。

これが経済学の想定する人間の「意欲」の源泉なのである。ロボットの場合、は、外界からの反応(たとえば、センサー値だったり)、何らかの内部状態の値だったりするのだろう。

言葉を構成するときにも、このような評価関数を持っていなければならないのではないかと思ったのだ。

 

日本語というコンピュータ言語とコンピュータの意思ないしは意欲について

そういう意味では、自分がやりたいのは、日本語というコンピュータ言語を開発したいということなのかもしれない。

通常コンピュータ言語は、人間がある目的、意図を実現するために組み立てるものである。が、その日本語というコンピュータ言語はコンピュータ自身がその意図を実現するために組み上げるものなのだ。もちろん、文法をコンピュータが理解していなければならない。

ただ、そこで、一番かけているのは、コンピュータの意図や意識なのかもしれない。

人は、何か、他者に伝えたいという意思や意図を持つから、それをなんとか言葉で表現しようとする。日本語で無口な人間は、英語でも無口なように。表現したいという意欲や意図がなかったら、言葉は出てこない。

コンピュータがそうした意欲や意図を持つとはどういうことなのだろうかと思う。まず、それから始めるのが妥当なのだろう。

日本語の文法について

少し考え違いをしていたのかもしれないと思う。

ある日本語の文章の意味を捉えようとするとき、何かしら文法が役に立つべきだと考えていた。確かに言葉や文章は文法によって構成されているので、その考えに間違いはないだろう。私たちは、何かを喋ろうとするときに、あるいは文章を書くときに、その言葉が文法に適ったものになっているはずだと思っている。

ただ以外に、喋った後で、文章を書いた後で、この言葉、語順では意味が伝わらない、あるいは誤解されたりすると思って、言い換えたり、文章を書きなおしたりする。聞いたり、読んだりするときも同じだ。

ふと思ったのは、言葉の意味を理解するときの文法の役割と意味を伝えようとするときの文法の役割は違うのではないだろうかということだ。

我々は、文章が、言葉が与えられるとその意味を文法に沿って理解していると思う。それは正しいのだが、そのとき、文法の役割はそれほど決定的ではない。英語を話したり聞いたりするときのことを考えれば良い。自分の英語は、文法的に結構間違っているが、ちゃんと伝わっていると思うときが多い。相手も、単語をいくつか聞き取ると、それだけで意味が伝わったと判断しているのだ。

文章の意味を理解しようとするときは、文法も大事だが、状況やイメージもとても大事なのだ。

逆に、意味やイメージを伝える時には、なるべく単純な文法で、必要な単語を構成し、文章、言葉を組み立てれば良い。意味やイメージの伝え方は、多様に存在する。その中で、最も基本的で単純なものを選んでも、伝えるという基本的な機能においては遜色はないのだと思う。

日本語wikipediaをprologの二分木で処理するパフォーマンス

現在、日本語wikipediaの50%を二分木化したが、そのデータを使って、およそのパフォーマンスがわかってきた。この段階でのファイルサイズは、3.68Gバイト。つまり、もし全てのwikipedia本文を二分木化すると7Gバイトになるということだ。

これをswi-prologで読み込ませると(ルールファイルも読み込ませたが、こちらはサイズはとても小さい)、読み込みに約30分かかる。これは、前にも予想した通りだ。そうすると、swi-prologの実行プログラムのメモリ占有量が15Gバイトくらいになる。これは確かに大きい。私のMac Proは64ギガ積んでいるので、それから見ると余裕がまだあるのだが、大きいことは間違いない。

それで、例えば、「ロボット」という語を「は」という助詞付きで検索させると、次のような感じの結果を303行出力する。途中省略している。

1 ?- left(ロボット,は).
wiki_1_line_3385_2: ロボットは/いわゆる脳を持た関わらないにもずまるで/生きているかのように行動する//
wiki_1_line_28713_0: ロボットはそれまでのリアルロボットアニメのデザインとは一線を画した/斬新な/ものであった/
wiki_2_line_62217_1: ロボットはボートに4体の演奏人形が乗った/もので宮廷のパーティで池に浮かべて/音楽を演奏したと言われている/
4の演奏人形が乗った/もので宮廷のパーティで池に浮かべて/音楽を演奏したと言われている/
wiki_3_line_31429_2: ロボットは胸部から放つ/ビームのシグナルフラッシュ//
wiki_3_line_44126_0: ロボットは独自に/考案した/ものであると説明していた/
wiki_3_line_69544_0: ロボットは鉄神/てつじんと呼ばれサイズの大きい/順に/G~Aクラスの等級が付けられている/
G~Aの等級が付けられている/
・・・・・・
・・・・・・
・・・・・・
・・・・・・
wiki_508_line_38121_0: ロボットは補高部を取り除いた/構成となっている/
wiki_510_line_87051_1: ロボットはアッセイプレートを移動させたりサンプルおよび試薬を添加/混合/インキュベーションをしたりして最終的に検出のための場所に動かす/ことをする//
wiki_517_line_78404_1: ロボットはスーパー戦隊シリーズとしてはパワーレンジャーも含めても初の試みとなる//
wiki_526_line_43826_0: ロボットは2体/いて/青が太郎/赤が花子という/名前がつけられている/
2/いて/青が太郎/赤が花子という/名前がつけられている/
wiki_532_line_38273_2: ロボットは据え置き型が多かったがFetchは障害物などを避けながら自律的に移動できる/特徴がある//
wiki_532_line_38273_4: ロボットは長さが約60cm/7自由度を持ち/6kgまでの商品をピックアップ/可能//
7自由を持ち/6kgまでの商品をピックアップ/可能//
wiki_539_line_25554_0: ロボットは人間の腕に似た/働きをする/メカニカルアームの一種であり通常はプログラミング可能である//
wiki_539_line_25556_1: ロボットは溶接や組み立て中の部品の回転や設置などのいろいろな/タスクを行う//
wiki_539_line_25567_0: ロボットは使われてきた/

この303行を出力するのは約1分で、1秒あたり5行出力していることになり、検索は、超高速だ。

読み込んだ日本語wikipediaの二分木をswi-prologのqsave_programで保存する。保存は、数分しか狩らなかったと思う。ここだけは計っていない。何しろ、短時間で保存できたのだ。保存した結果のバイナリファイルは、2.5Gバイトだった。

これは、実行形式になっているので、そのまま(swi-prologを開始することなく)実行できる。コマンドを打って、prologのプロンプトが出るまで、40秒しかかからなかった!!超早い。巨大なデータも、一旦、バイナリ形式(swi-prologの内部表現形式)に変換して保存すると、超高速で実行可能な状況になるのだ。

十分実用範囲だ。

原点を確認する

春休みに入って時間も十分あったので、色々回り道をしてしまった。講義で、雑談に入ったら元に戻らないということがよくあるが、それと同じようなことが起きそうだった。

それで、改めて、何をやろうとしていたのかを確認しようと思った。

まず、12月の記事「短文の要約のアイデア」である。この記事の要点を再掲すると次のようになる。

「私が目標とするところからして、今、芸ロボットの到達点は50%くらいだと思っている。もし、短文要約が大きな問題なく、人と同じくらいのレベルでできるようになれば、この到達点は70%くらいまでいくだろう。・・・・ではどうすれば良いのか。一つ頭に浮かんでいるのが、要約対象が含む語の主要なものが含まれている、より短い文章の用例を探すことだ。ただ、全く同じ語については、あるかもしれないが、探すのが大変すぎる。・・・・そこで、言葉をグループ化する。例えば、りんごとバナナは、果物というグループに属するので、「デザートには〇〇が出た」という文章の〇〇には、等しく使える、置き換えられる。・・・・適用可能な言葉は、ある種の階層性を持っているのである。・・・・このグループ化、階層性を表現するために、類語辞典を使うことができる。類語辞典のコード番号を用いて、日本語ウィキペディアの全文章を用例化する。」

短文要約については、役に立ちそうな研究が極端に少なく、複数文章のよう役とは違って自然言語処理の高度な実践が必要になる。

そして次に、1月の記事「prologと自然言語解析」である。要点は次のようなものである。

「wikipediaのデータも、すべて、「論理的な言い換え」、「極端に複雑なトートロジー」である。これを表現するのにふさわしい言語は、論理型の言語だと思った。そして、prologに至った。・・・・wikipediaの 本文データのほとんどを、prologの宣言とルールに変換できないかというのが、今、考えていることの中心点である。」

この二つは似ているが、道は異なっている。第一のものは、単文要約という具体的な目的に沿って、手順も、用例を捉え、それを類語によって一般的にフォーム化するというところまで、具体的になっている。一方、第二の道は、知識をどう表現するかを課題にしている。コンセプトを語るのが目的になっている。

今、wikipediaデータがprologの宣言文となっている段階なので、それはある意味、どちらに向かうこともできるベースを作っているとも言える。

どちらにしても、prologに変換されたwikipediaのデータは膨大で、おそらく、全て完成して、swiprologに組み込めたとしても、組み込み自体に1時間かかるというものになるだろう。そして、クエリにもある程度時間がかかることが考えられ、その状況でどう実用化させるのかは不透明だ。

接続詞とprolog化

「芸人」の定義の文書でもでてきた接続詞について、もう少し調べることがあると思った。

「私はりんごまたはみかんが好きだ」の構文解析結果は次のようになる。両方好きなのか、どちらかが好きなのかはっきりわからない曖昧な文章だが、そこは問題にせずに「または」がどうなるかを見る。

* 0 3D 0/1 -2.400531
私	名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 1/1 0.754827
りんご	名詞,一般,*,*,*,*,りんご,リンゴ,リンゴ
または	接続詞,*,*,*,*,*,または,マタハ,マタワ
* 2 3D 0/1 -2.400531
みかん	名詞,一般,*,*,*,*,みかん,ミカン,ミカン
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
* 3 -1D 0/1 0.000000
好き	名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ
だ	助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
EOS

こうなると、「が」をルートにすると、次のようにprolog化する。

conjunction1(
    node(が,
        node(は,
            私,
            node(または,
               りんご,
               みかん
            )
        ),
        %% 次のnodeの代わりに単に「好きだ」としてもいい
        node(だ,
            好き,
            nil
        )
    )
).

接続詞「または」が、助詞と同じような使われ方になる。また、右端の「好きだ」については助動詞「だ」を独立させて、上記のように"node"にしたが、それ自体を一つのatomとして扱っても良い。どちらでもあまり知識化という点では大した問題ではないのだ。

ただし、これにはもう一つのバージョンがありうる。prologではなく、次の図を見ていただきたい。

(1)が先に述べたものだが、(2)の場合もありうるのである。しかしこちらは、独立した「私はりんご」というフレーズに知識的内容がない上に、「または」が持っている並列作用が消えてしまって、りんごとみかんが切り離されてしまっている。

つまり、こうした接続詞は、演算で言えば掛け算のように足し算などから比べて高い優先順位で処理しなければならなくなるということである。ただし、こうした優先度が高くても、左右どちらかの項が、演算でいう、括弧に入った状態だと、そちらの中を先に処理するということがでて切るので、そのあたりの見極めがどうなるかが難しい。

また、この文章を「私はりんごかみかんが好きだ」という、「または」を「か」に置き換えてもほとんど同じ意味になる。この場合の「か」は、並立助詞といって、接続詞とほぼ同じ機能を持つ。ただ、cabochaは形態素解析で「か」が並立助詞として明確化せず品詞2で「副助詞/並立助詞/終助詞」と出してきて、そのどれかだよ、みたいな書き方しかしないので、困ったものだ。文中に出てくるこうした「か」は、並立助詞を疑う必要がある。

接続詞の優先性が保留される例として、「今日は大学に行く、または映画に行く」を解析する。構文解析結果は次のようになる。

* 0 5D 0/1 -1.000291
今日	名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 0/1 2.454284
大学	名詞,一般,*,*,*,*,大学,ダイガク,ダイガク
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
* 2 5D 0/0 -1.000291
行く	動詞,自立,*,*,五段・カ行促音便,基本形,行く,イク,イク
、	記号,読点,*,*,*,*,、,、,、
* 3 5D 0/0 -1.000291
または	接続詞,*,*,*,*,*,でなければ,デナケレバ,デナケレバ
* 4 5D 0/1 -1.000291
映画	名詞,一般,*,*,*,*,映画,エイガ,エイガ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
* 5 -1D 0/0 0.000000
行く	動詞,自立,*,*,五段・カ行促音便,基本形,行く,イク,イク
EOS

係り受け解析は、ほとんど失敗しているようにも見える。頼りにならない、困った、がまたそれは後で考える。

二分技の図を見てみよう。

優先性をただ尊重すると、「いく、でなければ、映画」になるが、ほとんど意味を持たない関係性であるから、図のように「大学に行く」というノードと「映画に行く」というノードを並立させることが、この「でなければ」の機能なのである。どうやってこれを読み取るかが問題である。

二つのノードが一つのノードからぶら下がっている構造は、今まで出てこなかった。なぜか。一つの句の中にある助詞なり助動詞は、同じくの中に名詞化同士が必ず存在したからだ。ところが、cabochaの出力を見てもわかるように、この場合の接続詞の句の中には、名詞も動詞もない。だから、前のフレーズまでもと、後のフレーズを自分の中に取り込むことができるのである。

prolog化すると次のようになる。

conjunction2(
    node(は,
        node(または,
            node(に,
                大学,
                行く
            ),
            node(に,
                映画,
                行く
            )
        ),
        今日
    )
).

「または」ノードのの中に二つの子ノードが含まれていることがわかるだろう。

このように見ると、接続詞というのがとても重要な役割を果たすことがわかるのだ。

集めたツイート数が5000万を超えた

去年の12月から間を開けながらボツボツと集めたツイートが今日の時点で、55,227,803ツイート、ファイルサイズにして738Mbになった。プロセス1個で集めている。プロセスを増やしても、ツイッターアプリ経由で捉えられる(ツイッター社がサンプルで配信する)ツイートは同じものであるので無駄なのだ。地道に集めるしかない。プロセス増やしても、たくさん集まった気になるだけで中身は、単なる水ぶくれになる。プロセスは1個しかダメなのだ。

でも、まあ、ほぼ1年動かしているので、季節による言葉の方よりはだいぶなくなっていると思うので、ここらあたりで締めようと思う。ただ、ツイートの取得はずっと続けていくつもりだ。

1億を目指している。キリがいいので。

当面やりたいのは、ツイッターで使われている単語の頻度を分析することだ。

日本語wikipediaにおける助詞・助動詞の使用頻度

先のいくつかの記事で示しているように、ロボットが知識的文章を短く語る時に、削除した語を繋ぐ助詞をAI的に選択させようとしている。(体言1:名詞・動詞)+(助詞1:助詞・助動詞)+(体言2:名詞・動詞)+(助詞2:助詞・助動詞)の語の並びの中で、体言1、体言2、助詞2が与えられた時に適切な、助詞1を選択させたい。これができれば、うまく、文章を短くできるだろうということである。

そこで、この並びを、日本語wikipediaの前文から拾い出して、それを元に、ディープラーニング用の学習データを作ろうということである。

4語対は、6千万個取れて、語は、word2vecのウェイトベクトルであらわすのだが、そのベクトルを取れる語は、さらに半分以下になってしまう。また、助詞、助動詞部分のパーターンがとてつもなく大きくなってしまう。「の」とか「を」などはたくさんあるが、全体で1回しか現れないようなものも拾ってしまう。これは、広い方のアルゴリズムにも依存するのだが。

そこで、いったいどのような助詞、助動詞が、どのような頻度で現れているのかを調べてみた。

まず、助詞2(ニューラルネットの入力になる)は次のようになっている。

の 	4848543
を 	3418017
に 	3153274
が 	2271523
は 	1676994
と 	1359190
で 	1134953
た 	833487
な 	515517
から 	481586
や 	449712
も 	403445
て 	391692
である 	384000
として 	321609
ている 	278220
には 	264654
では 	242007
ていた 	141653
によって 	117531
であり 	109701
により 	109549
であった 	107166
による 	101919
へ 	97715
でも 	97698
との 	95020
という 	95008
まで 	94623
への 	88007
にも 	87645
ない 	80116
での 	77605
たが 	71719
だった 	71462
など 	69269
ており 	69104
だ 	68336
ず 	64151
などの 	62250
より 	56385
とは 	53537
において 	50758
たと 	47488
からの 	46761
における 	45079
について 	38801
ば 	34365
たり 	33421
に対して 	32896
なかった 	32558
はと 	31786
としては 	31599
か 	31034
に対する 	30519
であると 	30483
としての 	30440
うと 	30412
とも 	29750
とともに 	29742
ていたが 	29645
だが 	29500
などを 	28746
までの 	28607
ながら 	27353
と共に 	26439
へと 	25588
に関する 	25518
だと 	25209
よりも 	24233
であるが 	24219
などが 	23941
ではなく 	23687
については 	23225
であったが 	21177
ているが 	20375
にて 	20046
てきた 	19284
でいる 	19168
からは 	19166
ても 	18992
ていない 	18033
などで 	17049
に対し 	16993
といった 	16725
だったが 	16552
をと 	16238
ていく 	15419
などに 	15401
ていると 	15107
てしまう 	14659
までに 	14412
にと 	14395
においては 	13755
でいた 	13566
ずに 	12898
のみ 	12697
なく 	12433
たものの 	12417
にかけて 	12292

明らかに、代表的助詞型を圧倒している。だから、全部を対象にすることはない。だいたい、上位128個くらいの使い方がわかればそれでいいのではないかと思う。入力に関しては次のようになっている。

の 	6087401
は 	2794515
に 	2311801
を 	1850357
が 	1667993
で 	1144968
と 	1039936
た 	1026311
な 	563759
や 	531865
から 	515033
て 	502233
には 	461876
では 	405320
も 	340662
である 	297177
として 	239221
ている 	200314
という 	145218
であり 	141251
ていた 	140480
との 	135622
により 	135543
による 	124273
への 	116794
での 	114556
たが 	110351
によって 	100663
まで 	99795
などの 	99002
ており 	98666
など 	95691
でも 	91841
ず 	91712
とは 	87425
であった 	78465
ない 	76015
にも 	73529
より 	69404
だ 	67224
において 	65830
からの 	63813
における 	59617
だった 	59331
ば 	53503
へ 	50134
としての 	44902
に対する 	40913
に対して 	40079
だが 	39554
としては 	38818
に関する 	37624
について 	37003
ていたが 	36863
までの 	35317
とともに 	33629
からは 	33043
ながら 	32942
たり 	31465
であるが 	31366
については 	30835
と共に 	30434
か 	28826
はと 	28675
ではなく 	27939
なかった 	27507
といった 	26896
などを 	25960
に対し 	25781
であったが 	25642
よりも 	24764
においては 	24509
ているが 	24095
ても 	22715
にかけて 	22410
にて 	22061
とも 	20988
だったが 	20078
てきた 	18660
までは 	15710
はの 	15630
などで 	15530
たものの 	15429
などが 	15169
うと 	14569
へと 	14314
までに 	14160
にとって 	13547
ていない 	13388
たという 	13324
でいる 	12949
ずに 	12844
についての 	12823
のの 	12695
でいた 	12154
ので 	12077
ほど 	11709
のみ 	11541
であると 	11315
だと 	11167
はという 	11122
がと 	11042
をと 	11024
ていく 	10883
てしまう 	10794
などに 	10719
においても 	10605
にと 	10454
を通じて 	10373
たと 	9804
だけでなく 	9448
ての 	9116
しか 	9065
にの 	9027
によっては 	8952
かの 	8682
であるという 	8620
に関しては 	8216
てしまった 	8172
ほどの 	8126
ていて 	8058
はなく 	8000
からも 	7909
ては 	7779
てくる 	7631
てから 	7518
にという 	7329
つつ 	7309

上位グループの順序は微妙に変わっている。助詞の位置が影響しているのだ。が、上位グループのメンバーはあまり変わらない。

助詞推定AIの改訂(1)

ロボットが知識データを言い換える時に、助詞を適切なものに切り替える必要があり、前後の体言や助詞からそれを推計するシステムを作ったと、先の記事で書いた。そのシステムを、いざ、即興漫才システムに組み込もうとした時に、いくつか問題が起こって、最初のデータから作り直すことにした。

まず、助詞だけにして助動詞を対象から外していたのを、加える必要がある。名詞や動詞が連続する場合、1語として扱えるようにする。助詞、助動詞も連続して現れる可能性があるので、それも対応する必要があった。

データ作成は、まず、日本語wikipediaから、元データを作成する。基本的に、文章の中にある、

体言1(動詞、名詞) → 助詞2(助動詞も)→ 体言3→ 助詞3(助動詞も)

という4つの語の流れを拾ってくる。例えば、次のようなものである。

肥満::は::一般的::に
一般的::に::正常::な
正常::な::状態::に
状態::に::比べ::て
比べ::て::体重::が
体脂肪::が::過剰::に
過剰::に::蓄積し::た
蓄積し::た::状況::を

ある生存中::の::当事者同士::が
当事者同士::が::有効::に
有効::に::成立し::た
成立し::た::婚姻::を
婚姻::を::婚姻後::に
婚姻後::に::生じ::た
生じ::た::事情::を
事情::を::理由::として
理由::として::将来::に
将来::に::向かっ::て
向かっ::て::解消すること::を

ペットボトル::は::合成樹脂::の
合成樹脂::の::一種::である
一種::である::ポリエチレンテレフタラート::を
ポリエチレンテレフタラート::を::材料::として

パンダ::は::ネコ目::に
ネコ目::に::属するジャイアントパンダ::と
属するジャイアントパンダ::と::レッサーパンダ::の
レッサーパンダ::の::2種::に対する
2種::に対する::概念上::の
概念上::の::総称::である

この助詞1を体言1、体言2、助詞2から推計しようというのである。後者をword2vecのベクトルデータを用いるなどして入力データに変換して、出力が助詞1のいずれかに推計する。

上記の4語のデータを、日本語wikipediaデータについて、すべてやる。日本語wikipediaデータは、word2vecの時に使用下処理済みデータを用いる。

24スレッドをフル稼働させるプログラムにしたら、10分程度で、全データを処理終えて、4つの語の組み合わせを、63,600,830個拾い出してきた。6千万個以上である。すごい。データは、2ギガくらいのファイルに保存んした。