2021 泰迪杯 C 题

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 泰迪杯 C 题相关的知识,希望对你有一定的参考价值。

2021 泰迪杯数据+代码


本人专挑数据挖掘、机器学习和 NLP 类型的题目做,有兴趣也可以逛逛我的数据挖掘竞赛专栏

本人不会回访,不互关,不互吹,以及谢绝诸如此类事

赛题官网:https://www.tipdm.org/

思路

https://blog.csdn.net/weixin_42141390/article/details/116422841

返回目录

第一问

我理解的第一题,热词词云.xlsx 指的是每一个景区而言。以景区为例,A01 20 个热门词,A02 20 个热门词,等等。

所以,这里仅以景区中的 A01 为例,做出 A01 的词云。

条件随机场分词

首先,使用 SigHan05 的开源数据集 MSR 训练一个条件随机场分词模型,下面摘录 MSR 的部分语料库,如下所示:

“ 人们 常 说 生活 是 一 部 教科书 , 而 血 与 火 的 战争 更 是 不可多得 的 教科书 , 她 确实 是 名副其实 的 ‘ 我 的 大学 ’ 。
“ 心 静 渐 知 春 似 海 , 花 深 每 觉 影 生 香 。
“ 吃 屎 的 东西 , 连 一 捆 麦 也 铡 不 动 呀 ?
cdots
“ 征 而 未 用 的 耕地 和 有 收益 的 土地 , 不准 荒芜 。
“ 这 首先 是 个 民族 问题 , 民族 的 感情 问题 。
’ 我 扔 了 两颗 手榴弹 , 他 一下子 出 溜 下去 。
cdots
“ 这个 案子 从 始 至今 我们 都 没有 跟 法官 接触 过 , 也 没有 跟 原告 、 被告 接触 过 。
“ 你 只有 把 事情 做好 , 大伙 才 服 你 。
“ 那阵子 , 条件 虽 艰苦 , 可 大家 热情 高着 呢 , 什么 活 都 抢 着 干 , 谁 都 争 着 多 作 贡献 。
“ 哎呀 , 怎么 也 不 来 告诉 我 一 声 ?
“ 种菜 , 也 有 烦恼 , 那 是 累 的 时候 ; 另外 , 大 棚 菜 在 降价 。

并对附件“景区评论”中的每一天评论内容(仅以 A01 为例),进行分词。以第一条为例:

是亲子游的绝佳场所,门票就是有点贵,不过可以接受,爷爷奶奶不放心小朋友也跟上来了,当天我们十点多就到了,错过了节假日,人也还是多,不过错峰出行我们一天是把动物园逛完了,两种路线都逛完了,早上我们先坐的缆车,缆车人多,排了半小时队,小火车是把步行区转完了去坐的,到了下午四点半刚好小火车到站就下雨了,地铁站到男北门都有接驳车,很方便的,总之这次还算满意,就是有些动物表演没有看到,只看到了大象表演

进行分词后,可得:

[是, 亲子, 游, 的, 绝佳, 场所, ,, 门票, 就, 是, 有点, 贵, ,, 不过, 可以, 接受, ,, 爷爷, 奶奶, 不, 放心, 小朋友, 也, 跟, 上来, 了, ,, 当天, 我们, 十点, 多, 就, 到, 了, ,, 错过, 了, 节假日, ,, 人, 也, 还是, 多, ,, 不过, 错峰, 出行, 我们, 一天, 是, 把, 动物园, 逛, 完, 了, ,, 两种, 路线, 都, 逛, 完, 了, ,, 早上, 我们, 先, 坐, 的, 缆车, ,, 缆车, 人, 多, ,, 排, 了, 半小时, 队, ,, 小, 火车, 是, 把, 步行, 区, 转, 完, 了, 去, 坐, 的, ,, 到, 了, 下午四点半, 刚, 好, 小, 火车, 到站, 就, 下雨, 了, ,, 地铁, 站, 到, 男, 北门, 都, 有, 接驳, 车, ,, 很, 方便, 的, ,, 总之, 这次, 还, 算, 满意, ,, 就, 是, 有些, 动物, 表演, 没有, 看到, ,, 只, 看到, 了, 大象, 表演]

