美好的一天。说我有一个问题:
什么是逆反应?
这个问题的答案是:
逆反应是产物反应形成的反应 反应物,反之亦然。
现在,确定用户输入的答案是否正确的最佳方法是什么?我可以想到几种方法,但它们并不实用。
其中一种方式:
string answer = "A reverse reaction is a reaction in which the products react to form reactants and vise versa.";
string input = Console.ReadLine();
if (input.Equals(answer))
{
//answer is correct
}
其他方式:
检查有多少单词匹配并从中获取百分比。如果计算到某个百分比,则答案是正确的。
Number of words: 17
Number of words in input that match answer: 17
Correctness percentage: 100%
另一种方式:
检查输入是否包含某些关键短语。
string input = Console.ReadLine();
string[] keyPhrases = new string[] { "Products react to form reactants" };
foreach (string keyPhrase in keyPhrases)
{
if (!input.Contains(keyPhrase))
{
//answer is incorrect
return;
}
}
答案 0 :(得分:2)
如果您的正确性是语义正确,和,则用户免费来提出他的答案,那么我相信没有简单的方法目前通过编程来做到这一点。
如果您采用第一种方式:
string answer = "A reverse reaction is a reaction in which the products react to form reactants and vise versa.";
string input = Console.ReadLine();
if (input.Equals(answer))
{
//answer is correct
}
用户忘了把最后一个小点“。”,
"A reverse reaction is a reaction in which the products react to form reactants and vise versa"
然后他会错误,但他实际上是正确的
如果你是第二种或第三种方式,那么如果用户只是提到否定,他可能会有很高的匹配率但是完全错误在他的概念中:
"A reverse reaction is NOT a reaction in which the products react to form reactants and vise versa"
截至目前,我认为最好的方法是限制用户输入您提供的多种选择。
最好的项目之一是单选按钮。但您可以根据需要combo box and button
或ListBox which allows single/multiple choices
执行此操作,但底线是相同的:
限制您的用户输入,或者您无法轻易判断他的答案在语义上是对还是错。
它可能需要语法理解方面的专业知识,大量的词典单词,复杂的单词 - 意义关系模型,以及其他优秀的背景语境解释。
话虽如此,
正则表达式无法帮助检查答案语义是否正确 - 它只能帮助您找到模式,您可以使用检查 >如果用户输入语义正确的答案。
...因此
如果它与人工检查一起使用,那么可能你的第二和第三种方式+ Regex会带来一些好处。