一、项目背景
1.1 什么是意图识别
意图识别,就是从一个句子中抽取它所表达的意图。举个例子,到了南航的官网,一个人可能有查机票、退机票、订座位等不同意图。
所以意图识别是多分类问题。输入为文字,输出为某个特定的意图。这就类似于情感分析。
1.2 文本处理技术
对于文本分类问题来讲,核心是文本处理。把文本转换成特征向量之后,就可以通过分类模型来训练了。分类模型有SVM,神经网络等等。一般情况下,我们都会尝试多个然后选择其中最好的。
三、项目目标
给定一段文字,然后识别出文字所表达的意图。
如:
项目流程:
四、加载数据
使用的数据集是SMP2018中文人机对话技术评测
CodaLab Worksheetsworksheets.codalab.org五、文本预处理
5.1 将label映射为数字index
5.2 使用分词工具对query进行切分
5.3 读取停用词表, 并对分词后结果进行过滤
5.4 统计词频,并过滤低频词
六、特征工程
6.1 计算tf-idf
6.2 转换成词向量word2vec
加载word embedding。 词嵌入是自然语言处理中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。
可能存在不在pretrained 的单词, 可以使用numpy 随机生成相同维度的向量。一个句子会有多个单词, 对于模型输入会不一致,可以对一个句子的所有词向量求平均值。
七、构建模型与模型评估
分别使用tfidf, word2vec 建立SVM模型, 并对比二者结果。
可以看到,使用embeding特征建立线性SVM模型的效果更好一些。