我计划构建一个从语料库(文本文件(中学习的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方法
有没有其他方法可以构建一个系统来准确地完成工作?
PFA 链接到您想要执行的操作。
https://demo.allennlp.org/reading-comprehension https://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系统将涉及更多。