易向东(队长):难愚科技数据挖掘工程师,4 年以上数据挖掘经验,负责或参与过 IT 技术牛人推荐系统,主题推荐系统,情感分析,产品销售数据挖掘与业务支持。 王凯:难愚科技数据挖掘工程师,重庆邮电大学计算机科学与技术硕士,期待使用人工智能技术创造更美好的生活。 作品介绍:一款基于聊天 Bot 的游戏 AI 系统,能与真实用户畅通的聊天;能向真实用户学习技能;能与队友沟通并调整行为。 技术介绍:
技术架构 该版本的 Web Chat App 主要实现了一对一聊天和 web 接口,使用的数据是游戏玩家一对一的聊天数据,大概有三十万对左右。采用的分析与建模技术如下: 数据预处理:对话数据中含有道具符号,表情符号,各种标点符号,某些用户的习惯用语符号等,在该版本中均去除,分词工具使用了 jieba 分词。 词向量:由于数据量较少,得到的词向量质量可能不高,但还是尝试了使用 gensim 中的 word2vec 模块,具体使用了层次法和负抽样的 CBOW 和 Skip-gram 方法。并将词向量运用于下述的聚类及分类模型中。 句子向量:将一句话转成句子向量尝试了两种方法:一是计算分词结果对应的词向量的均值作为句子向量;二是使用 svd 降维 tfidf 矩阵后的结果作为句子向量。句子向量用于语义聚类及分类模型。 聚类:将对话数据中具有相似语义的句子聚到一个类,本版本中主要使用 k-means 进行聚类,j2直播,尝试了两种距离度量标准:欧氏距离和余弦距离。聚类的目的主要是对于一个输入,不必扫描整个对话库,只需扫描与其相似的对话类簇来寻找回复。 相似性:根据输入的词向量或句子向量,寻找与其最相似的回复。相似性度量标准尝试使用了欧氏距离和余弦相似度。 二分类模型:Dual Encoder LSTM network 为一个二分类的 RNN 模型,模型输入为一对对话数据的词向量,分别按序输入两个 LSTM 网络,两个网络的输出与权重矩阵的乘积,作为最后 sigmoid 层的输入。训练集从对话数据构造,正例为真实的对话数据,负例为一句话及随机选择另一句话作为其回复。但是从训练结果来,效果较差。可能原因数据量太少,训练过拟合;也可能是训练集负样本构造不合理。 单分类模型:考虑到使用二分类模型时,需要从对话数据中构造包含正负样本的训练集,6)中负样本的构造不甚合理,人工构造也比较复杂,于是尝试使用单分类模型——One-Class SVM 模型。该模型的训练数据为真实的对话数据,不需要类别标记。 预测结果:当前版本的预测结果使用了聚类、相似性和单分类模型的融合结果。随着数据量的积累以及外部数据的获取,接下来会尝试使用一些深度学习模型来做。 7. 葡萄科技 (责任编辑:本港台直播) |