说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。
1.项目背景
随着计算机技术的发展、Web 应用的逐步普及,大量的电子文本已经触手可及,文本数据的增多引发了另一个问题:人们如何从规模庞大的文本数据中主动或被动地发现有用的信息。这是信息检索中的问题,也是深层次文本内容挖掘和分析中的问题。文本聚类分析是文本挖掘中一个方面的内容,主要应用于加速检索过程、对搜索引擎检索结果聚类呈现、话题的自动发现、文本摘要等。
文本聚类分析在信息检索(IR,Information Retrieval)领域有相当长的研究历史,近年来在文本数据上的聚类分析研究和应用越来越受到关注。文本聚类过程本质上就是将语义相同或者相近的文本聚在一起。
聚类与分类是人们认识自然、获取知识的两种手段。“物以类聚,人以群分”,人类往往依赖聚类和分类手段来认识客观世界并形成概念体系。比如自然界中的猴子就是一群具有长尾巴、会爬树等特征的生物,人们依据这些特征来识别和研究猴子,这是一个分类过程。但这些特征从何而来?这些特征往往是通过这些生物之间自身的相似性以及他们与其他事物之间的差异性得到的,这个过程就是一个聚类分析的过程。从众多的事物中自动地获取特征形成概念,其本质上就是一种聚类分析过程。
2.数据获取
本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:
数据详情如下(部分展示):
编号 |
字段 |
备注 |
1 |
title |
标题 |
2 |
tag |
标签 |
3 |
info |
信息 |
4 |
comments |
评论 |
5 |
content |
内容 |
部分数据展示:
3.数据预处理
3.1.读取和查看数据
关键代码:
结果展示:
3.2.查看书名和内容
关键代码:
结果展示:
查看了第一本书的书名和内容的前10个词。
4.探索性数据分析
4.1.规范化语料库
关键代码如下:
结果输出如下:
5.特征工程
5.1.提取tf-idf特征
关键代码:
结果展示:
上图可以看到特征的形状以及特征名字索引信息。
6.构建聚类模型
主要使用KMeans聚类算法,用于目标聚类分析。
6.1.寻找聚类最优的K
使用手肘法寻找最优的K。
关键代码:
结果展示:
通过上图可以看到,10达到最小,但是有一个缺陷是在此文本数据中,使用手肘法寻找最优的K,效果没有非常明显。
6.2.建立KMeans聚类模型
编号 |
模型名称 |
参数 |
1 |
KMeans聚类模型 |
n_clusters=10 |
2 |
max_iter=10000 |
关键代码如下:
6.3.获取每个聚类的数量
关键代码:
结果展示:
6.4.文本聚类结果
关键代码:
输出:
聚类类别 |
聚类结果 |
Cluster 0 |
Key features: ['自己', '阿米尔', '哈桑', '龙应台', '一件'] book in this cluster: 追风筝的人, 外婆的道歉信, 亲爱的安德烈, 不可思议的朋友, 穿过圩场, 孩子你慢慢来, 冬牧场, 博尔赫斯诗选 |
Cluster 1 |
Key features: ['世纪', '一个', '全球', '三部曲', '绘画'] book in this cluster: 百年孤独, 世界的凛冬, 月亮和六便士, 活着, 斯通纳, 世界的凛冬, 斯通纳, 世界的凛冬, 月亮和六便士, 活着, 江城, 下雨天一个人在家, 当我谈跑步时我谈些什么, ?活着, 北鸢, 黄金时代, ?百年孤独, 世界的凛冬, 小王子, 永恒的边缘, 下雨天一个人在家, 不思议图书馆, 怒, 当我谈跑步时我谈些什么, 奇鸟行状录, 东京奇谭集, 奥克诺斯, 唯有孤独恒常如新 |
Cluster 2 |
Key features: ['畅销', '女人', '叶舟', '两个', '本书'] book in this cluster: 我的前半生, 新名字的故事, 雪落香杉树, 囚鸟, 双峰: 神秘史, 新名字的故事, 雪落香杉树, 囚鸟, 我的天才女友, 雪落香杉树, 囚鸟, 双峰: 神秘史, 时间的果, 瓦尔登湖, 时间的果, 一只特立独行的猪, 认识电影, 冷暴力, 时间的果, 瓦尔登湖, 没有色彩的多崎作和他的巡礼之年, 远方的鼓声, 没有女人的男人们, 现实与欲望, 恶之花, 二十首情诗与绝望的歌, 荒原 |
Cluster 3 |
Key features: ['一本', '情感', '太郎', '纪念', '水问'] book in this cluster: 我为你洒下月光, 皮囊, 孤独六讲, 我为你洒下月光, 东京本屋, 白夜行, 智惠子抄, 我为你洒下月光, 皮囊, 一个人的村庄, 遇到百分之百的女孩, 海子诗全集, 智惠子抄 |
Cluster 4 |
Key features: ['1q84', '喜欢', '钱钟书', '官方网站', 'douban'] book in this cluster: 1984, 1984, 1984, 我们仨, 我们仨, 1Q84 BOOK 1, ?我们仨, 1Q84 BOOK 1, 1Q84 BOOK 2, 1Q84 BOOK 3 |
Cluster 5 |
Key features: ['有时', '成长', '猝不及防', '般唱', '几桩'] book in this cluster: 杀死一只知更鸟, 杀死一只知更鸟, 杀死一只知更鸟, 杀死一只知更鸟 |
Cluster 6 |
Key features: ['小说', '一部', '汪曾祺', '中国', '生活'] book in this cluster: 鱼王, 围城, 鱼王, 飘, 灯塔, 鱼王, 步履不停, 红楼梦, ?沉默的大多数, 看见, 送你一颗子弹, 浮生六记, 民主的细节, 人间草木, 围城, 沉默的大多数, 平凡的世界(全三部), 送你一颗子弹, 白鹿原, 繁花, 明朝那些事儿(1-9), 爱你就像爱生命, 台北人, 倾城之恋, 人间草木, 一句顶一万句, 艺术的故事, 红楼梦, 围城, 飘, 平凡的世界(全三部), 恋情的终结, 中国历代政治得失, 國史大綱(上下), 人间失格, 百鬼夜行 阳, 金色梦乡, 挪威的森林, 强风吹拂, 火花, 海边的卡夫卡, 世界尽头与冷酷仙境, 浮生六记, 我口袋里的星辰如沙砾, 人间草木, 生活,是很好玩的, 海边的卡夫卡, 世界尽头与冷酷仙境, 挪威的森林, 且听风吟, 舞!舞!舞!, 爱吃沙拉的狮子, ?一只狼在放哨, 事物的味道,我尝得太早了, 诗的八堂课, 飞鸟集, 月光落在左手上, 摇摇晃晃的人间, 给孩子的诗, 二十亿光年的孤独 |
Cluster 7 |
Key features: ['杂货店', '内心', '一家', '写下', '座位'] book in this cluster: ?解忧杂货店, ?解忧杂货店, 咖啡未冷前, 大萝卜和难挑的鳄梨, 国境以南 太阳以西 |
Cluster 8 |
Key features: ['作品', '马尔克斯', '散文', '日子', '丰子恺'] book in this cluster: 房思琪的初戀樂園, 霍乱时期的爱情, 戴上手套擦泪, 二手时间, 霍乱时期的爱情, 活着为了讲述, 戴上手套擦泪, 房思琪的初戀樂園, 二手时间, 霍乱时期的爱情, 活着为了讲述, 吃鲷鱼让我打嗝, 撒哈拉的故事, 文学回忆录(全2册), 活着本来单纯, 山海经全译, 我的职业是小说家, 来自新世界 (上下), 活着本来单纯, 撒哈拉的故事, 此生多珍重, 所谓好玩的事,我再也不做了, ?我的职业是小说家, 无比芜杂的心绪, 鲍勃·迪伦诗歌集 (1961-2012), 万物静默如谜, 我的孤独是一座花园 |
Cluster 9 |
Key features: ['兄弟', '美国', '第一次世界大战', '生命', '以及'] book in this cluster: 巨人的陨落, 巨人的陨落, 巨人的陨落, 目送, 这些人,那些事, 巨人的陨落, 心理学与生活, 刀锋, 经济学原理(上下), 目送, 这些人,那些事, 悲伤与理智 |
由上面的聚类我们大致可以看出,cluster 0侧重生活,cluster 1侧重文学,cluster 9侧重战争、生命等,达到了将相似内容聚集到一起的目标。
6.5.聚类结果可视化
关键代码:
结果展示:
7.结论与展望
综上所述,本项目采用KMeans聚类算法对文本数据进行聚类,最终把相似的文本聚在了一起,达到了文本聚类的目的,最终证明了我们提出的模型效果良好,可用于日常生活中进行建模预测,以提高生产价值。
# 本次机器学习项目实战所需的资料,项目资源如下: # 项目说明: # 获取方式一: # 项目实战合集导航: https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2 # 获取方式二: 链接:https://pan.baidu.com/s/1i33UIHC0sjwWAhxVMH9teg 提取码:czc4