hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。 |
人工人格とは人工知能の機能のひとつであるより人らしい会話を目指した延長線上にある人格のことです。
- 会話を通して、人間らしく見せるプログラム。
- 記憶学習とか心を持たせるとかそういう意味の人工知能ではない。
- 人間っぽく見えればいい。
- コンピューター上で人格を持つと認識されるものを持った存在である。
具体的に言えば、会話をしていてもそれがAIだということに気が付かない。それだけ人間のように見えてしまうそういった機械的な人格を表します。
HSPを使ってこのより人らしい人工人格会話ソフトを作っていきたいと思います。
※画像は構想中のものです
参加は自由にしていただいて構いません。アイデアが浮かんだら気軽に提案していただいて結構です。
思いついたアイデアなどあればここに書き込んでください
- テスト -- a? 2008-04-30 (水) 12:53:57
- 一人称http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E4%B8%80%E4%BA%BA%E7%A7%B0%E4%BB%A3%E5%90%8D%E8%A9%9E
「私(わたし)」から「おら」ぐらいまで出十分だと思います。漢字と平仮名とカタカナ全て理解。 -- raisen? 2008-04-30 (水) 19:02:10
- とりあえず、そのくらいまで一人称追加してみたいと思います。とりあえず一度にばーっとやってしまうと混乱してしまうので、トップの画像にあるような残メモリ量を尋ねる過程を作っていく方針です。 -- As
- 現在の状況をみると、キーボードによる文字入力(コマンド入力)によるのAIのようですね。このままやると構文解析だけで処理が膨大になり、肝心のAIの処理部分に到達することなく消滅してしまう恐れがあります。手始めに、多少入力を簡素化したバージョン(コマンド選択)を作ったほうがいいかもしれません。 -- GENKI? 2008-04-30 (水) 20:44:53
- 構文解析は少しずつ増やしていけたらなと思います。分岐が少なくても3文くらいの文章は一応つくれると思いますので、コマンド選択というとアドベンチャーゲームになってしまいそうなので、今は最小限の分岐で取り組む方針です。-- As
- 共通の意思がうまく説明できなかったと思うので、ここで説明してみます。”共通の意思”というのは世間一般的に言う”空気”にあたるものと同一だとおもいます。関わりでもあり、お互いに同じ理解をしてないと勘違いを起こしてしまうかもしれません。そういうことを世間ではKYというようですが、空気が読める人工人格のために”共通の意思”というものを構造に取り入れて見ました。 -- As 2008-05-01 (木) 01:24:18
- ちょっと頭の中を整理したのでメモ代わりに…。 -- GENKI? 2008-05-01 (木) 01:25:04
+ 整理してみた
+ 人工人格 人工人格={ ・会話を通して、人間らしく見せるプログラム。 ・記憶学習とか心を持たせるとかそういう意味の人工知能ではない。 ・人間っぽく見えればいい。 ・コンピューター上で人格を持つと認識されるものを持った存在である。 }
+ 人間 人間={ ・性格をもっている。 ・人格を持っている。 }
+ 達成目標ソフト 達成目標ソフト={ ・人工人格達成目標をクリアする。 ・チャット風コマンド入力方式。 ・機能:明日の天気・メモリ・CPUを教えてくれる。 ・ユーザーはメモリ残量を尋ねるが、感情パラメータの親密度が低いために一度は拒否されてしまうが、「お願いします」と言われたためメモリ残量を教えるまでにあたるプロセス。ならびに発言の実現 }
+ 人工人格達成目標 人工人格達成目標={ ・条件分岐式理解の実現 ・感情レベルの実現 ・条件分岐式意思決定(人工人格側)の実現 }- 感情レベルについて考えてみました。
生理的感情レベルの内容と秩序(ルール遵守)は感情レベルを決定する材料のような気がしますがいかがでしょうか?
+ 感情レベルまとめ 感情レベル={
・人工人格の感情の構成要素を整数値で表したもの
・人工人格の行動決定の材料
・一時的に保持する感情が含まれる。
・人格感情が含まれる。
}
人工人格の感情の構成要素={
・感情的感情レベル
・生理的感情レベル
・社会的感情レベル
}
感情的感情レベル={
・怒り、喜び、悲しみ
・これらを整数値で表したもの。
}
生理的感情レベル={
・眠気、だる気、頭痛度
・これらを整数値で表したもの。
}
社会的感情レベル={
・友情、愛、秩序
・これらを整数値で表したもの。
}
ちなみに、Wikipediaを参考にすると、感情の分類は「喜、怒、哀、楽、愛、悪(憎、嫌、怒りを含む)」というものが多いようで、分類数もおさえてあるようです。 -- GENKI? 2008-05-01 (木) 14:58:46
- 確かにそのような感じです<整理してみた
また、感情レベルというのは処理の中で区別せずに使う予定なので”感情的”なものであれば喜怒哀楽愛悪のほかにも考えてみてください^^ -- As 2008-05-01 (木) 21:10:34- GENKIさんが整理した人工人格の定義を冒頭に挿入させてもらいましたmm -- As 2008-05-02 (金) 23:26:36
- 単語の異なる文章(例えば、メモリ残量いくら?、メモリ残量どのくらいある?)は、文自体は若干違っていても、解釈する意味は同じため、目的による感情レベルの変更という項目で感情レベルの変更を条件分岐式理解と分けることにしました。分ける際に【目的】というものを引数のように扱います。ただの等価比較をしているだけなんですけどね^^; -- As 2008-05-04 (日) 01:25:59
- ”目的による感情レベルの変更”を条件分岐式理解に統合しました。同じ目的を表す言葉でも、異なるニュアンスで文を構成すると感情レベルの受け止められ方が異なるからです。例えば、敬語で話た場合や、喧嘩口調で話した場合などのことを指します。 -- As 2008-05-09 (金) 01:39:46
- いろんな言葉の中から一つ選んで会話、言葉にはポイントがあり、それで相手の機嫌を左右する…ってのはどうですか? -- 急行1分遅れ? 2008-05-18 (日) 20:51:09
- 実際の動きではそうなりますね。言葉といっても、ユーザーが話す言葉、人工人格が話す言葉の二種類のほか、人工人格がユーザーの発言に対してどのように思考するかという心の中の言葉(共通の意思)の3つのどのあたりでポイント(感情レベル)を加算していけばいいのか悩みどころです。現実と照らし合わせて、現実らしい会話の流れになるような感情レベルの変動を実現させたいとおもっています。 -- As 2008-05-19 (月) 03:47:12
- ここまで来ればもうメモリ残量を聞く「だけ」のソースは書けそうですね。 -- axobj? 2008-06-11 (水) 19:44:08
- はじめまして、リョウです。まだ●●才ですが、宜しくお願いします。 -- リョウ? 2008-11-05 (水) 16:41:15
- 面白そうなテーマですね。感情レベルに眠いが入っているのが どこかで、現在の時間の処理が入ると良いかも。 -- つくね? 2008-11-08 (土) 02:00:39
- 記号の扱い(?とか。とか) もあった方が良さそうです。全角の記号の出現確立高そうな予感・・ -- つくね? 2008-11-08 (土) 02:07:55
- 感情を持たせる構想は私も考えてました。インジケーターではなく、喜怒哀楽を円形に当分して上をAIが今どこの感情にあるかをX・Y座標で移動するものです。人間だと相反する感情も持ちますがAIなら単純な方が作り易いかなと思ったので単純な構想ですが・・・・ -- たもつ? 2009-03-09 (月) 13:41:56
- 条件分岐式理解のところなんですけど、自前で単語の解析やるのはハードル高いと思うので、MeCab?を使うと良いと思うのですが、よろしいでしょうか? -- axobj? 2009-08-04 (火) 14:34:14
- ato, -- axobj? 2009-08-06 (木) 19:00:38
- 感情の動きの円形モデルですか。それは非常に興味深い考え方ですね。インジケータを使った方法は頭の中で数値の変化を考えなくてはいけないので円形などの図形としての考え方だと理解しやすいですね。 例えば,喜びにxyが近づくと怒りが減っていくような,そういったことが理解しやすくなりそうですね。 -- As 2009-09-04 (金) 18:52:07
- このシステムは会話を通してAIとコミュニケーションします。人間とAIを同じ土俵に立たせるなら感情レベルゲージは非表示にしていいでしょう。もし人間側に特権を与えるならインジケータやグラフ、数値じゃなく、表情イラストなどを使ったビジュアル表現のほうが直感的に理解できると思います。(どうやって作るかはともかく。)インジケータ等の数値表記は開発者向けのデバッグモードだけにとどめると考えたほうがいいかと。
>喜怒哀楽を円形に当分して上をAIが今どこの感情にあるかをX・Y座標で移動するものです。
ボキャブラマトリックスみたいな感じですね。わかります。 -- GENKI? 2009-09-05 (土) 19:45:43- ちなみに、数値のグラフ表現は、レーダーチャート(レーダーグラフ)が見やすくてよいと思います。慣れてくれば多角形の形だけで雰囲気が分かるようになるかと。 -- GENKI? 2009-09-05 (土) 20:54:40
- もちろんリリース版は感情のところは非表示にします。レーダーって聞くとわくわくしてくるのはなんだろう・・・・。だんだんビジュアルになってくると理解しやすいのでいいですね。もうすこし構想中の画像を改めてみる必要もでてきましたね。 -- As 2009-10-05 (月) 00:58:29
- HSP3.2で、ソフト作っているのですが、なかなかいいアイデアが浮かばないし・・・ チョット上手いこと命令を使いこなせない。 -- ドナルド? 2010-07-13 (火) 21:07:33
- はじめまして!更新止まりつつですねw、とりあえずサンプル的なのを試しに作ってみたいですね、例えば入力した単純な文を解析して、名詞とか動詞とか -- 八百万? 2010-08-11 (水) 21:08:07
- すみません、↑ミスりましたw 自分の考えたサンプルは「入力した単純な文を解析して、名詞とか動詞とかごとに分けて表示する」です、 例 {「今どのくらいメモリ空いてる?」と入力すると「今 どのくらい メモリ 空いて いる ?」とか表示される} というものです、こういうのを作ってみるだけでもだいぶ進むと思うのですが -- 八百? 2010-08-11 (水) 21:12:56
- instr・・・と思ったけどうまい使い方が思いつかないなぁ・・・ -- 2010-09-07 (火) 02:48:34
- 人工人格作りが後半になると、言葉を教える、とかも必要になりそうですね -- 八百? 2010-09-20 (月) 19:31:14
- そうすると、あらかじめ人工人格には理解するのに十分な言葉を知っている(その数分の変数的なのが用意されている)、ユーザーが知らない言葉を発言する、人工人格に分かる言葉で説明する、人工人格はその言葉を理解するとともにそれも変数の一つとして追加する、という流れですかね -- 八百? 2010-09-20 (月) 19:34:39
- おもしろそうだ、ちょいと時間余ってるんで書いてみるか -- 2010-10-02 (土) 18:02:17
- ゆっくりボイスとか使って勝手に話し掛けて来るとか面白そうだな…まぁそろそろ完成させないとな -- 2010-11-01 (月) 22:31:26
ここでは、ある程度の達成目標を決めたいと思います。
達成したら”達成”に「○」をお願いします。
No. | 達成 | 目標 |
1 | 構造の明確な決定(下記の構造を具体的に決めていきたいと思います) | |
2 | 条件分岐式理解の実現(今のところ最小限の分岐で構いません) | |
3 | 感情レベルの実現(残量メモリを尋ねるプロセスにおいて、必要な感情レベルとして”新密度”(仮)を使用予定) | |
4 | 条件分岐式意思決定(人工人格側)の実現(今のところ最小限の分岐で構いません) | |
5 | ユーザーはメモリ残量を尋ねるが、感情パラメータの親密度が低いために一度は拒否されてしまうが、「お願いします」と言われたためメモリ残量を教えるまでにあたるプロセス。ならびに発言の実現 | |
6 | 人工人格によるHDD残量の返答の実現 | |
7 | 人工人格による天気予報 | |
8 | 人工人格は自主的に、条件分岐式理解でメモリ残量を調べる。例として、メモリが多かった場合は、「メモリかなりありますねー。」と発言。「増設したからね」とユーザーが答えた場合、「そうなんですか。」と答える | |
9 | 人工人格は「ユーザーさんの趣味はなんですか?」と質問する。「趣味は○○ですよ」とユーザーは答える。「○○とはなんですか?」と人工人格は答える。「○○とは〜〜〜〜〜ですよ。」とユーザーが答える。その際に、ユーザーの趣味をデータに記録しておく。 |
現在のところ追加する予定のある要素リストです。 他にもあれば自由に追加してください。追加を悩まれる場合はアイデアBOXに書き込みください
- 文字の扱い
- 漢字、ひらがな、英数字を利用します。
- カタカナは全てひらがなとして処理します。分岐要素をカタカナにしてもひらがなとして扱います。
- 英数字を大文字、またはマルチバイトで入力したとしても、分岐要素も含め全て小文字の1バイトとして扱います。
- 要素における箇条書きのインデントは分岐を表します。
- 方言歓迎
- 感情レベルの扱い
- 整数、または実数を使用します
- 成長すること前提に考え、あえてステータス値の上限は定めません
- 感情ステータスはマイナス値になることはありません
- 感情ステータスの値を決める場合はその価値を時間に置き換えて考えてください。例えば、たくさんの種類の怒りがあるように、その怒りが収まるまでに何分かかるか、逆に楽しいことがあったらその楽しさは何分継続するか、自分の価値観で構わないのでその時間単位(分)を感情レベルの変化値として考えてください。また、継続時間がすぎたら減少したり0になるわけではありません。
- 一つの意味に複数の単語が存在する場合は、一つの単語で複数の単語の意味を為すグループとして扱う。その場合スクリプトではグループとして定義されていない場合通常の文字列として扱うが、スクリプトの初期でグループとして定義された単語だった場合グループとして”|”で区切られたそれぞれの単語に対し比較元の単語にどれかひとつ該当するものがあったら処理を行う。Wiki上の書式では定義する単語名(単語1、 単語2、 単語3、 ...)というように記述する。また、2回目以降同じグループを使う必要がある場合は、単語名(省略)と記述する。
怒り, 悲しみ, 楽しみ(喜び)(内部的(自己的)), 恐怖, 羞恥, 憎しみ, いらいら
眠気, だる気, 寒い, 暑い, 驚き, 暇
友情、愛、嫌悪, 爽快, 集中, 脱力, 緊張, 服従, 支配, 信用
;
ユーザーからの会話の解析と人工人格とユーザーがお互いに理解している共通の意思(以下の構造を参照)に伴う目的を定義する。目的は、人工人格がユーザーから言われたことに対し、自発的に”こうしなけれならない”と思う要素です。(逆に考えれば、ユーザーからは”そうしてほしい”と思われているわけであり、この二つの意思が意味するものには共通なところがあるので共通の意思としている→以下構造参照)また、文字列として一文で定義する。人称名(例:ユーザー、私etc)は使わない。(例:メモリ残量を教えなければいけない)
共通の意思の目的を元に分岐を開始します。条件を伴う箇条書きの場合は、”条件{XXXX}”と記入後次以降の段落でその条件が真なら”真:XXXX”偽なら”偽:XXXX”と記述します。続けて条件を記述する場合はそのまま”真:条件”とします。人工人格が発言する言葉を指定する場合は、”発言「XXXX」”とします。また、発言後に続けて発言を行うこともできます。その場合、二つの発言は連結されてひとつの文として送信されます。発言の記述は人工人格の人格が現れる最も重要なものなので、勝手に変更させていただく場合があります。
※倒置法の場合、文は二つに区切り処理します。「たのしかったよ今日は」の場合、「たのしかったよ」という文のみで処理を行います。しかし、普段の生活の中でこの言葉を言われたとしてもこの言葉による感情の変化はほとんど見られないため共通の意思に発言の記録をとどめておきながらも、スルーします。次の「今日は」にあたる箇所では通常通り分岐処理を行いますが、分岐しなければいけない箇所で次なる文節がありません。その場合、共通の意思に記録されている「たのしかったよ」という発言をつなぎ合わせ「今日はたのしかったよ」という文章で処理します。
共通の意思 ├自己の意思 │ └言葉 │ └条件分岐式理解共通の意思 │ ├目的の決定 │ └感情レベル │ ├感情レベルの決定 │ │ ├標準感情レベル │ │ ├一時的に保持する感情 │ │ └人格感情 │ └人工人格 └人工人格の意思 └条件分岐式意思決定
人工人格とユーザーとの間でお互いに理解している意思や目的や会話の方向性
人工人格が知ることのできない自分だけの意思
人工人格に向けて送信される日本語文
条件分岐式理解とは、特に他から引用した言葉ではありませんが人工人格用の日本語文の解析です。例えば、「彼はとても足が速い」という文の場合はまず繰り返し命令において言葉が存在するかどうかを調べます。「彼は」という単語は存在しないので「彼」で区切ることにします。
ここで条件分岐を行います。彼の次にどのような言葉が来るかで分岐を行います。「を」、「は」、「が」、「に」、「と」、など様々な分岐が考えられますが、その量は国語辞典の量と比べたらあまり多くはないと思います。
この場合「彼」の次にくる言葉は「は」であるため、次に「は」の分岐に移ります。このときにはすでに「彼」という言葉が時を表していないことが明白であり、単語として独立した言葉になるので主語だということがわかります。
「は」の次の分岐として推測されるのは、形容詞、目的語、動詞、副詞になります。これは国語辞典ぐらいの膨大な分岐になってしまいますがそれはそれでいいのです。ここではじめて人工人格に理解するための要素が生まれるのです。
例えば、「彼は寒い」という言葉であれば「寒い」という意味を予め人工人格に定義していれば、人工人格はその定義に従って「寒い」における次なる意味を見出すことができます。つまり、寒いのであれば部屋の暖かくするように促したり、運動するように促したりすることである。「寒い」という言葉を例に述べたが、この言葉の場合は次なる意味は国語辞典より多くはない。人間的な行動の多くは典型的なもので決まっている。
話を戻して、「彼は足が速い」という文であるが、次の分岐に「足」という言葉がきている。この言葉は形容詞でも動詞でもない、つまりは目的語になります。足という言葉は「足の速さ」と同一語として扱います。
次の分岐は「が」、動詞、副詞、が推測されます。この場合「が」であるため、「が」の分岐に移ります。
「が」の分岐には、形容詞、動詞があります。「速い」は形容詞ですので、ここでようやく意味を持つようになります。「速い」という言葉には、機械的に主語、または目的語を対象として比較する条件式を設けます。例えば、彼の足の速さが遅いともともと記録していた場合は「足が速い」における「速い」の速度を定義し、彼の足の速さと「足が速い人」の速度を比較し、世間一般的にいう足が速い人よりも彼の足が遅かった場合は、人工人格に「彼は嘘つき」という理解を与えます。さらには、嘘を疲れたことに対する人工人格の感情レベルを下げるということもあります。
この感情レベルは人工人格にとってユーザーに向けて発言する言葉を選ぶための分岐材料になります。
条件分岐式理解から、根本となるユーザーが何を言いたいのかという目的を設定します。「命令」や「願望」、「質問」など大雑把なもので、条件分岐式理解からわかった主語や目的語がそのまま共通の意思として定義されます。
感情レベルというのは、怒り、喜び、悲しみ、といった感情的なものや、 眠気、だる気、頭痛度などといった生理的なものや友情、愛、秩序など社会的なものがあり、それぞれ整数値量で表されています。このそれぞれの感情レベルにて人工人格がユーザーに対して発する言葉を選ぶための分岐の材料となります。
条件分岐式理解によって感情レベルが決定されます。
条件分岐式理解で設定された感情レベルです。
「時間が忘れさせてくれる」という言葉があるように、人工人格も人間らしく高ぶった感情を時間とともに忘れます。その意味を込めた感情レベル郡です。
時間がたっても忘れることのない感情レベルです。この感情レベルは条件分岐式理解で1%の割合で加算または減算されます。
人工人格の最終的な感情レベルです。これは標準感情レベル、一時的に保持する感情、人格感情の平均値で算出されます。
ユーザーが知ることのできない人工人格だけの意思
この意思決定でユーザーに向けて発せられる文を決定します。最初に分岐するために使用される材料は共通の意思です。
共通の意思には既に目的が定義されています。「メモリ残量はどのくらいですか?」とユーザーから言われた場合の共通意思は人工人格に「質問」されていることで、目的は「メモリ残量」を「調べる」ことです。
そこで最初に分岐するのに推測される材料は「質問に答える」、「命令に答える」、「自分のことについて教える」など、国語辞典以上にありますが、共通の意思には「質問」があるので、「質問に答える」に分岐します。次に推測されるのが「天気」、「HDDの残量」「メモリ残量」など ユーザーが聞きそうなものです。この場合「メモリ残量」がマッチしているので、ユーザーに向けて「メモリ残量は〜MB」という言葉に決定されます。
更にここから分岐します。人工人格感情レベルを利用し、不安度が40以上なら不安要素への分岐に移りたいとおもいます。 さらに不安分岐で尊敬レベルが10以下なら「なんじゃね?」マイナスなら、今までのメモリ残量を決定を全て取り消し、「知るかそんなの!」と知っているにも関わらず言わないようにします笑。また、尊敬レベルが40以上で「だと思う」さらに尊敬レベルが60以上なら「だと思いますよ」のように分岐していきます。 そして「メモリ残量は〜だと思いますよ」という言葉に決定され、ユーザーに向けて送信されるわけです。
ここで新たに共通の意思には「人工人格がメモリ残量を教えてあげた」というものが付加されます。「ありがとう」といわれたら、過去の共通意志に「人工人格がメモリ残量を教えてあげた」があった場合、「どういたしまして」という様になるわけです。
構造を読んでからではないとこの単語の意味がわからないかもしれません