2

C# でソフトウェア エンジニアリング コースのチャット ボットを作成しています。

ウィキペディアの記事をコーパスとして使用し、マルコフ連鎖を使用してテキストを生成しています。ユーザーの入力に基づいて、(少なくともわずかに)インテリジェントな方法でユーザーの入力に応答するようにしたいのですが、その方法がわかりません。

私の現在の考えでは、ユーザーの入力からキーワードを抽出して、それらを使用して文の生成をガイドするというものです。しかし、マルコフ特性のために、キーワードは文の最初の単語でなければならず、ばかげているように見えるかもしれません。同様に、オーダー チェーンの場合、毎回ユーザーからキーワードを正確nに抽出する必要があります。 n

ジェネレーターのデータは辞書であり、キーは単語のリストであり、値は単語のリストであり、キー内の単語の後に単語が出現する頻度に応じた重みが組み合わされています。以下のようなので:

{[単語1 , 単語2 , ..., 単語n ]: [(単語, 重み), (単語, 重み), ...]}

これはコマンド ライン テスト プログラムで動作しnますが、生成されるテキストの各ビットにワード シードを提供しているだけです。

n入力の最初/最後の単語やnキーワードなどでチェーンをシードするのではなく、ユーザーが使用した近くの単語である単語をチェーンに優先させる方法があることを願っています。それを行う方法はありますか?

4

1 に答える 1

2

チャットをよりスマートにする 1 つの方法は、ユーザーの入力からトピックを識別することです。マルコフ脳もさまざまなトピックで調整されていると仮定します。次に、答えを作成するために、以下の辞書を参照します。

{([単語1、単語2、...、単語n]、トピック): [(単語、重み)、(単語、重み)、...]}

トピックを見つけるには、WikipediaMinerから始めます。たとえば、以下はwikify、文に対して apiによって検出されたトピックとそれに対応する重みです。

統計はとても難しいです。初心者向けの確率論のチュートリアルはありますか?

[{'id': 23542, 'title': 'Probability theory', 'weight': 0.9257584778725553},
 {'id': 30746, 'title': 'Theory', 'weight': 0.7408577501980528},
 {'id': 22934, 'title': 'Probability', 'weight': 0.7089442931022307},
 {'id': 26685, 'title': 'Statistics', 'weight': 0.7024251356953044}]

おそらくそれらの特定されたキーワードも種として扱うのが良いでしょう。しかし、質問への回答はそれほど単純ではありません。このマルコフベースの文生成には、質問を理解する能力がまったくありません。できることは、関連するコンテンツを提供することだけです。ちょうど私の2セント。

于 2012-11-06T20:44:41.037 に答える