如何构建一个人工智能系统,该系统从语料库中学习,并在用户询问与该语料库相关的任何问题时回答用户



我计划构建一个从语料库(文本文件(中学习的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系统将涉及更多。

最新更新