返回目录

停用词过滤

因为,热门词不应该是 “我”、“你” 一些常见的代词,或者是“是”、“即便如此” 这样的意义不大的停用词。当然,也不能是“有点”、“一些” 这样的修饰副词,所以,这里将上述种种归为停用词,并添加到停用词字典中。

然后,用 DAT(双数组字典树)存储停用词词典,以双向匹配的方法,对分词中的所有停用词进行过滤,以第一条为例,过滤后可得:

[‘亲子’, ‘游’, ‘绝佳’, ‘场所’, ‘门票’, ‘贵’, ‘接受’, ‘爷爷’, ‘奶奶’, ‘放心’, ‘小朋友’, ‘上来’, ‘当天’, ‘十点’, ‘错过’, ‘节假日’, ‘错峰’, ‘出行’, ‘一天’, ‘动物园’, ‘逛’, ‘完’, ‘两种’, ‘路线’, ‘逛’, ‘完’, ‘早上’, ‘先’, ‘坐’, ‘缆车’, ‘缆车’, ‘排’, ‘半小时’, ‘队’, ‘火车’, ‘步行’, ‘区’, ‘转’, ‘完’, ‘坐’, ‘下午四点半’, ‘刚’, ‘火车’, ‘到站’, ‘下雨’, ‘地铁’, ‘站’, ‘北门’, ‘接驳’, ‘车’, ‘方便’, ‘算’, ‘满意’, ‘动物’, ‘表演’, ‘没有’, ‘看到’, ‘看到’, ‘大象’, ‘表演’]

停用词词典长这样:


不只
不外乎不若
不论
不过
不问
为着

乃至

返回目录

热词判断

何谓热词?

我觉得词分三种:

  1. 高频词:这可以由词频求出。但不一定是热词,比如“你”、“我” 这种,虽然它们大多被过滤,但不排除还有一些类似的,跟主题无关的词。
  2. 特色词:这可以由各条评论内容的 TF-IDF 求出,但特色词可能不具备高频词的特点,而且只能反映某条评论的中心内容。并且,若以 TF-IDF 来判断,反而会忽略主题词。比如评论以下棋为题,则下棋并非特色词。
  3. 关键词:关键词以信息量衡量。关键词通俗地解释,是指那些左右搭配较多的词,一般反映了某个文档的核心内容,是一个“概要”。

所以,综上,要作为热词,首先要成为关键词。然后,结合词频(高频词)和 TF-IDF(特色词),来判断一个词是否属于热词。

我的算法是这样的,若某词不属于关键词(可用 TextRank 算法,求每一个词的 BM25),则直接过滤。也即,将那些关键词提取出来,然后,计算热度:
h = T F + T F I D F h = TF + TF-IDF h=TF+TFIDF
再根据热度,提取出前 20 个热词即可,结果如下:

返回目录

第二问

第二问看起来更像是一个回归问题。我们可以将每一个要预测的评分单独领出来看,原理都是一样的。下面我们将用 总得分 为例,以景区评分和景区评论为例,(酒店应该能一样处理)。

数据预处理

首先,对于每一个景区,首先我们看一下下面的评论:

[‘是亲子游的绝佳场所,门票就是有点贵,不过可以接受,爷爷奶奶不放心小朋友也跟上来了,当天我们十点多就到了,错过了节假日,人也还是多,不过错峰出行我们一天是把动物园逛完了,两种路线都逛完了,早上我们先坐的缆车,缆车人多,排了半小时队,小火车是把步行区转完了去坐的,到了下午四点半刚好小火车到站就下雨了,地铁站到男北门都有接驳车,很方便的,总之这次还算满意,就是有些动物表演没有看到,只看到了大象表演’,
cdots
‘非常值得去,大人小孩都适合,超赞’,
‘玩了整整一天也没走完!很好玩!园区整个气氛都很好!剧场也很好看!自驾区不是很大 ,可以近距离接触动物但是不能跟它们互动,也是为他们的健康生存环境提供保障!感觉**的动物比别的动物园的要有生气。步行区每一个动物区会有工作人员讲解。很热情’,
‘大马戏确实精彩,小朋友看得津津有味!就是入场前排队够辛苦,1个多小时,就为了抢个靠前的位置。告诉大家座位怎么选择,进去得早一定要坐在靠近vip旁的座位区域,并且越靠近大过道越好,大过道是中场巡游队伍的必经之路,看点多,互动多!’,
…]

