如何构建一个从语料库中学习并回答用户相关问题的AI系统

我计划构建一个AI系统,该系统从语料库(文本文件)中学习,并需要像聊天机器人一样回答用户的问题,简而言之就是一个没有预定义数据的聊天机器人。

到目前为止,我已经通过网络爬虫获取了一些数据并存储为文本文件,并且我使用了TF-IDF(余弦相似度)方法来使系统回答问题,但准确率仅为中等水平

def response(user_response):    robo_response=''    sent_tokens.append(user_response)    TfidfVec = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english')    tfidf = TfidfVec.fit_transform(sent_tokens)    vals = cosine_similarity(tfidf[-1], tfidf)    idx=vals.argsort()[0][-2]    flat = vals.flatten()    flat.sort()    req_tfidf = flat[-2]    if(req_tfidf==0):            robo_response=robo_response+"cant understand"        return robo_response    else:        robo_response = robo_response+sent_tokens[idx]        return robo_response

我使用的TD-IDF方法

还有其他方法可以构建一个系统来完成这项工作,并且有一定的准确性吗?


回答:

请参考以下链接,了解你想要做的事情。

https://demo.allennlp.org/reading-comprehensionhttps://towardsdatascience.com/elmo-contextual-language-embedding-335de2268604

这些是已经构建好的系统,可以让你实现这个目标。

如果你想从头开始构建类似的东西,需要对处理后的文本进行很多步骤。

Tfidf是一种词袋(BoW)算法,可以帮助你识别意图,但不能识别这些意图之间的关系。通过向量化的tfidf获得的矩阵连同标签只会告诉机器,如果对于某些文本,获得了相似的矩阵,这就是标签。这在分类中很有用,但在聊天机器人响应中却不是这样。

要从聊天机器人中获得响应:-将文本分割成句子。-使用各种技术来获取文本的上下文,目前XLNet提供了最佳结果( https://medium.com/dair-ai/xlnet-outperforms-bert-on-several-nlp-tasks-9ec867bb563b )。这将帮助你针对通过聊天机器人提出的查询制定响应。以上是一些初步步骤,实际的AI系统将涉及更多内容。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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