2020泰迪杯C题解题流程

注:本文为赛前所写,仅队内提供大致思路,和实际的解题流程有一定出入,仅供参考,有一些错误,笔者并没有更正(主要是没空),如想深入交流请私信。

1.对留言进行分类

1.1对数据进行分析。

  1. 观察数据集规模,是否有空值,是否重复记录
  2. 留言的长度,最大最小值和极差。可绘制词数直方图,确定padding长度。
  3. 有多少个一级分类,涉及到多少种分类
  4. 未登陆词有哪些,关键是地名

1.2 数据预处理

  1. 整体数据集去重复
  2. 对回复文本去除数字标点符号去停用词,并进行分词处理
  3. 建立词索引词典,将词语id表示
  4. 简单地词频向量化,每条回复用一个词频向量表示 X i X_{i} Xi,一维稀疏向量。
  5. 使用word2vec词向量表示,每个词向量的维数为k,每条回复中有n个词,每条回复用一个矩阵表示 R i R_{i} Ri, R i R_{i} Ri是一个 k × n k \times n k×n的矩阵
  6. 为每一个标签进行量化。或者onehot化

1.3 Baseline模型

使用朴素贝叶斯训练一个多分类模型,输入使用词频向量(经过tf-idf特征提取),使用测试集测试,计算F-score作为baseline
或者SVM,或者多层感知机,在此基础上可以使用组合方法提高准确率。

1.4 CNN神经网络模型

首先使用语料库(笔者做完之后发现使用词向量反而准确率降低了,原因可能是使用的维基百科语料库中的语料和训练数据差异太大,因此可以使用tensorflow 中embedding层自行训练)训练出word2vec模型,把每一个词用向量表示出来。假设用零向量填充,得到一个回复矩阵。
开始使用CNN训练多分类模型,计算F-score。调整参数,词向量的维度、卷积核大小(必须和词向量的维度匹配,只能一个方向移动)、batch_size、卷积层和池化层的层数、激活函数、优化器选择、正则化处理。

2.热点挖掘

2.1问题目标

挖掘在某一时间段内反应特定地点和特定人群的热点问题。因此需要聚类分析。得到的 d d d个聚类结果,要进行主题提取(句干分析?自动还是人工?)。此外,我们还需要建立一个热度评价指标,这可能与:每个事件被反映的频率、被反映的次数、点赞数、反对数有关。
我们已经将每条回复表示为了文档矩阵。如何进行聚类分析?

2.2 数据观察

可以从留言主题中提取出相关地点和人群
不同点在于点赞数和反对数

2.3 K-means聚类

在聚类之前首先需要使用命名体识别,将特定的地点人群识别出来,然后对不同的人群地点单独聚类,也可以先聚类,然后把特定的人群地点挑出来放到一起
方法一:
需要对回复矩阵进行压缩
( w 11 w 12 … w 1 n w 21 w 22 … w 2 n ⋮ ⋱ ⋮ ⋮ w k 1 w k 2 ⋯ w k n ) \begin{gathered} \begin{pmatrix} w_{11} & w_{12} & \ldots & w_{1n}\\ w_{21}& w_{22} & \ldots & w_{2n} \\ \vdots& \ddots&\vdots& \vdots\\ w_{k1}& w_{k2}&\cdots & w_{kn}\end{pmatrix} \end{gathered} w11w21wk1w12w22wk2w1nw2nwkn
要将每条回复压缩成一个一维向量,计算空间距离来聚类。可以计算每个词tf-idf值,作为权重进行横向加权求平均 ,之后,要考虑是否还需要进行标准化处理。应该不用了,他们的尺度是相通的。
方法二
如果我们使用词频向量进行聚类,需要特征提取,PCA降维是个不错的选择,这就需要标准化了。我们可以对比两种方法,观察哪种聚类效果更好。

2.4 LDA主题建模

对LDA还不是特别了解,不知道是否可行。使用吉布斯采样获得文档-主题(热点)-词语的分布,提取主题和对应的词语,是否可以计算出一篇回复最有可能对应的主题,这样对每条回复贴一个标签,对这些标签进行分类汇总,提取出热点。

并不适用,LDA比较适合于长文本的主题发现,留言这种较短的文本主题往往是单一的。

2.5热度评价指标

设每个事件被反映的频率为 f f f、被反映的次数 m m m、点赞数 z z z、反对数 r r r,怎么建立这个指标 H o t Hot Hot呢?
自定义一个模型,言之有理即可

3.答复意见的评价

  • 相似度:文本相似度
  • 完整性:正则匹配特定格式
  • 时效性:意见与回复时间差
    将指标量化分析综合评定

你可能感兴趣的:(笔记,聚类,数据挖掘,数学建模,卷积神经网络,自然语言处理)