返回目录

拼接成长文档

我们把上述多条评论,拼接长一个长文档。如下所示:

‘是亲子游的绝佳场所,门票就是有点贵,不过可以接受,爷爷奶奶不放心小朋友也跟上来了,当天我们十点多就到了,错过了节假日,人也还是多,不过错峰出行我们一天是把动物园逛完了,两种路线都逛完了,早上我们先坐的缆车,缆车 cdots
cdots
cdots 慢慢品尝。我们还参观了澳洲考拉园,一只只考拉胖乎乎的,安静地趴在树上,有的呆萌地看着我们,有的吃着它们最爱的食物——桉树叶,还有很多在呼呼大睡,考拉的一天中有16-20小时在睡觉中度过,以保存体力。在这里,我们看到了来自世界各地的动物,并和它们亲密接触,增长了许多新的知识,度过了丰富愉快的一天。 张通 2016.2.19’

返回目录

二元语法模型

将上述长文档应用二元语法模型,可得:

‘是亲’, ‘亲子’, ‘子游’, ‘游的’, ‘的绝’, ‘绝佳’, ‘佳场’, ‘场所’, ‘所门’, ‘门票’ , cdots ,‘张通’, ‘通2016.2’, ‘2016.219’

返回目录

TF-IDF 词袋模型

将二元语法处理后的,所有景区的评论,计算每一个 二元语法对 的 TF-IDF 值,最后将非结构化的文本变量,转换成结构化的矩阵(表格),维度为 50 × 52112 50 imes 52112 50×52112。

以第一条为例,转换为 TF-IDF 词袋模型如下:

第一条数据转为 TF-IDF 后的词袋向量 array([0.00116274, 0.00167242, 0.00095672, …, 0.00095672, 0.00116274,
0.00116274])

返回目录

主成分分析

由于数据的列数很多,容易造成维度灾难,因此,我们需要将数据的特征进行过滤,而过滤的方法,就是主成分分析

采用主成分分析,把数据的特征数量压缩到 50 个,并计算出每一个压缩后的 component 的 解释方差比例,可得,解释方差比例的累计和为 1,也即,这样的压缩,对数据的信息量的伤害为 0 。

如下图所示:


以 第一个景区为例, PCA 降维后,数据变成:

array([-1.68994101e-01, 3.26284120e-01, -2.03793613e-01, 5.89370914e-02, -9.35922161e-02, -2.51508576e-01, 3.78558675e-01, 7.05692275e-02, -4.16033273e-01, -1.81721112e-01, 4.20139548e-01, 2.84291262e-01, 3.37132250e-01, -2.28629811e-02, -5.94469206e-02, -1.67600090e-03, -7.70992057e-02, -3.87051901e-03, -3.28939425e-02, -3.73762031e-02, 9.71094914e-04, -2.04070515e-02, -2.32928290e-02, -6.36482369e-03, -6.32732889e-03, -3.73402358e-02, -3.66035380e-03, -1.83090879e-02, -1.13344678e-02, -2.88144971e-03, -2.00398235e-02, -1.26781652e-02, 3.37551560e-03, 3.55317514e-03, 4.00455734e-03, -4.53867966e-03, 1.40175621e-02, 1.23485020e-02, 1.34451975e-03, 2.15593117e-03, -8.77957890e-03, 4.91522134e-03, 6.37077315e-03, 2.62896402e-03, 1.00657005e-03, 3.01058968e-03, 3.34705357e-03, 4.93059973e-03, 2.21677774e-03, -1.92554306e-16])

返回目录

标准化

对数据进行标准化,使得数据的均值为 0,方差为 1。

以第一景区为例,标准化后,数据变成:

