Artificial intelligence 分析是/否查询的文本

Artificial intelligence 分析是/否查询的文本,artificial-intelligence,Artificial Intelligence,我正在自动化一个向真人提问的过程(通过短信,但不重要)。这些问题的答案是肯定的/否定的,但该人可能会以多种方式做出回应,例如:当然,现在不会,是的,永远不会,或者以其他方式。我想尝试解析这个文本,并确定它是肯定的还是否定的答案(当然,它可能并不总是正确的) 我认为这样做的想法和概念可能已经存在,因为这似乎是人工智能的一项常见任务,但我不知道它可能被称为什么,所以我找不到关于如何实现它的信息。所以我的问题是,有没有开发出算法来进行这种解析,如果有,我在哪里可以找到更多关于如何实现它们的信息?我在想

我正在自动化一个向真人提问的过程(通过短信,但不重要)。这些问题的答案是肯定的/否定的,但该人可能会以多种方式做出回应,例如:当然,现在不会,是的,永远不会,或者以其他方式。我想尝试解析这个文本,并确定它是肯定的还是否定的答案(当然,它可能并不总是正确的)


我认为这样做的想法和概念可能已经存在,因为这似乎是人工智能的一项常见任务,但我不知道它可能被称为什么,所以我找不到关于如何实现它的信息。所以我的问题是,有没有开发出算法来进行这种解析,如果有,我在哪里可以找到更多关于如何实现它们的信息?

我在想,如果你得到一个你不知道是/否的回答,您可以将答案保存在数据库中,如未知答案和另外两个表中的肯定答案/否定答案,然后在一个小型后端系统中,每次您获得一个新的未知答案时,您都会将其限定为是或否,然后系统会随着时间“了解”它,你将拥有一个非常大且良好的肯定/否定答案数据库。

我在想,如果你得到一个你不知道是/否的答案,你可以将答案保存在一个数据库中,就像未知答案一样,并将另外两个表作为肯定/否定答案,然后在一个小的后端系统中,每次你得到一个新的未知答案时,你都会将其限定为是或否,系统会“了解”这个答案,随着时间的推移,你将拥有一个非常庞大且良好的肯定/否定答案数据库。

这可以看作是一个很好的选择。您可以编写基于规则的模型进行分类,也可以编写基于统计的模型

基于规则的模型将类似于
,如果答案为[“从不”,“此时不”,“不”],那么答案是“不”
。当垃圾邮件过滤器首次问世时,它们包含了许多类似的规则

在这里,基于统计的模型可能更合适,因为编写自己的规则会让人厌烦,而且也不能处理新的案例

为此,您需要标记一个。经过一点预处理(如将所有单词小写、删除标点符号,甚至可能进行一点词干分析),您可以得到如下数据集

0 | never in a million years
0 | never
1 | yes sir
1 | yep
1 | yes yes yeah
0 | no way
现在,您可以在此集合上运行分类算法,如Naive Bayes或Logistic回归(将单词矢量化为二进制(表示单词是否存在)、单词计数(表示术语频率)或tfidf浮点(防止对较长答案和常用单词产生偏误)之后)并学习哪些单词更常属于哪一类

在上述示例中,
yes
与肯定答案(1)密切相关,
never
与否定答案(0)密切相关。您可以使用n-grams,因此
而不是no
将被视为有利于正类的单个标记。这就是所谓的文字袋方法

为了防止拼写错误,可以在预处理步骤中添加类似Aspell的拼写检查器。您也可以使用字符向量化器,因此像
nno
这样的单词将被解释为
nn
no
,您可以捕捉到像
hellyes
这样的错误,您可以相信您的用户会重复拼写错误。如果5个用户对单词
never
出现拼写错误
neve
,则标记
neve
将自动开始计算否定类(如果标记为否定类)

您可以自己编写这些算法(Naive Bayes是可行的,Paul Graham写了一些关于如何使用Bayes定理对垃圾邮件进行分类的文章,几乎每个ML库都有一个关于如何进行分类的教程),或者使用Scikit Learn(多项式NB、SGDClassizer、LinearSVC等)或Vowpal Wabbit等库或程序(逻辑回归、分位数损失等)。

这可以看作是一个问题。您可以编写基于规则的模型进行分类,也可以编写基于统计的模型

基于规则的模型类似于
,如果答案是[“从不”,“现在不”,“不”],那么答案是“不”
。当垃圾邮件过滤器第一次出现时,它们包含了很多类似的规则

在这里,基于统计的模型可能更合适,因为编写自己的规则会让人厌烦,而且也不能处理新的案例

为此,您需要为a添加标签。经过一点预处理(如将所有单词小写、删除标点符号,甚至可能进行一点词干分析),您可以得到如下数据集

0 | never in a million years
0 | never
1 | yes sir
1 | yep
1 | yes yes yeah
0 | no way
现在,您可以在此集合上运行分类算法,如Naive Bayes或Logistic回归(将单词矢量化为二进制(表示单词是否存在)、单词计数(表示术语频率)或tfidf浮点(防止对较长答案和常用单词产生偏误)之后)并学习哪些单词更常属于哪一类

在上面的例子中,
yes
将与肯定答案(1)密切相关,
never
将与否定答案(0)密切相关。您可以使用n-grams,因此
not no
将被视为有利于肯定类的单一标记。这被称为词袋方法

为了防止拼写错误,您可以在预处理步骤中添加类似Aspell的拼写检查器。您也可以使用字符向量器,这样像
nno
这样的单词将被解释为
nn
no
,您可以捕捉到像
hellyes
这样的错误,您可以信任您的用户重复拼写错误。如果有5个用户单词
neve
的拼写错误
neve
,则标记
neve
将自动开始计算否定类(如果标记为否定类)

您可以自己编写这些算法(NaiveBayes是可行的,Paul Graham已经写了一些关于如何使用Bayes定理和几乎所有ML库对垃圾邮件进行分类的文章)