ヒューリスティックネットワーク-チャットボットプログラム用のリカレントニューラルネットワークの類似物

この記事では、仮想対話プログラムのリカレントニューラルネットワークに類似したいくつかのプロパティのヒューリスティックネットワークアルゴリズムを紹介します 。 アルゴリズムは、ロシア語の説明辞書を使用して改善されています。 知識ベースの統計情報に基づく新しい回答のジェネレーターがヒューリスティックネットワークに導入されました。



はじめに



大量のデータでリカレントニューラルネットワークをトレーニングする場合、ネットワークの書き換えと質の高いトレーニングの不足、さらに長時間のトレーニングと新しいデータを導入するためのネットワーク変更の複雑さの問題があります[1]。 したがって、チャットボットプログラムでは、類似のリカレントネットワークのプロパティ、特に単語の互換性のプロパティ、および知識ベースからの質問と回答の統計的接続を使用して、ヒューリスティックネットワークを作成することが重要です。 新しいテキストを生成するリカレントニューラルネットワークのプロパティは、別個のヒューリスティックネットワークプロシージャとして実装されます。



多くの場合、ユーザーの入力質問を理解する際、ネットワークは小さな知識ベースに制限されているため、ロシア語の説明辞書を導入して、知識ベースの質問に含まれる可能性のある意味の単語でソースワードを表示することが重要です。



ヒューリスティックネットワークアルゴリズムは、知識ベースのAIMLマークアップを使用して以前に作成されたChatBotプログラムの新しいモードに導入されました[2]。



リカレントニューラルネットワーク



リカレントニューラルネットワークは、出力層のニューロンからの信号が入力層の追加のニューロンに到着する、いわゆる多層パーセプトロンの一種です。 コンテキストニューロン[1、2]。 音声通信をシミュレートするためのリカレントネットワークには、多くの特性があります。



  1. ナレッジベースの質問と回答の統計的つながり、
  2. 言葉の互換性、
  3. 新しいテキストの生成。


大量のデータでリカレントニューラルネットワークをトレーニングすると、書き換えや質の悪いトレーニングの問題がしばしば発生するため、ヒューリスティックの形でリカレントニューラルネットワークの基本的な特性を実装することができます。



ヒューリスティックネットワーク



知識ベースの質問と回答の統計的接続の特性、および知識ベースからユーザー質問への適切な回答の選択は、次のアルゴリズムに基づいて実装できます。



  1. 知識ベースのすべての質問は、単語パターンで示されます
  2. 単語テンプレートを使用した知識ベースの対応する回答。
  3. 各質問と対応する回答は、単語の配列pwordstwordsに分割されます。
  4. 一意の単語間の相関が計算されます。

    質問twordsの単語の配列に単語twordが、回答pwordsの単語の配列にある単語pwordとともに表示される場合、単語twordとpwordの相関関数追加されます1:

    R\左twordpword\右 + = 1。
  5. 新しいユーザーの質問は、単語questionで示されます。
  6. カスタム質問はqwordに分割されます
  7. 2 番目の回答からの単語とユーザーqwordsの質問の単語との相関の最大量を見つけるために、 テンプレートの回答が知識ベースから検索されます。

     mathop max limitsk left[ sumi sumjR lefttwordsk[i]qwords[j] right right] ここで、インデックスkはナレッジベーステンプレートのすべての回答を処理します。iおよびjは、単語配列内の単語のインデックスです。
  8. 頻繁に出会う単語の影響を軽減するために、特定のしきい値porog以下の合計から、最大値の検索を制限できます。


ユーザーの質問への回答を検索するときの単語の互換性プロパティの例を示します。 たとえば、ナレッジベースのAIML構造は次のとおりです。



<category> <pattern>  ?</pattern> <template> <random> <li> </li> </random> </template> </category> <category> <pattern>  </pattern> <template> <random> <li>   </li> </random> </template> </category>
      
      





ユーザーの質問「あなたは女性を愛してますか?」に対する答え「はい、愛しています」につながるはずです。 つまり 「世界」と「女性」という言葉は同じ意味で使用されます。