array([-0.60297716, 1.66311881, -1.15430138, 0.36418058, -0.64906391,
-1.81890344, 2.74262484, 0.51301419, -3.03987708, -1.34141918,
3.1354722 , 2.12977549, 2.53656589, -0.1733286 , -0.45559222,
-0.01286204, -0.59721058, -0.03013938, -0.25660464, -0.29457977,
0.00770422, -0.16352289, -0.19238472, -0.05314515, -0.05307961,
-0.31636371, -0.03106931, -0.15651265, -0.09757317, -0.02511877,
-0.17593458, -0.1117227 , 0.0299099 , 0.03159465, 0.03567348,
-0.0406828 , 0.12582731, 0.11149707, 0.01227103, 0.02003915,
-0.08244402, 0.04673619, 0.06111316, 0.02539171, 0.00984843,
0.03048308, 0.03437755, 0.05178526, 0.02353909, -0.02830126])

返回目录

回归模型建立

根据“天下没有免费午餐”定律,在选择一个特定的机器学习算法时,需要从大量的算法中筛选最佳的算法。

我们从下面这些算法中筛选最优算法:

算法

线性回归

k近邻算法

支持向量机

决策树

随机森林

AdaBoost

符号

lr

kNN

SVR

dtr

rf

ada

其中随机森林的基模型是最大深度为 5 的决策树,AdaBoost 的基模型是线性回归。

返回目录

最佳参数选择

不过要从上述算法中,筛选最佳算法,首先要筛选算法的最合适参数。筛选的方法是网格寻优法

算法

参数网格

lr

kNN

‘n_neighbors’:[3,5,7,9,11,13,15]

SVR

grid = ‘C’:[0.1, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3], ‘kernel’:[‘linear’,‘rbf’,‘poly’], ‘epsilon’:[0, 0.01, 0.05, 0.1]

dtr

grid = ‘max_depth’:[4, 9, 13, 17, 21, 25], ‘ccp_alpha’:[0,0.00025,0.0005,0.001,0.00125,0.0015,0.002,0.005,0.01,0.05,0.1]

rf

基模型个数:4, 9, 13, 17, 21, 25

ada

基模型个数:5, 15, 25

结果如下:(给出原图啦,不然你们不信)

返回目录

模型筛选

得到最佳参数之后,就可以筛选最佳的算法了。这里我们将所有的最佳参数,用交叉验证,对每一个算法,算出 5 组精确度(5折交叉验证,防止随机性或偶然性)和均值,结果如下:


然后选 MSE 比较低的,且较为简单的 线性回归模型就行咯。

返回目录

应用与评价

将数据集按照 7:3 的比例拆分成训练集、测试集,在训练集上训练模型,在测试集上过测试模型,并分别计算 MSE:

返回目录

第三问

有效性分析的问题,其实就是找出“重复”语句的问题。这里的重复不是语义上的重复,而是文字上的重复。有鉴于此,这里将采用聚类的方法解决。

这里的聚类,应该是以全部评论作为数据集进行评论。当然,个人觉得也可以以景区进行分组,后再聚类删除。鉴于后一种比较合理,所以本文将采用先分组,后聚类。

返回目录

数据预处理

以 景区 A01为例:

首先为了实现聚类,就需要将非结构化的文本转换为结构化的表格。这里考虑先采用条件随机场对数据进行分词同上所述

停用词过滤

同上

词频词袋模型

我们计算所有评论构成的语料库中,每一个词,在每一条评论中出现的频次,从而将非结构化文本,转换为结构化的向量。

聚类

这里将采用 DBSCAN 聚类:

DBSCAN 的参数有: epsilon 用于决定“聚类圈”的直径,和 m i n s a m p l e s min_samples minsamples,用于决定聚类簇中包含的最小样品数。通过 DBSCAN 聚类,能够将那些单词词频和分布相近的特征聚合在一起。当然,DBSCAN 也会产生“游离个体”,而这些游离个体大概率是那些有效的评论。

不过,在聚类之前,需要筛选出一个聚类的最好参数:

聚类参数筛选

保持 m i n s a m p l e s = 2 min_samples=2 minsamples=2 不变,遍历 = [ 0.1 , 0.2 , , 2 ] epsilon=[0.1, 0.2 ,cdots, 2] =[0.1,0.2,2]。观察每一次聚类后,聚类簇数和游离个体数,如下图所示:

