San*_*ago 6 javascript ruby regex algorithm ruby-on-rails
我正在捕获自然语言用户输入,我需要根据预定义的"正确"版本进行检查.这是微不足道的,但我不确定如何处理英语中收缩的变化.
假设我期待这句话I'm positive you don't know what you're doing.匹配需要准确,但我不想将用户锁定到一个变体中,因为这会让人感到沮丧.
那么,我应该手动输入该句子的每个可能的变体作为有效匹配吗?像这样:
"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."
...
Run Code Online (Sandbox Code Playgroud)
等等,想想更复杂的句子,你可以看到它变得多么令人发狂.
或者,有没有一种程序化的方式我可以处理这个?使用Regex,JS,Ruby或Rails(我正在使用的工具)?
任何帮助表示感谢,谢谢.
没有那么多的英语收缩.我会将每个变体存储为指向相同值的键,例如(伪Ruby-esque但当然可以用JS完成)
"aren't" => :arent
"are not" => :arent
etc.
Run Code Online (Sandbox Code Playgroud)
然后使用共享值存储正确的句子.
":im positive you :dont know what :youre doing"
Run Code Online (Sandbox Code Playgroud)
当您收到输入时,将匹配的键替换为其存储的值,然后检查转换后的句子与正确的句子,并与特殊标记的收缩一起存储.
(注意:对于少数情况,您可能希望单独回答具有相同收缩的不同短语,请做出特殊规定.)