知識ベースからの単語の互換性を説明するための対応するアルゴリズムは、次の形式で実装できます。



  1. 単語間の内部相関関数が導入されました:

    この単語については、 pwordsの質問と回答の単語配列から、知識ベースの2 番目の要素がptwords配列に結合されます。

    導入された機能

    rk\左ptwords[i]ptwords[j] right= frac betaji ここで、j> i、

    \ beta = \ left \ {\ begin {array} {c} {1、\ begin {array} {ccc} {}&{if}&{i、j \ le g \ begin {array} {ccc} { }&{and}&{i、j \ ge g} \ end {array}} \ end {array}} \\ {0.25、\ begin {array} {ccc} {}&{if}&{\ begin {配列} {ccc} {}&{i \ le g}&{\ begin {array} {ccc} {}&{and}&{j \ ge g} \ end {array}} \ end {array}} \ end {array}} \ end {array} \右。\ beta = \ left \ {\ begin {array} {c} {1、\ begin {array} {ccc} {}&{if}&{i、j \ le g \ begin {array} {ccc} { }&{and}&{i、j \ ge g} \ end {array}} \ end {array}} \\ {0.25、\ begin {array} {ccc} {}&{if}&{\ begin {配列} {ccc} {}&{i \ le g}&{\ begin {array} {ccc} {}&{and}&{j \ ge g} \ end {array}} \ end {array}} \ end {array}} \ end {array} \右。

    gpwords配列の長さ。

    次に、単語間の内部相関の機能 Rin\左twordpword\右 関数の合計として定義 rk最大値として、またはナレッジベースのすべてのカテゴリの平均として。
  2. ユーザーの質問からの単語qwordに対して、機能でそれと相関するすべてのptword単語が選択されます Rin\左qwordptword\右 。 単語間の内部相関の関数の合計の最大値は、知識ベースから係数αを持つユーザー質問への回答の選択に影響します Rin\左qwordptwordk\右 ここで、インデックスkは、質問と知識ベースからの対応する回答のすべてのペアを実行します。


新しいテキスト生成は、次のアルゴリズムを使用して実装できます。



  1. 影響する単語の数kを設定します。
  2. k語を入力 \左\ {i_ {1}、i_ {2}、\ ldots、i_ {k} \右\}\左\ {i_ {1}、i_ {2}、\ ldots、i_ {k} \右\} そしてそれらのために、新しい単語sが最大の合計で検索されます  sumkj=1 frac1kj+1Rin\左sij\右 。 機能 Rin 単語sが単語前の文にあったことを考慮に入れなければならない ij 。 機能 Rin 次のような文の誤算 patterni + "" + templatej + "__End__"、ここで patterni そして templatej 1つのカテゴリから取られ、「__ end__」という単語はトレーニング提案の終わりを象徴しています。
  3. 新しい単語sが見つかった後、 k個の着信単語が単語に置き換えられます \左\ {i_ {2}、\ ldots、i_ {k}、s \右\}\左\ {i_ {2}、\ ldots、i_ {k}、s \右\} ステップ2で新しい単語が検索されます。
  4. 単語「__end__」が見つかるか、単語のシーケンス(タイプ1、2、3、4、5、4、5のシーケンス)の繰り返しが始まるか、必要な単語数dを超えると、新しい単語の検索プロセスが終了します。


新しいテキストを生成するアルゴリズムは、マルコフ連鎖のアルゴリズムに似ています。 ここでの違いは、遷移確率の代わりに単語間の相関関数を使用することと、 k次チェーンの条件付き確率の代わりに相関合計関数を使用することです。



説明辞書の実装



ユーザーの質問に知識ベースにない単語が含まれている場合、次のアルゴリズムに従ってロシア語の説明辞書を使用することが可能になります。



  1. 説明辞書から単語の定義のデータベースを作成します。
  2. 定義により、カスタム質問からすべての単語を展開します。 つまり ユーザーの質問からの各単語の代わりに、定義から単語のセットを取得します。
  3. 知識ベースの質問パターンで見つかったユーザー質問の単語に対応するすべての単語は、100などの係数で評価する必要があります。定義の第1レベルに対応するユーザー質問のすべての単語は、50などの係数で評価する必要があります。
  4. そのような推定値の合計を見つけ、最大値を記録した知識ベースからそのような質問パターンを選択します。
  5. 見つかったパターンの質問に対応するナレッジベースからのテンプレート応答は、ユーザーの質問に対する回答として取得されます。


形態分析装置



形態学的アナライザーを使用して、単語を基本的な形式にし、音声通信をシミュレートするためのすべてのアルゴリズムの品質を向上させることができます。



ソフトウェア実装



チャットボットプログラムは、年齢制限が18歳以上のAndroidアプリケーションとして実装されました。 ヒューリスティックネットワークに基づくいくつかの新しいチャットボットモードは、アプリケーションで使用できます。

形態素解析ツールとして、ロシアのAz.jsでテキストを処理するために無料のJavaScriptライブラリを使用しました。



アプリはhttps://play.google.com/store/apps/details?id=svlab.chatbot2で入手できます



おわりに



チャットボットモードは、リカレントニューラルネットワークの特性を模倣したヒューリスティックネットワークに基づいてプログラムで実装されます。 ヒューリスティックネットワークの利点は、インデックス作成に基づく迅速な学習と、ネットワーク構造に新しい知識を簡単に追加できることです。 アルゴリズムは、知識ベースで表されていない単語に対してロシア語の説明辞書を使用して改善されています。 ChatBotは、PlayストアのAndroidプラットフォームで利用できます。



文学



  1. Oriol Vinyals、Quoc Le A Neural Conversational Model // arXiv preprint arXiv:1506.05869、2015年7月22日
  2. Shovin V.A. ChatBotプログラム-チャットボットまたは仮想対談。 //数学的構造とモデリング。 2016年。4号(40)。 S. 96-101。



All Articles