从上图看出,当 = 0.9 epsilon=0.9 =0.9 出现转折。我们先看 = 0.8 epsilon=0.8 =0.8 时的情况,首先找出聚类簇和簇下面的样品数,如下所示:

0: 8, 1: 6, 2: 6, 3: 2, 4: 2, 5: 2, 6: 2, 7: 2, 8: 2, 9: 2, 10: 2, 11: 2, 12: 2, 13: 2, 14: 3, 15: 2, 16: 2, 17: 2, 18: 2, 19: 2, 20: 2, 21: 4, 22: 3, 23: 2, 24: 2, 25: 2, 26: 2, 27: 2, 28: 2, 29: 2, 30: 2, 31: 3, 32: 2, 33: 2, 34: 2, 35: 2, 36: 2, 37: 2, 38: 2, 39: 2, -1: 4564

其中 -1 为游离个体。

我们找出聚类簇最多的簇,也即聚类簇 0 ,并输出样品内容,如下所示:

275 The Chimelong Happy World is worth a visit. Th…
282 The Chimelong Happy World is worth a visit. Th…
285 The Chimelong Happy World is worth a visit. Th…
289 The Chimelong Happy World is worth a visit. Th…
290 The Chimelong Happy World is worth a visit. Th…
293 The Chimelong Happy World is worth a visit. Th…
Name: 评论内容, dtype: object

可以看到,聚类效果还是相当好的,大致筛选出了无效的样品。

对于 = 0.9 epsilon=0.9 =0.9 的聚类,我们也同样处理,首先找出聚类簇和簇下面的样品数,如下所示:

0: 2, 1: 56, 2: 6, 3: 6, 4: 2, 5: 2, 6: 3, 7: 2, 8: 2, 9: 2, 10: 2, 11: 2, 12: 2, 13: 2, 14: 2, 15: 2, 16: 2, 17: 2, 18: 15, 19: 2, 20: 2, 21: 2, 22: 2, 23: 2, 24: 2, 25: 2, 26: 2, 27: 3, 28: 3, 29: 2, 30: 2, 31: 2, 32: 2, 33: 2, 34: 2, 35: 2, 36: 2, 37: 4, 38: 2, 39: 2, 40: 2, 41: 2, 42: 2, 43: 2, 44: 2, 45: 2, 46: 2, 47: 2, 48: 2, 49: 2, 50: 3, 51: 2, 52: 2, 53: 2, 54: 2, 55: 2, 56: 2, 57: 2, -1: 4466

我们找出聚类簇最多的簇,也即聚类簇 1 ,并输出样品内容,如下所示:

120 可以可以可以可以可以可以可以可以可以可以可以,可以可以可以可以可以可以可以可以可以可以可以可…
233 好好好好,确实不错,方便!
295 很好很好很好很好很好很好很好很好很好
336 总的来说还不错,取票挺方便!
352 人多多多多多多多多多
521 好好好好好好好好好好好好好好好好好好好好!
523 好好,很好,很好,很好,很好,很好
533 哈哈哈哈哈哈过哈哈哈哈哈哈哈哈哈
614 便宜了不少,很给力了,取票方便,
619 太好玩了,值得一去!!!!!!

3861 取票很方便,价格也便宜
3866 取票方便快捷,而且便宜
3894 第二次看了,还是一样精彩
3925 取票很方便,又便宜。
3951 方便,不错,好好好好
3957 不错啊,取票方便服务好
3976 取票方便、价格便宜,服务好!
4025 很好玩,可以去去大家
4173 不错,挺方便的!!!!!!!!!!!!!
4225 可以,经常去!!!!!
4234 都很方便,就是人太多了。
4288 好刺激啊!有很多好多的。
4335 好,取票很方便,还能便宜一点
4366 价格比景点便宜,取票也很方便!
4485 不错,玩的还可以,!
4512 好的好的好的好的好的好的好的
4635 取票方便、 价格便宜,

我们也可以看类别第二多的那些评语长什么样:

