3

理想的には、Pythonで正規表現を使用します。単純なチャットボットを作成していますが、現在、「Iloveyou」などのフレーズに正しく応答できません(「Youloveme」が返されるはずのときに、文法ハンドラーから「YouloveI」が返されます。 ")。

また、この文法ハンドラーに入れる良いフレーズがあればいいのにと思います。いくつかのテストデータが欲しいです。

そこに他動詞の良いリストがある場合(「使用された上位100」のようなもの)、それと特別な場合には「他動詞+あなた」パターンを使用することが許容される場合があります。

4

2 に答える 2

3

さて、あなたが実装しようとしていることは間違いなく非常に挑戦的ですが、また非常に困難です。

論理

手始めに、最初に文法規則を少し調べます。

基本的な文型:

  • 主語+他動詞+目的語
  • 主語+自動詞

(もちろん、「主語+動詞+間接目的語+直接目的語」の形式などについて話すこともできます(たとえば、私はあなたにボールを与えます)が、これは今のところ複雑になりすぎます...)

明らかに、このスキームは非常に単純ですが、今はそれに固執しましょう。

次に(別の過度に単純化された仮定)、各部分は単一の単語であるということです。

つまり、基本的に次の文スキームがあります。

WORD WORD WORD

これは通常、次のような正規表現を使用して一致させることができます。

([\w]+)\s+([\w]+)\s+([\w]+)?

説明 :

([\w]+)     # first word (=subject)
\s+         # one or more spaces    
([\w]+)     # second word (=verb)
\s+         # one or more spaces
([\w]+)?    # (optional) third word (=object - if the verb is transitive)

さて、明らかに「あなたは私を愛している」ではなく「あなたは私を愛している」のような文を定式化するために、あなたのアルゴリズムはそれを「理解」する必要があります:

  • 文の3番目の部分はオブジェクトの役割を果たします
  • 「私」は人称代名詞であるため(主格の場合にのみ使用されます:「主語として」)、その「対格」(=オブジェクトとして)を使用する必要があります。したがって、この目的のために、たとえば次のような人称代名詞の表も必要になる場合があります。
  • 私-私の-私
  • あなた-あなた-あなた
  • 彼-彼-彼
  • 等...

ほんの少しのアイデア...(純粋に言語学に対する私の熱意からです:-))


データ

あなたが興味を持っているワードリストに関しては、ほんの少しのサンプル:

于 2012-04-06T09:04:58.160 に答える
1

必要なのは構文アナライザー(別名パーサー)です。これは、@ Dr.Kameleonによって説明されているルールベースのシステムによって、または統計的に実行できます。そこには多くの実装があり、そのうちの1つはスタンフォードのものです。これらは一般に、単語の構文上の役割が何であるかを示します(たとえば、件名「あなたはここにいます」、またはオブジェクト「彼女はあなたが好きです」)。その情報を使用してステートメントを質問に変換する方法は、まったく異なる種類のワームです。英語の場合、かなり単純なルールベースのシステムを正常に機能させることができます。

于 2012-04-07T21:46:38.177 に答える