Python:给出一个问题,在数据库中找到一个类似的问题

Python:给出一个问题,在数据库中找到一个类似的问题,python,python-3.x,chatbot,Python,Python 3.x,Chatbot,我正在写一个电报机器人,回答人们关于某个城市的问题。我想编写一段代码,将消息与sqlite数据库表中的问题进行比较 最大的问题是我不能使用difflib.get\u close\u matches,因为问题不是英文的,目前我只处理精确匹配的字符串,例如: if msg.lower() == "what can you do?": send_message("I can answer to any question you have about...", chat_id) 这绝对不是我的

我正在写一个电报机器人,回答人们关于某个城市的问题。我想编写一段代码,将消息与sqlite数据库表中的问题进行比较

最大的问题是我不能使用
difflib.get\u close\u matches
,因为问题不是英文的,目前我只处理精确匹配的字符串,例如:

if msg.lower() == "what can you do?":
    send_message("I can answer to any question you have about...", chat_id)
这绝对不是我的目标

那么,让我们来看看代码:我使用这个函数来获取最后一条消息

URL = "https://api.telegram.org/bot{}/".format(TOKEN)

def get_updates(offset=None):
url = URL + "getUpdates"
if offset:
    url += "?offset={}".format(offset)
js = get_json_from_url(url)
return js
并将返回值赋给变量
updates
,因此我将在
update[“message”][“text”]

现在最困难的部分是,我必须将字符串与db记录进行比较,然后,如果没有任何类似的匹配,我必须找到消息中单词的同义词,并将它们与记录进行重新比较

但这会使程序运行得非常慢,我真的没有时间也不会为每个可能的单词列出同义词列表


有谁能帮我找到一种方法来进行比较,并在数据库中找到一个类似的字符串,从而使程序尽可能快地运行?

我很抱歉地说,可能没有一种简单易行的方法来处理这样的事情:

因为您正在处理一个数据库,所以我假设您可能有很多问题,而使用简单的同义词表是不行的

(NLP) 这是机器学习中一个非常活跃的研究课题,简言之,涉及从文本中自动理解意义。对于您的特定场景。为了获得一些关于它的直觉,并且因为它完全适用于你的问题,我建议从:Song等人(2007年)开始

对于有助于应用程序的最先进的工具,我建议(这是本文的内容,但您可能还希望遵循以下步骤)

其他选择 如果NLP看起来比您的目标更复杂,我建议您查看单词的相似性,例如:


但是,这些工具的性能不如训练有素的NLP系统。

建议创建小型聊天机器人,使用python和aiml将更有效。