916 取票很方便,小孩子玩的很开心
2453 玩得很好,取票方便,該省錢!
2535 孩子玩的很开心,取票很方便。
2785 很好玩,跟刺激,取票很方便!
2896 很刺激很好玩,取票也很方便
3686 取票方便很好玩挺值的
3719 超级好玩!取票方便快捷。很满意
4026 很好玩,小朋友很开心,取票很方便,
4099 很好玩啊 而且去那取票也很方便
4167 取票很方便,玩得很开心
4214 取票很方便,可玩项目很多很刺激
4326 很好玩,取票很方便…………
4339 很好玩,很刺激,取票也很方便
4377 取票方便,孩子们玩的很开心。
4538 取票很方便,玩得很开心

第三多的长什么样?

275 The Chimelong Happy World is worth a visit. Th…
282 The Chimelong Happy World is worth a visit. Th…
285 The Chimelong Happy World is worth a visit. Th…
289 The Chimelong Happy World is worth a visit. Th…
290 The Chimelong Happy World is worth a visit. Th…
293 The Chimelong Happy World is worth a visit. Th…
Name: 评论内容, dtype: object

可以看到, = 0.9 epsilon=0.9 =0.9 比 = 0.8 epsilon=0.8 =0.8 的效果更好,但误分类比较多。再来看看一些冷门的聚类簇,比如 44,内容如下:

3380 玩的项目还是比较多,比较刺激,就是最近天气太热
3381 玩的项目还是比较多,比较刺激,就是最近天气太热

还有其他:

3336 不错哦。玩得很开心,出票也很快
4451 很好,出票很快,玩得很开心

3280 **真心不错,值得一玩!
4194 **很不错,值得玩一趟!

因此,最终敲定 = 0.9 epsilon=0.9 =0.9,作为聚类参数。

返回目录

输出结果

使用 m i n s a m p l e s = 2 , = 0.9 min_samples=2, epsilon=0.9 minsamples=2,=0.9 对数据进行聚类,最后从聚类簇中筛选一条最常的保留,其余删除。对于游离数据,则完全保留,即可得出结果。如下所示(仅以景区 1 为例):


为什么要保留一条呢?因为一些刷评,不是恶意的。有可能是因为评论审核的缘故,导致无法马上出现在评论区。但客户没有看到评论区马上出现评论的情况下,就会重复发送。所以,对于这些类似刷评的东西,不能一概打死,还是要保留一条。

返回目录

第四问

我理解的问题四是,首先根据综合评分,挑出层次为 高、中、低的景区,再用 NLP 的方法提取出景区的特色。
(这里仅以景区为例)

三个层次

如何挑出高、中、低三个景区呢?我们以景区评分中的 总得分 的上四分位数、中位数、下四分位数对应的景区,作为代表高、中、低三个景区。

又或者,将 总得分 落在 IQR 以内的所有景区,作为层次中景区的代表。其余两端分别作为 高层次、低层次的代表。

其中,低层次的景区有:

[‘A02’, ‘A03’, ‘A04’, ‘A05’, ‘A08’, ‘A10’, ‘A11’, ‘A19’, ‘A24’, ‘A27’, ‘A31’, ‘A41’, ‘A43’]

中层次的景区有:

[‘A01’, ‘A06’, ‘A07’, ‘A09’, ‘A12’, ‘A13’, ‘A14’, ‘A15’, ‘A16’, ‘A17’, ‘A18’, ‘A20’, ‘A22’, ‘A25’, ‘A26’, ‘A28’, ‘A29’, ‘A30’, ‘A32’, ‘A33’, ‘A34’, ‘A42’, ‘A46’, ‘A47’]

高层次的景区有:

[‘A21’, ‘A23’, ‘A35’, ‘A36’, ‘A37’, ‘A38’, ‘A39’, ‘A40’, ‘A44’, ‘A45’, ‘A48’, ‘A49’, ‘A50’]

为了处理方便,这里仅从上述景区中,随机(不重复地)筛选其中 10% 的景区,作为代表景区。

返回目录

挑选特色

数据预处理

长文档

首先对每一个层次,对下面的所有景区中的所有评论,拼接成一个长文档,从而得到高、中、低三个长文档。以高层次为例,得到的长文档如下:

