如何构建一个从语料库中学习并回答用户相关问题的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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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