如何获取用于人工智能的MySQL查询?

我这里遇到一个小问题,我试图创建一个能够响应输入文本的人工智能,但问题是

假设我们有一个名为”AI”的数据库,其中包含”answer”和”question”两个列

如果我尝试使用查询询问”Hey why are my mobile explode”

SELECT * FROM AI where question LIKE "%Hey why are my mobile explode%" LIMIT 1

并且我的数据库记录如下…

Question  |   Answer================================Explode   | because you got suck

我的查询没有返回任何结果,但如果我更改记录并将查询改为如下…

查询

SELECT * FROM AI where question LIKE "%explode%" LIMIT 1

数据库

Question                        |   Answer=======================================================Hey why are my mobile Explode   | because you got suck

我得到了返回结果…

所以结论是,”LIKE”操作符读取包含条件文本的值…

VALUE是Question列的值,CONDITION是LIKE条件操作符的条件

Value = ... are my mobile **explode**Condition = **explode**

所以上面的情况是匹配的

但是,是否有可能反转这个功能?我是说,如何读取包含在条件文本中的值…

Value = ... **explode**Condition = "....are my mobile **explode**

提前感谢,希望有人能在这里帮助我..


回答:

如此简单的查询永远不会奏效。你最好使用全文索引,它允许进行这种“自然语言”查询。如果出于某种原因你不能使用全文索引,那么你将不得不进行大量的前处理来构建查询。对于你的第一个示例,它必须是:

SELECT ... WHERE (question LIKE '%hey%') OR (question like '%why%') OR (quetsion LIKE '%...%')

性能将非常糟糕,因为完全通配的子句完全无法使用索引。问题中的单词越多,MySQL必须进行的全表扫描就越多,一切都会花费更长的时间。

相比之下,全文查询版本将是

SELECT ... WHERE MATCH question AGAINST ('Hey why are my mobile explode');

在元层次上,我希望这个问题的答案是“你为什么要搜索这个,而不是去医院治疗烧伤/弹片伤口?”

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注