景区挺干净的,卫生间新建的,很不错。就是门票偏贵,还要交10块钱停车费徒步上去,累的大半死,不过山上的风景很美人太多,泡温泉时每个池都很多人。热矿床上躺着的人横七竖八,应该加以管理。服务区茶水提供充足…!!!!!!!!里面很大有坐观音望海,风景好靓!有很多景色点。不是,因为我是本地人才推荐这个地方。去的地方虽然不是很多,相比之下那些上百几十块钱门票的著名景点,这个**公园很值得去。我门票才十几块钱

当然,也可以结合第三问,将无效评语删除

关键句提取

根据 BM25 + TextRank 算法,从每一个长文档中,提取 100 条关键句。以高层次为例:

[‘值得推荐哦风景不错’,
‘挺方便的环境还有空气都不错’,
‘还是挺方便的不错的景点’,
‘个人觉得门票有点贵了……非常值得去的景区’,
‘这里的景色很美环境不错’,
‘景区里不错’,
‘真的不错很好’,
cdots
‘空气很好揭西著名景区’,
‘但其实值得看的地方不是很多’,
‘值得去中国文化园林风格便宜又实惠去中山**’,
‘性价比超高不错’,
‘去到景区直接可拿票’,
‘里面的绿色环境也很好’,
‘不过晚上的风景更加不错’,
‘一个值得去待上一段时间的地方’,
‘很不错’,
‘回酒店也非常值得去’,
‘非常值得观赏’,
‘景点领票超方便’,
‘确实是一个不错的选择’,
‘很好玩’]

热门词提取与结果分析

根据第一问地方法,找出每一个层次的关键句中的前 20 个热门词。

首先是高端层次,热门词有:

所以大致可以得出:高端景区的特色是便宜、风景好、通行方便,玩的地方比较多,并且有温泉之类的特色景点和服务。

然后是中端景点:
中端景点的特色是方便,服务好,风景漂亮,且在晚上时景点更加优美。

然后是低端景区:

可以总结出,低层次的景区一般适合低龄化人群,比如小孩、小朋友、孩子,并且会有一些动物可供观赏,有一些娱乐设备。但缺点在于需要排队,买票不方便。

至此,泰迪杯 2021 C 题就结束啦

返回目录

提高

由于时间原因,这里所说的都不会实现,但具有很大的参考意义,并且可实现性也比较多。

第一题

首先,对于第一题,首先我们需要先去掉无效的数据,换句话说,我们需要先做第三问,再做第一问。

之后,热度也与时间有关。我们可以制定一个函数,让每一条评论的热度计算,随着时间会出现衰退。而衰退的幅值,可以根据最近时间、最远时间,以及最大热度,最小热度统计出来。

第二题

除了回归模型之外,还可以使用深度学习模型。

第二,数据预处理方面,主成分分析也可以考虑使用其他方法,多多尝试,比如用递归删除特征等等。

此外,二元语法将非结构化文本,化为结构化数据,也不是唯一的。可以用分词的方法,或者更高级的,词向量的方法来解决。

第三题

多尝试其他聚类方法,也可以用深度学习来聚类,比如自动编码器。

第二,停用词过滤是否有必要,是一个问题。

第四题

词向量是否有插足的余地?并且(时间缘故,我没有先做第三问后做第四问啦…)。

第二,就是特色从热门词中提取,是否合适?直接从关键句中提取不行吗?

返回目录

代码与提问

若需要代码,请点赞、关注、私信、说明题目和年份

如果有其他问题,请到评论区留言,私信提问,概不回答。也在此鼓励大家独立思考。

本人不会回访,不互关,不互吹,以及谢绝诸如此类事

最近总结了和其他人的私聊,以及一些比较爆笑的东西,以做笑谈,供人饮酒:
一个小博主的奇葩经历

以上是关于2021 泰迪杯 C 题的主要内容,如果未能解决你的问题,请参考以下文章

2021 泰迪杯 C 题

2021 泰迪杯 C 思路

2021 泰迪杯 C 思路

2021 泰迪杯 A 题

2021 泰迪杯 A 题

2023年第十一届泰迪杯数据挖掘挑战赛C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一