C# でソフトウェア エンジニアリング コースのチャット ボットを作成しています。
ウィキペディアの記事をコーパスとして使用し、マルコフ連鎖を使用してテキストを生成しています。ユーザーの入力に基づいて、(少なくともわずかに)インテリジェントな方法でユーザーの入力に応答するようにしたいのですが、その方法がわかりません。
私の現在の考えでは、ユーザーの入力からキーワードを抽出して、それらを使用して文の生成をガイドするというものです。しかし、マルコフ特性のために、キーワードは文の最初の単語でなければならず、ばかげているように見えるかもしれません。同様に、オーダー チェーンの場合、毎回ユーザーからキーワードを正確n
に抽出する必要があります。 n
ジェネレーターのデータは辞書であり、キーは単語のリストであり、値は単語のリストであり、キー内の単語の後に単語が出現する頻度に応じた重みが組み合わされています。以下のようなので:
{[単語1 , 単語2 , ..., 単語n ]: [(単語, 重み), (単語, 重み), ...]}
これはコマンド ライン テスト プログラムで動作しn
ますが、生成されるテキストの各ビットにワード シードを提供しているだけです。
n
入力の最初/最後の単語やn
キーワードなどでチェーンをシードするのではなく、ユーザーが使用した近くの単語である単語をチェーンに優先させる方法があることを願っています。それを行う方法はありますか?