知了 | 基于NLP的智能问答推荐系统

作者简介

苗贝贝    百度高级研发工程师


负责百度智能运维客服平台ChatOps,在时序数据异常检测、文本模式识别、相似度网络等方向也有广泛的实践经验。

干货概览

通常,客服系统主要有两种应答模式:机器人自动应答和人工应答。当用户提出问题后,客服系统首先启动机器人自动应答模式,如果用户认为机器人推荐的结果不准确,会进一步请求进入人工问答模式,由专门的客服人员跟进答疑。

据相关机构统计,国内客服的市场规模超过千亿,然而,目前机器人应答模式使用率并不高,人工客服仍然是企业使用率最高的应答模式,其原因主要包括两点:一方面,机器人客服系统实现准确推荐比较困难:由于自然语言本身是模糊的、问题表述方式多样、问题与答案的词汇可能存在差异等原因,导致实现准确推荐比较困难。例如:域名转出、域名怎么转出、域名转出流程等问题其实都在咨询域名转出操作;又例如,百度云虚拟主机的英文缩写为BCH,两种表述都可能被用户在提问时使用。另一方面,为机器人客服系统准备知识库比较困难。首先,为问题准备答案有比较高的技术门槛,只有具备一定经验的客服人员才能胜任。其次,客服人员一般是根据最近用户的提问来扩充整理知识库的。在这个过程中,很难知道某一问题是否在知识库中已经存在,容易导致问题的重复整理。重复整理问题不但浪费人力,还可能导致相同目标的问题在知识库中的答案不一致,降低客服质量。

基于上述背景,本文研究了一种基于自然语言理解的客服QA推荐系统,该系统目前已应用在百度云客服团队,在提升百度云用户体验、减轻客服压力等方面取得了不错的成效。

现有技术及其缺点

现有客服系统通常将一个Q(问题)A(答案)对看作一个文档,将整个知识库看作一个文档库,然后利用搜索引擎的关键词匹配技术为用户推荐相似问题以及答案。 

该技术主要有以下缺点:

  • 关键词匹配技术不擅长处理用户在问题表述上的差异,无法将用户问题与知识库中的QA对进行有效匹配,导致推荐结果不理想。

  • 在整理知识库时,无法将目标相同的问题聚集起来统一整理,从而导致

    • 整理工作量大,耗时长;

    • 答案只针对单个问题,使得内容局限,质量较低;

    • 相似问题分别整理,答案很容易不一致,容易导致用户困惑。

问题分析

我们发现,问题中的词汇与答案的词汇之间常常存在比较大的差异,例如:

<

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NLP智能问答系统是一种基于自然语言处理技术的应用,可以根据用户提出的问题,从大量的文本数据中找到相关的答案并返回给用户。下面是一个简单的NLP智能问答系统Python代码示例: ```python import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize, sent_tokenize from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity # 文本数据 corpus = [ "NLP是自然语言处理的缩写,是研究如何使计算机能够理解和处理人类语言的一门学科。", "NLP可以应用于机器翻译、感分析、文本分类等多个领域。", "Python是一种常用的编程语言,广泛应用于数据分析、机器学习和自然语言处理等领域。" ] # 预处理文本数据 stop_words = set(stopwords.words('english')) def preprocess_text(text): tokens = word_tokenize(text.lower()) tokens = [token for token in tokens if token.isalpha()] tokens = [token for token in tokens if token not in stop_words] return ' '.join(tokens) corpus = [preprocess_text(text) for text in corpus] # 构建TF-IDF向量表示 vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform(corpus) # 用户提问 question = "什么是NLP?" # 预处理用户提问 question = preprocess_text(question) # 计算用户提问与文本数据的相似度 question_vector = vectorizer.transform([question]) similarity_scores = cosine_similarity(question_vector, tfidf_matrix) # 找到最相关的答案 most_similar_index = similarity_scores.argmax() answer = corpus[most_similar_index] print("答案:", answer) # 相关问题 related_questions = [ "NLP可以应用于哪些领域?", "Python在自然语言处理中的作用是什么?" ] print("

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值