人生の6年間、人工知能の研究に費やしました。 私の研究の結果は、未完成のプロジェクトmarishko.comで表現されました。 私は、特別な訓練を受けた教師を必要とせず、小さな子供として自律的に学習できる人間のコミュニケーションシステムを開発しようとしました。
この記事では、使用するアルゴリズムとアイデアの一部を共有したいと思います。
私の研究では、直観の本質を知性の基礎としてより重視していたので、すぐに言わなければならないので、私の考えは数学的アルゴリズムとはかけ離れています。
情報を保存するには、通常のリレーショナルDBMS(Interbase Firebird)を使用します。
すべてのデータを3つのテーブルに保存します。
-フレーズ
-コミュニケーション
-ダイアログ
ICQを介してロボットを実際の人と通信することでデータを受け取ります。
人を選択する基準:18〜50歳、国:ロシア、言語:ロシア
フレーズ
ユーザーがボットにメッセージを書き込むと、このメッセージは特別なアルゴリズムによってシステムが理解できる形式に縮小されます。つまり、フレーズごとにマスクを作成します。
アルゴリズムは非常に単純です。 私は、人がテキストを読むとき、最初の文字、中間、最後、そして単語の長さでも単語を見ると言う心理学者の経験を利用しています。 これは単語を識別するのに十分です。 そして、彼が単語を認識しなかった場合にのみ、彼はすべての文字を読みます。
したがって、フレーズごとにマスクを作成します。
例:
「こんにちは、お元気ですか?」というフレーズの場合、マスクは「phhivht like phhivhhsh dhhzhschhe」のようになります。
私はすべての句読点も切り取っていることに気づいたと思います。
コミュニケーション
マスクが受信されると、送信されたフレーズと、ボットが前回ユーザーに送信したフレーズとの間に接続が作成されます。 したがって、リンクプレートにエントリが表示されます。
ユーザーに回答を与えるために、ボットは同じ方法でリンクのテーブルを使用します。 答えが見つからない場合。 その後、しばらくするとフレーズが飛び出し、新しいトピックが始まります(原則として、他のフレーズが関連付けられていないフレーズです)
対話
通信が確立されると、ボットが前述のすべてに当てはまらないものに応答するという問題が発生する場合があります。 ダイアログは、この問題を解決するために使用されます。
各ダイアログは保存され、通信のプロセスで、現在のダイアログが保存されたダイアログのどれに似ているかが決定されます。 したがって、回答のフレーズを定義するとき、同様のダイアログに含まれるフレーズが優先されます。
スプリットヘッドシステム
実際には、問題なくボットがチューリングテストに合格できるメカニズムです。
この大胆な声明の裏には少し詐欺があります。 ボットは、最大10人のユーザーと同時に通信できます。 そして、ある時点で、SplitHeadモードがオンになります。
その結果、さまざまなユーザーがボットを介してリンクされます。
つまり、Vasya Ivanovがロボットに書き込みを行うと、ロボットはメッセージを別のランダムユーザー、たとえばSasha Petrovに転送し、Sasha Petrovの回答はボットを介してVasya Ivanovに送信されます。
したがって、2人が互いに通信し、両方が同じボットに書き込みます。
当然、彼らの対話はボットのベースを補充します。
ボットダイアログの例はここにあります:
marishko.gorcer.com/icq_logs.php
ここからプログラムMarishko.icqをダウンロードできます。
marishko.gorcer.com/icq_index.php?page=download
PS:ボットのダイアログの内容を厳密に判断しないようお願いします。ロボットの最も活発な聴衆は衝動的な若者です。
PS2:この作業は私が若く経験の浅いときに行われたため、システムは少し不安定になります
PS3:無料配布のプロジェクトのソース。
stronciyに感謝します 。 サンドボックス内のこの投稿について、彼は私に招待を与えました。