2016-12-26 4 views
1

代名詞の代用に関するアドバイスはありますか?私はPHPのstr_replace配列で置き換えられるform%keywords%を使用して、これをユーザに簡単にしたいと思います。しかし、それは英語では難しいです。代語代理

例:

$input='%his% house is %his%, and you can visit %him% there.'; 
$from[]='%his%';$from[]='%him%'; 
if($gender=='male'){ 
    $to[]='his';$to[]='him'; 
} 
else{ 
    to[]='hers';$to[]='her'; 
} 
echo str_replace($from, $to, $input); 

出力:

彼の家は彼であり、あなたがそこに< < = OK、彼を訪問することができます!

彼女の家は彼女であり、あなたは彼女をそこに訪れることができます< < == SUCKS !!

例2:

$input='%her% house is %hers%, and you can visit %her% there.'; 
$from[]='%hers%';$from[]='%her%'; 
if($gender=='male'){ 
    $to[]='his';$to[]='him'; 
} 
else{ 
    to[]='hers';$to[]='her'; 
} 
echo str_replace($from, $to, $input); 

出力:

彼を家に彼であり、あなたがそこに< < =吸う彼を訪問することができます!

彼女の家は彼女のもので、彼女をそこに訪れることができます< < == OK !!

時々私は英語が嫌いです。 これを管理する方法はありますか?

FYI、this answerは、同じ不良出力を生成します。

答えて

0

さらに検討すると、私はすべてのケースを満たし、ユーザーが理解することが簡単です。 私は、彼らが>彼/彼女

  • それら>彼/彼女の
  • その>彼/彼女の
  • 彼ら>彼/彼女の
    • キーワード3人目の複数を使用します

      JerryとMarkus AOを通してこれを考えるのに感謝します。

    2

    あなたのプレースホルダーは、名詞、genitive、possessiveなどの代名詞の使用も記録する必要があります。英語がまだ変項を持っている数少ない場所の1つは、代名詞に 'who'と 'whom'逃げ道。

    残念なことに、英語の話者は、毎日のスピーチ(「私と私」が常に切り替えられています)でもルールを正しく取得することができません。(少なくとも米国では)実際には教えられません。異なるケースの正式な名前。 (「ジェネリック」?)。だから、ユーザーにとって簡単な方法を考え出すことはかなり困難になるだろう。

    私は$first['possessive'] = 'my'を可能にするために、プレースホルダとして​​をお勧めしますし、可能な置換おそらく$third['male']['possessive'] = 'his'$third['female']['possessive'] = 'her'たいと思います。

    +0

    ありがとう...私はこれが最も実用的な解決策だと思っていますが、私のユーザベースのPITAの何かです。私は、大部分の状況で満足できる曖昧な%%と%her%と、必要に応じてユーザーが入力できるオプションとして%possessive%と%object%を保持すると思います。幸いにも、私は3人目の単数のエントリだけを提供しています。私は、Google AIが彼女の文脈評価を行う方法を理解するのを待つでしょう。それは私の知性よりも大きい。 –

    +0

    JerryとMarkus AOのおかげで、同様の回答と解決策を提供しました。私は1つの答えを「チェック」することができるように見えるので、私はコインを裏返し、Jerry'sをチェックしました。それは2番目の答えなので、同じ質問の混乱した混乱した魂のほうが、より多くのインスピレーションを得て、両方の回答者から知性を得ることができるように願っています。 –

    +0

    確かに、コインは常に公正です。それは、周囲からの適切な屈折を差し引いて試す基本的なコンテクストチェッカーを思いつくために、非常に難しい(すなわち、「2日間のフル・オン・デイをやって」)べきではありません。非常に雨の日にタグ付けされています。それまで。^_^ –

    1

    あなたは、可能な語尾変化の全体の多くをマッピングし、一致するプレースホルダを使用する必要があります。でも、一人で三人称代名詞で、(すなわちに対処するためのいくつかの重複があります。この場合、 English Personal Pronouns を対象と従属所有の間、等。)。すべてのケース/フォームをカバーするサンプルのアレイの場合:%obj%%poss%として

    $pronouns['3rd']['male'] = [ 
        'subj' => 'he', 
        'obj' => 'him', 
        'poss' => 'his', 
        'poss_ind' => 'his', 
        'refl' => 'himself', 
    ]; 
    
    $pronouns['3rd']['female'] = [ 
        'subj' => 'she', 
        'obj' => 'her', 
        'poss' => 'her', 
        'poss_ind' => 'hers', 
        'refl' => 'herself', 
    ]; 
    

    次にマークアッププレースホルダ、または%object%として完全な形式などで、あなたは、むしろそれを持っていると思います。または%3rd:obj%など、テンプレート内のすべての人に対処する必要がある場合など。しかし、オーバーラップを考えれば、これを正しいものにしたいなら、ここではすべての文法を回避する方法はありません。

    従属/独立所有権代名詞などの違いをユーザーに教えてもらうのが好きですが、そうする以外には、文脈から適切な変項を差し引く意味解析アルゴリズムを用意する必要があります。あなたは、独立した独立した所有物などを示す適切なアイコンをクリックしてタグを追加するインターフェイスを作成することができます:)

    +0

    この回答とジェリーの答えは、簡単な彼/彼女のタイプのキーワードで問題が簡単には解決されないという私の最初の考えをより多くの証拠で述べています。ジェリーの答えに対する私の返答を見てください。私は助けと私の計画を認めています。 –