2017-04-09 2 views
5

私は自然言語のユーザー入力をキャプチャしており、あらかじめ定義された "正しい"バージョンに対してチェックする必要があります。これは些細なことですが、私は英語での収縮の変化をどのように扱うかについては不明です。英語の収縮をプログラム的に処理する方法[Regex、JS、Ruby]

私は文章を期待しているとします。I'm positive you don't know what you're doing.マッチは正確である必要がありますが、ユーザーをただ1つのバリエーションにロックしたくないので、欲求不満になります。

だから、その文のすべてのバリエーションを有効な一致として手動で入力する必要がありますか?そうですね:

"I'm positive you don't know what you're doing." 
"I am positive you don't know what you're doing." 
"I am positive you do not know what you're doing." 
"I am positive you do not know what you are doing." 
"I'm positive you don't know what you are doing." 
... 

などです。もっと複雑な文章を考えれば、これがどのように狂っているのか分かります。

または、これを処理できるプログラム的な方法はありますか? Regex、JS、Ruby、Rails(私が使っているツール)を使っていますか?

ご協力いただきありがとうございます。

+0

は何キー単語やフレーズの選択について - 上記のあなたの例ではので、それは次のようになります* *陽性、わからない**と**やっている** – user2182349

+2

なぜあなたは文をチェックする前に単純な正規表現の置換を実行しないのですか? '\ bdo not \ b' =>' don't'、 '\ bI am \ b' =>' I'm'などのようなもの。 –

+0

[Javascriptのファジィ検索は意味をなさない](http:// stackoverflow .com/questions/23305000/javascript-fuzzy-search-that-makes-sense) – guest271314

答えて

5

多くはありませんEnglish contractions (JSで行うことができる擬似ルビ風もちろん)のように、私は、共有値を使用して正しい文を格納し、同じ値を指すキーとして

"aren't" => :arent 
"are not" => :arent 
etc. 

を各バリエーションを保存であろう。

":im positive you :dont know what :youre doing" 

あなたが入力を受信した場合、その後、特別にマークされ収縮して保存された正しいもの、に対して変換された文をチェックし、その格納された値と一致する鍵を交換してください。

(注意:あなたは、同一の収縮と異なるフレーズに個別に対応するために好むかもしれないいくつかのケースのために、特別な規定を作る)

+0

私はこのアプローチがとても好きです。とても賢いです。私は今私が寝ているので、多分もっと多くのアイデアを得るためにそれをいくつかの時間を与えるつもりですが、私はおそらくあなたの答えを受け入れるつもりです。ありがとう! –

+1

@SanDiagoご意見ありがとうございます。私たちはすべて、さまざまなアイデアや答えから多くを学ぶことができます。いい質問。 –

+1

俗語「s」は、「is」または「has」の縮小としてほとんどすべての英語名詞に付けることができます。 "その犬は美しい目を持っています。" 2番目の例です。また、「John's not here」と比較してください。 「ジョンはここにいません」と。したがって、収縮が簡単に列挙されることはもちろん、あいまいさもないと言うのはかなり正確ではありません。 – rici

関連する問題