主题聚类模型

因为需要对文件的主题,做聚类分析,得到本体或者文件所属类别,尝试了现有的两种非常常用的聚类手段,K-means均值聚类和LDA主题聚类模型(主题-词语,文件-主题分布)
可参考资料:
LDA模型:https://blog.csdn.net/baidu_15113429/article/details/79959261
(https://blog.csdn.net/accumulate_zhang/article/details/62453672)

实现效果

文件总数量为26
数据格式为:data_set=[[],[],[]],类似于如下(二元列表,每个子列表存放每个文件分词后得到的列表)

data_set [['载人', '航天', '工程', '专项', '标准', '载人', '航天', '工程', '有效载荷', '生物', '通用', '发布', '实施', '中国', '载人', '航天', '工程', '办公室', '批准', '前言', '标准', '附录', '资料性', '附录', '标准'], ['中国', '载人', '航天', '工程', '办公室', '提出', '标准', '载人', '航天', '工程', '标准化', '管理', '咨询中心', '归口', '标准', '起草', '单位',  '飞行', '动物', '植物', '实验', '样品', '飞行', '确认', '实验', '样品', '包含', '生物', '危害', '凡不注', '日期', '版次', '引用', '文件', '最新', '版本', '于本', '标准', '工作', '场所', '物理', '因素', '测量', '紫外', '辐射'],[ '声学', '测量', '常用', '频率', '声学', '倍频程', '分数',  '安装', '到位', '测量', '接地', '电阻', '满足要求', '设备', '自带', '接地', '螺钉', '涂胶', '拧紧', '设备', '优先', '安装', '面来', '接地', '电阻', '满足要求', '轻微', '打磨', '设备', '支架', '安装', '方法', '加以解决', '搭接', '设备', '舱体', '安装', '打磨', '安装', '安装', '后应', '实测']]

K-means

在这里插入图片描述
在这里插入图片描述

LDA聚类

在这里插入图片描述

每个主题输出15个单词
[(0, ‘0.026*“标准” + 0.021*“测量” + 0.021*“偏差” + 0.017*“测试” + 0.013*“磁带” + 0.013*“螺旋线” + 0.013*“借用” + 0.012*“样板” + 0.012*“单位” + 0.011*“弹簧” + 0.011*“记录” + 0.011*“渐开线” + 0.009*“校准” + 0.008*“仪器” + 0.007*“工作”’), (1, ‘0.011*“测试” + 0.009*“润滑” + 0.006*“磁带” + 0.006*“记录” + 0.006*“附录” + 0.005*“试验” + 0.005*“项目” + 0.005*“软件” + 0.005*“设计” + 0.005*“工作” + 0.005*“标准” + 0.004*“固体” + 0.004*“文件” + 0.004*“方法” + 0.004*“输出”’), (2, ‘0.038*“软件” + 0.022*“测试” + 0.016*“文件” + 0.015*“计划” + 0.014*“保证” + 0.014*“标准” + 0.011*“设计” + 0.011*“评审” + 0.008*“程序” + 0.007*“验证” + 0.007*“包括” + 0.007*“活动” + 0.007*“方法” + 0.007*“代码” + 0.006*“质量保证”’), (3, ‘0.029*“软件” + 0.029*“项目” + 0.017*“仿真” + 0.014*“工作” + 0.013*“活动” + 0.012*“飞行器” + 0.011*“阶段” + 0.011*“参数” + 0.011*“报告” + 0.011*“过程” + 0.011*“系统” + 0.010*“方法” + 0.009*“试验” + 0.009*“计划” + 0.009*“一个”’), (4, ‘0.030*“软件” + 0.021*“测试” + 0.015*“项目” + 0.014*“附录” + 0.014*“设计” + 0.012*“标准” + 0.010*“需求” + 0.009*“内容” + 0.009*“列出” + 0.009*“说明书” + 0.009*“编写” + 0.009*“包括” + 0.008*“描述” + 0.008*“单位” + 0.008*“格式”’), (5, ‘0.038*“文件” + 0.020*“试验” + 0.019*“标准” + 0.012*“编号” + 0.010*“标准化” + 0.010*“内容” + 0.009*“示例” + 0.009*“设备” + 0.009*“引用” + 0.009*“要素” + 0.009*“温度” + 0.009*“产品” + 0.008*“工作” + 0.008*“附录” + 0.006*“等级”’), (6, ‘0.044*“试验” + 0.027*“锂电池” + 0.016*“试样” + 0.015*“陀螺” + 0.014*“规范” + 0.014*“符合” + 0.013*“方法” + 0.010*“相关” + 0.010*“附录” + 0.009*“详细” + 0.008*“检验” + 0.007*“工作” + 0.007*“单体” + 0.007*“速率” + 0.006*“温度”’), (7, ‘0.013*“公差” + 0.011*“尺寸” + 0.010*“样品” + 0.010*“检验” + 0.010*“材料” + 0.010*“未注” + 0.009*“测试” + 0.008*“标准” + 0.007*“有效载荷” + 0.007*“生物” + 0.007*“方法” + 0.007*“天线” + 0.007*“附录” + 0.007*“文件” + 0.006*“玻璃纤维”’), (8, ‘0.026*“文件” + 0.015*“润滑” + 0.011*“标准” + 0.010*“试验” + 0.008*“轴承” + 0.007*“单位” + 0.006*“测量” + 0.006*“内容” + 0.005*“设计” + 0.005*“技术” + 0.005*“要素” + 0.004*“标准化” + 0.004*“附录” + 0.004*“定义” + 0.004*“符合”’), (9, ‘0.013*“避雷器” + 0.009*“标准” + 0.008*“软件” + 0.007*“检验” + 0.005*“项目” + 0.005*“文件” + 0.005*“产品” + 0.004*“方法” + 0.004*“偏差” + 0.004*“工作” + 0.004*“试验” + 0.004*“单位” + 0.004*“测试” + 0.004*“附录” + 0.003*“电压”’)]
[(0, ‘0.013*“文件” + 0.013*“试验” + 0.012*“软件” + 0.011*“标准” + 0.009*“项目” + 0.008*“测试” + 0.007*“工作” + 0.007*“方法” + 0.006*“附录” + 0.005*“产品”’)]
-0.47413810004798995
[(0, ‘0.014*“软件” + 0.013*“标准” + 0.012*“项目” + 0.010*“工作” + 0.010*“试验” + 0.009*“测试” + 0.007*“产品” + 0.007*“方法” + 0.007*“活动” + 0.006*“测量”’), (1, ‘0.021*“文件” + 0.015*“试验” + 0.010*“标准” + 0.010*“软件” + 0.009*“附录” + 0.007*“仿真” + 0.007*“测试” + 0.007*“内容” + 0.007*“方法” + 0.006*“项目”’)]
-1.073599939236346
[(0, ‘0.018*“标准” + 0.017*“试验” + 0.011*“测量” + 0.009*“偏差” + 0.009*“测试” + 0.008*“工作” + 0.008*“产品” + 0.007*“温度” + 0.007*“公差” + 0.006*“单位”’), (1, ‘0.019*“试验” + 0.011*“锂电池” + 0.011*“附录” + 0.008*“规范” + 0.007*“试样” + 0.007*“润滑” + 0.007*“方法” + 0.006*“设计” + 0.006*“测试” + 0.006*“材料”’), (2, ‘0.023*“文件” + 0.022*“软件” + 0.015*“项目” + 0.011*“标准” + 0.009*“测试” + 0.008*“工作” + 0.008*“仿真” + 0.008*“方法” + 0.007*“活动” + 0.007*“试验”’)]
-1.3309857061994574
[(0, ‘0.019*“标准” + 0.015*“试验” + 0.013*“测量” + 0.011*“偏差” + 0.008*“工作” + 0.008*“公差” + 0.008*“温度” + 0.007*“尺寸” + 0.007*“产品” + 0.007*“单位”’), (1, ‘0.019*“试验” + 0.011*“测试” + 0.011*“锂电池” + 0.010*“附录” + 0.009*“规范” + 0.007*“润滑” + 0.007*“设备” + 0.007*“方法” + 0.007*“符合” + 0.007*“试样”’), (2, ‘0.033*“文件” + 0.019*“软件” + 0.016*“标准” + 0.012*“测试” + 0.010*“内容” + 0.009*“编号” + 0.007*“保证” + 0.007*“标准化” + 0.007*“附录” + 0.007*“示例”’), (3, ‘0.026*“项目” + 0.020*“软件” + 0.016*“试验” + 0.016*“仿真” + 0.013*“工作” + 0.011*“飞行器” + 0.010*“方法” + 0.010*“参数” + 0.009*“报告” + 0.009*“阶段”’)]
-2.0152637536605935
[(0, ‘0.019*“标准” + 0.014*“试验” + 0.013*“测量” + 0.010*“偏差” + 0.008*“工作” + 0.008*“设备” + 0.008*“公差” + 0.008*“温度” + 0.008*“样品” + 0.008*“产品”’), (1, ‘0.014*“润滑” + 0.013*“试验” + 0.012*“规范” + 0.012*“检验” + 0.009*“陀螺” + 0.009*“符合” + 0.008*“附录” + 0.007*“轴承” + 0.007*“材料” + 0.007*“方法”’), (2, ‘0.032*“文件” + 0.017*“软件” + 0.015*“标准” + 0.015*“测试” + 0.008*“内容” + 0.008*“编号” + 0.008*“保证” + 0.007*“标准化” + 0.007*“示例” + 0.007*“要素”’), (3, ‘0.028*“项目” + 0.020*“软件” + 0.017*“仿真” + 0.014*“工作” + 0.014*“试验” + 0.012*“飞行器” + 0.011*“方法” + 0.011*“参数” + 0.010*“报告” + 0.009*“阶段”’), (4, ‘0.024*“试验” + 0.017*“锂电池” + 0.016*“软件” + 0.012*“附录” + 0.011*“测试” + 0.010*“试样” + 0.010*“标准” + 0.009*“设计” + 0.009*“项目” + 0.008*“文件”’)]
-2.3854563881012996
[(0, ‘0.022*“标准” + 0.021*“测量” + 0.016*“偏差” + 0.010*“螺旋线” + 0.009*“试验” + 0.009*“借用” + 0.009*“单位” + 0.009*“样板” + 0.008*“产品” + 0.008*“渐开线”’), (1, ‘0.015*“润滑” + 0.012*“材料” + 0.010*“样品” + 0.009*“检验” + 0.009*“附录” + 0.008*“规范” + 0.008*“试验” + 0.008*“轴承” + 0.007*“实验” + 0.007*“玻璃纤维”’), (2, ‘0.027*“软件” + 0.024*“测试” + 0.012*“保证” + 0.011*“标准” + 0.009*“试验” + 0.009*“文件” + 0.009*“方法” + 0.009*“活动” + 0.008*“陀螺” + 0.008*“计划”’), (3, ‘0.029*“项目” + 0.022*“软件” + 0.019*“仿真” + 0.015*“工作” + 0.013*“飞行器” + 0.013*“参数” + 0.011*“试验” + 0.011*“方法” + 0.011*“报告” + 0.010*“阶段”’), (4, ‘0.022*“试验” + 0.020*“锂电池” + 0.018*“软件” + 0.014*“附录” + 0.012*“测试” + 0.012*“试样” + 0.010*“设计” + 0.010*“项目” + 0.010*“标准” + 0.006*“内容”’), (5, ‘0.036*“文件” + 0.017*“标准” + 0.015*“试验” + 0.009*“编号” + 0.009*“标准化” + 0.009*“内容” + 0.009*“要素” + 0.008*“示例” + 0.008*“公差” + 0.008*“引用”’)]
-2.889954019253702
[(0, ‘0.023*“标准” + 0.021*“测量” + 0.017*“偏差” + 0.010*“螺旋线” + 0.010*“单位” + 0.010*“借用” + 0.009*“样板” + 0.008*“渐开线” + 0.008*“弹簧” + 0.008*“生物”’), (1, ‘0.018*“润滑” + 0.012*“材料” + 0.011*“样品” + 0.010*“检验” + 0.009*“附录” + 0.009*“轴承” + 0.009*“玻璃纤维” + 0.009*“规范” + 0.007*“高强” + 0.007*“单位”’), (2, ‘0.031*“软件” + 0.028*“测试” + 0.014*“保证” + 0.013*“标准” + 0.010*“活动” + 0.009*“文件” + 0.009*“计划” + 0.008*“记录” + 0.008*“磁带” + 0.008*“设计”’), (3, ‘0.038*“项目” + 0.022*“软件” + 0.020*“工作” + 0.014*“方法” + 0.014*“报告” + 0.012*“阶段” + 0.012*“活动” + 0.011*“过程” + 0.010*“计划” + 0.010*“估算”’), (4, ‘0.025*“仿真” + 0.024*“软件” + 0.017*“飞行器” + 0.017*“参数” + 0.017*“试验” + 0.012*“测试” + 0.011*“轨道” + 0.010*“追踪” + 0.010*“系统” + 0.009*“项目”’), (5, ‘0.036*“文件” + 0.017*“标准” + 0.015*“试验” + 0.010*“编号” + 0.009*“标准化” + 0.009*“要素” + 0.009*“内容” + 0.008*“示例” + 0.008*“公差” + 0.008*“引用”’), (6, ‘0.040*“试验” + 0.024*“锂电池” + 0.014*“试样” + 0.013*“规范” + 0.013*“陀螺” + 0.012*“符合” + 0.011*“方法” + 0.009*“附录” + 0.009*“相关” + 0.008*“检验”’)]
-2.199977485584666
[(0, ‘0.027*“标准” + 0.026*“测量” + 0.025*“偏差” + 0.015*“螺旋线” + 0.014*“借用” + 0.014*“样板” + 0.013*“单位” + 0.012*“弹簧” + 0.012*“渐开线” + 0.009*“仪器”’), (1, ‘0.023*“润滑” + 0.023*“测试” + 0.017*“磁带” + 0.014*“记录” + 0.012*“轴承” + 0.008*“电平” + 0.007*“信号” + 0.007*“设计” + 0.007*“固体” + 0.006*“标准”’), (2, ‘0.043*“软件” + 0.019*“保证” + 0.018*“测试” + 0.014*“活动” + 0.012*“计划” + 0.012*“文件” + 0.012*“标准” + 0.010*“设计” + 0.010*“评审” + 0.010*“项目”’), (3, ‘0.040*“项目” + 0.022*“软件” + 0.021*“工作” + 0.015*“方法” + 0.015*“报告” + 0.013*“阶段” + 0.012*“活动” + 0.011*“估算” + 0.011*“计划” + 0.011*“过程”’), (4, ‘0.026*“仿真” + 0.025*“软件” + 0.018*“飞行器” + 0.018*“参数” + 0.017*“试验” + 0.013*“测试” + 0.011*“轨道” + 0.010*“追踪” + 0.010*“系统” + 0.009*“项目”’), (5, ‘0.041*“文件” + 0.018*“标准” + 0.018*“试验” + 0.011*“编号” + 0.010*“标准化” + 0.010*“内容” + 0.010*“示例” + 0.009*“要素” + 0.009*“引用” + 0.008*“产品”’), (6, ‘0.040*“试验” + 0.024*“锂电池” + 0.014*“试样” + 0.013*“陀螺” + 0.013*“符合” + 0.013*“规范” + 0.012*“方法” + 0.009*“相关” + 0.009*“附录” + 0.009*“检验”’), (7, ‘0.012*“公差” + 0.010*“尺寸” + 0.009*“检验” + 0.009*“样品” + 0.009*“测试” + 0.009*“材料” + 0.009*“未注” + 0.008*“标准” + 0.007*“文件” + 0.007*“有效载荷”’)]
-2.2382554931156475
[(0, ‘0.026*“标准” + 0.024*“偏差” + 0.023*“测量” + 0.015*“螺旋线” + 0.014*“单位” + 0.014*“借用” + 0.014*“样板” + 0.013*“弹簧” + 0.012*“渐开线” + 0.009*“仪器”’), (1, ‘0.007*“项目” + 0.007*“软件” + 0.006*“测试” + 0.006*“试验” + 0.006*“附录” + 0.005*“工作” + 0.005*“标准” + 0.005*“文件” + 0.005*“方法” + 0.004*“设计”’), (2, ‘0.038*“软件” + 0.028*“测试” + 0.017*“保证” + 0.012*“标准” + 0.012*“活动” + 0.011*“磁带” + 0.011*“计划” + 0.011*“记录” + 0.009*“文件” + 0.009*“设计”’), (3, ‘0.039*“项目” + 0.022*“软件” + 0.021*“工作” + 0.015*“方法” + 0.014*“报告” + 0.013*“阶段” + 0.012*“活动” + 0.011*“计划” + 0.011*“估算” + 0.011*“过程”’), (4, ‘0.028*“软件” + 0.026*“仿真” + 0.018*“飞行器” + 0.017*“参数” + 0.015*“测试” + 0.013*“试验” + 0.011*“轨道” + 0.010*“追踪” + 0.010*“项目” + 0.010*“附录”’), (5, ‘0.035*“试验” + 0.018*“标准” + 0.016*“温度” + 0.016*“设备” + 0.014*“文件” + 0.013*“工作” + 0.011*“等级” + 0.010*“产品” + 0.009*“条件” + 0.009*“接地”’), (6, ‘0.044*“试验” + 0.027*“锂电池” + 0.016*“试样” + 0.015*“陀螺” + 0.014*“规范” + 0.013*“符合” + 0.012*“方法” + 0.010*“相关” + 0.010*“附录” + 0.009*“详细”’), (7, ‘0.013*“公差” + 0.011*“尺寸” + 0.010*“检验” + 0.010*“样品” + 0.010*“材料” + 0.009*“未注” + 0.009*“测试” + 0.008*“标准” + 0.007*“有效载荷” + 0.007*“生物”’), (8, ‘0.042*“文件” + 0.015*“标准” + 0.010*“编号” + 0.010*“内容” + 0.010*“标准化” + 0.009*“示例” + 0.009*“要素” + 0.008*“润滑” + 0.008*“引用” + 0.007*“附录”’)]
-2.2975736425099287
[(0, ‘0.026*“标准” + 0.021*“测量” + 0.021*“偏差” + 0.017*“测试” + 0.013*“磁带” + 0.013*“螺旋线” + 0.013*“借用” + 0.012*“样板” + 0.012*“单位” + 0.011*“弹簧”’), (1, ‘0.011*“测试” + 0.009*“润滑” + 0.006*“磁带” + 0.006*“记录” + 0.006*“附录” + 0.005*“试验” + 0.005*“项目” + 0.005*“软件” + 0.005*“设计” + 0.005*“工作”’), (2, ‘0.038*“软件” + 0.022*“测试” + 0.016*“文件” + 0.015*“计划” + 0.014*“保证” + 0.014*“标准” + 0.011*“设计” + 0.011*“评审” + 0.008*“程序” + 0.007*“验证”’), (3, ‘0.029*“软件” + 0.029*“项目” + 0.017*“仿真” + 0.014*“工作” + 0.013*“活动” + 0.012*“飞行器” + 0.011*“阶段” + 0.011*“参数” + 0.011*“报告” + 0.011*“过程”’), (4, ‘0.030*“软件” + 0.021*“测试” + 0.015*“项目” + 0.014*“附录” + 0.014*“设计” + 0.012*“标准” + 0.010*“需求” + 0.009*“内容” + 0.009*“列出” + 0.009*“说明书”’), (5, ‘0.038*“文件” + 0.020*“试验” + 0.019*“标准” + 0.012*“编号” + 0.010*“标准化” + 0.010*“内容” + 0.009*“示例” + 0.009*“设备” + 0.009*“引用” + 0.009*“要素”’), (6, ‘0.044*“试验” + 0.027*“锂电池” + 0.016*“试样” + 0.015*“陀螺” + 0.014*“规范” + 0.014*“符合” + 0.013*“方法” + 0.010*“相关” + 0.010*“附录” + 0.009*“详细”’), (7, ‘0.013*“公差” + 0.011*“尺寸” + 0.010*“样品” + 0.010*“检验” + 0.010*“材料” + 0.010*“未注” + 0.009*“测试” + 0.008*“标准” + 0.007*“有效载荷” + 0.007*“生物”’), (8, ‘0.026*“文件” + 0.015*“润滑” + 0.011*“标准” + 0.010*“试验” + 0.008*“轴承” + 0.007*“单位” + 0.006*“测量” + 0.006*“内容” + 0.005*“设计” + 0.005*“技术”’), (9, ‘0.013*“避雷器” + 0.009*“标准” + 0.008*“软件” + 0.007*“检验” + 0.005*“项目” + 0.005*“文件” + 0.005*“产品” + 0.004*“方法” + 0.004*“偏差” + 0.004*“工作”’)]
-2.3243692270435714
[(0, ‘0.021*“标准” + 0.018*“测量” + 0.017*“偏差” + 0.017*“润滑” + 0.013*“单位” + 0.011*“螺旋线” + 0.010*“借用” + 0.010*“样板” + 0.009*“渐开线” + 0.009*“弹簧”’), (1, ‘0.007*“测试” + 0.007*“项目” + 0.007*“软件” + 0.006*“附录” + 0.005*“试验” + 0.005*“工作” + 0.005*“标准” + 0.005*“方法” + 0.004*“文件” + 0.004*“设计”’), (2, ‘0.040*“软件” + 0.028*“测试” + 0.017*“保证” + 0.013*“标准” + 0.012*“计划” + 0.012*“活动” + 0.010*“文件” + 0.010*“设计” + 0.010*“评审” + 0.009*“包括”’), (3, ‘0.032*“项目” + 0.026*“软件” + 0.018*“仿真” + 0.016*“工作” + 0.013*“飞行器” + 0.012*“参数” + 0.012*“报告” + 0.012*“方法” + 0.011*“活动” + 0.011*“阶段”’), (4, ‘0.030*“软件” + 0.020*“测试” + 0.015*“项目” + 0.015*“附录” + 0.014*“设计” + 0.012*“标准” + 0.010*“需求” + 0.010*“列出” + 0.010*“说明书” + 0.009*“内容”’), (5, ‘0.049*“文件” + 0.021*“标准” + 0.014*“试验” + 0.014*“编号” + 0.013*“标准化” + 0.012*“内容” + 0.012*“示例” + 0.011*“要素” + 0.010*“引用” + 0.010*“产品”’), (6, ‘0.045*“试验” + 0.028*“锂电池” + 0.016*“试样” + 0.015*“陀螺” + 0.015*“规范” + 0.014*“符合” + 0.013*“方法” + 0.010*“相关” + 0.010*“附录” + 0.009*“详细”’), (7, ‘0.013*“公差” + 0.011*“尺寸” + 0.010*“样品” + 0.010*“测试” + 0.010*“材料” + 0.010*“检验” + 0.009*“未注” + 0.008*“标准” + 0.007*“有效载荷” + 0.007*“生物”’), (8, ‘0.023*“文件” + 0.015*“试验” + 0.012*“标准” + 0.010*“仿真” + 0.010*“测量” + 0.007*“参数” + 0.007*“相机” + 0.006*“系统” + 0.006*“飞行器” + 0.006*“偏差”’), (9, ‘0.014*“避雷器” + 0.010*“标准” + 0.008*“软件” + 0.007*“检验” + 0.006*“项目” + 0.005*“产品” + 0.005*“文件” + 0.005*“方法” + 0.004*“工作” + 0.004*“试验”’), (10, ‘0.027*“试验” + 0.026*“设备” + 0.020*“温度” + 0.019*“工作” + 0.016*“接地” + 0.013*“样品” + 0.013*“高度” + 0.012*“空间站” + 0.010*“搭接” + 0.009*“安装”’)]
-2.328609954071033
[(0, ‘0.029*“标准” + 0.027*“偏差” + 0.026*“测量” + 0.017*“螺旋线” + 0.017*“借用” + 0.015*“样板” + 0.015*“单位” + 0.014*“弹簧” + 0.014*“渐开线” + 0.010*“仪器”’), (1, ‘0.036*“润滑” + 0.017*“轴承” + 0.012*“固体” + 0.011*“设计” + 0.008*“部件” + 0.008*“润滑油” + 0.008*“单位” + 0.007*“润滑脂” + 0.007*“寿命” + 0.007*“材料”’), (2, ‘0.038*“软件” + 0.029*“测试” + 0.017*“保证” + 0.012*“标准” + 0.012*“活动” + 0.011*“计划” + 0.011*“磁带” + 0.011*“记录” + 0.009*“设计” + 0.009*“文件”’), (3, ‘0.043*“项目” + 0.024*“软件” + 0.022*“工作” + 0.016*“报告” + 0.016*“方法” + 0.014*“阶段” + 0.014*“活动” + 0.012*“过程” + 0.012*“计划” + 0.012*“估算”’), (4, ‘0.030*“仿真” + 0.028*“软件” + 0.021*“飞行器” + 0.020*“参数” + 0.015*“试验” + 0.015*“测试” + 0.013*“轨道” + 0.012*“追踪” + 0.011*“系统” + 0.010*“项目”’), (5, ‘0.052*“试验” + 0.023*“温度” + 0.020*“标准” + 0.018*“等级” + 0.015*“产品” + 0.014*“工作” + 0.013*“条件” + 0.010*“表面” + 0.010*“样品” + 0.010*“设备”’), (6, ‘0.047*“试验” + 0.030*“锂电池” + 0.017*“试样” + 0.015*“陀螺” + 0.015*“规范” + 0.014*“符合” + 0.012*“方法” + 0.010*“相关” + 0.010*“附录” + 0.009*“详细”’), (7, ‘0.012*“样品” + 0.012*“材料” + 0.012*“检验” + 0.011*“测试” + 0.009*“标准” + 0.009*“生物” + 0.009*“有效载荷” + 0.008*“天线” + 0.008*“附录” + 0.008*“玻璃纤维”’), (8, ‘0.016*“试验” + 0.012*“标准” + 0.011*“文件” + 0.010*“测量” + 0.010*“避雷器” + 0.008*“润滑” + 0.007*“相机” + 0.006*“产品” + 0.006*“检验” + 0.005*“轴承”’), (9, ‘0.009*“软件” + 0.007*“项目” + 0.006*“标准” + 0.006*“工作” + 0.005*“方法” + 0.004*“偏差” + 0.004*“文件” + 0.004*“阶段” + 0.004*“测试” + 0.004*“计划”’), (10, ‘0.023*“公差” + 0.017*“设备” + 0.017*“未注” + 0.017*“尺寸” + 0.013*“接地” + 0.010*“空间站” + 0.010*“加工” + 0.009*“高度” + 0.009*“文件” + 0.008*“表面”’), (11, ‘0.057*“文件” + 0.018*“标准” + 0.016*“编号” + 0.014*“标准化” + 0.014*“内容” + 0.013*“示例” + 0.013*“要素” + 0.012*“引用” + 0.011*“附录” + 0.010*“给出”’)]
-2.24304712500343
[(0, ‘0.031*“标准” + 0.026*“偏差” + 0.025*“测量” + 0.016*“借用” + 0.016*“螺旋线” + 0.015*“样板” + 0.014*“单位” + 0.014*“弹簧” + 0.013*“渐开线” + 0.009*“仪器”’), (1, ‘0.036*“测试” + 0.031*“磁带” + 0.026*“记录” + 0.014*“电平” + 0.014*“信号” + 0.010*“输出” + 0.008*“样品” + 0.008*“标准” + 0.008*“工作” + 0.006*“磁道”’), (2, ‘0.042*“软件” + 0.026*“测试” + 0.015*“保证” + 0.014*“标准” + 0.013*“设计” + 0.012*“项目” + 0.010*“活动” + 0.010*“包括” + 0.010*“计划” + 0.009*“文件”’), (3, ‘0.043*“项目” + 0.024*“软件” + 0.023*“工作” + 0.016*“报告” + 0.016*“方法” + 0.014*“阶段” + 0.013*“活动” + 0.012*“估算” + 0.012*“计划” + 0.012*“过程”’), (4, ‘0.051*“仿真” + 0.035*“飞行器” + 0.033*“参数” + 0.026*“试验” + 0.023*“软件” + 0.021*“轨道” + 0.020*“追踪” + 0.017*“系统” + 0.013*“模型” + 0.013*“目标”’), (5, ‘0.057*“试验” + 0.028*“温度” + 0.020*“工作” + 0.020*“标准” + 0.019*“等级” + 0.015*“产品” + 0.015*“条件” + 0.015*“样品” + 0.013*“高度” + 0.010*“表面”’), (6, ‘0.046*“试验” + 0.028*“锂电池” + 0.017*“试样” + 0.016*“陀螺” + 0.015*“规范” + 0.015*“符合” + 0.013*“方法” + 0.011*“相关” + 0.010*“附录” + 0.010*“详细”’), (7, ‘0.013*“公差” + 0.011*“尺寸” + 0.010*“检验” + 0.010*“样品” + 0.010*“材料” + 0.010*“测试” + 0.010*“未注” + 0.008*“标准” + 0.007*“有效载荷” + 0.007*“生物”’), (8, ‘0.025*“润滑” + 0.013*“轴承” + 0.012*“试验” + 0.010*“文件” + 0.008*“设计” + 0.008*“测量” + 0.007*“标准” + 0.007*“固体” + 0.007*“单位” + 0.006*“润滑脂”’), (9, ‘0.008*“软件” + 0.007*“标准” + 0.006*“项目” + 0.005*“文件” + 0.005*“工作” + 0.005*“方法” + 0.004*“检验” + 0.004*“附录” + 0.004*“试验” + 0.004*“避雷器”’), (10, ‘0.028*“设备” + 0.024*“接地” + 0.018*“空间站” + 0.015*“搭接” + 0.014*“电阻” + 0.014*“舱体” + 0.013*“回线” + 0.013*“安装” + 0.011*“连接” + 0.011*“结构”’), (11, ‘0.057*“文件” + 0.018*“标准” + 0.016*“编号” + 0.014*“标准化” + 0.014*“内容” + 0.014*“示例” + 0.013*“要素” + 0.012*“引用” + 0.011*“附录” + 0.010*“给出”’), (12, ‘0.009*“文件” + 0.008*“试验” + 0.007*“项目” + 0.006*“软件” + 0.006*“标准” + 0.005*“方法” + 0.004*“测试” + 0.004*“测量” + 0.004*“相机” + 0.004*“工作”’)]
-1.769840536884153
[(0, ‘0.031*“标准” + 0.029*“偏差” + 0.027*“测量” + 0.018*“借用” + 0.018*“螺旋线” + 0.016*“样板” + 0.016*“单位” + 0.015*“弹簧” + 0.015*“渐开线” + 0.010*“仪器”’), (1, ‘0.008*“测试” + 0.007*“项目” + 0.006*“软件” + 0.005*“试验” + 0.005*“附录” + 0.005*“标准” + 0.005*“工作” + 0.004*“文件” + 0.004*“方法” + 0.004*“记录”’), (2, ‘0.040*“软件” + 0.030*“测试” + 0.018*“保证” + 0.013*“标准” + 0.013*“活动” + 0.012*“磁带” + 0.011*“计划” + 0.011*“记录” + 0.010*“设计” + 0.010*“文件”’), (3, ‘0.041*“项目” + 0.024*“软件” + 0.021*“工作” + 0.015*“报告” + 0.015*“方法” + 0.014*“阶段” + 0.013*“活动” + 0.011*“过程” + 0.011*“计划” + 0.011*“估算”’), (4, ‘0.055*“仿真” + 0.038*“飞行器” + 0.034*“参数” + 0.027*“试验” + 0.023*“轨道” + 0.023*“软件” + 0.021*“追踪” + 0.018*“系统” + 0.013*“目标” + 0.013*“模型”’), (5, ‘0.045*“试验” + 0.023*“标准” + 0.023*“产品” + 0.023*“等级” + 0.015*“表面” + 0.014*“质量” + 0.011*“试样” + 0.011*“机械” + 0.009*“评定” + 0.009*“条件”’), (6, ‘0.048*“试验” + 0.036*“锂电池” + 0.021*“试样” + 0.014*“规范” + 0.012*“附录” + 0.012*“方法” + 0.011*“符合” + 0.010*“陀螺” + 0.010*“相关” + 0.009*“单体”’), (7, ‘0.015*“检验” + 0.015*“样品” + 0.015*“材料” + 0.011*“天线” + 0.011*“生物” + 0.010*“玻璃纤维” + 0.010*“实验” + 0.009*“规范” + 0.009*“附录” + 0.009*“代号”’), (8, ‘0.023*“润滑” + 0.013*“试验” + 0.012*“轴承” + 0.010*“标准” + 0.009*“文件” + 0.008*“避雷器” + 0.008*“测量” + 0.007*“设计” + 0.007*“单位” + 0.006*“固体”’), (9, ‘0.009*“软件” + 0.008*“项目” + 0.007*“标准” + 0.006*“工作” + 0.005*“方法” + 0.004*“偏差” + 0.004*“文件” + 0.004*“阶段” + 0.004*“单位” + 0.004*“计划”’), (10, ‘0.027*“公差” + 0.020*“未注” + 0.020*“尺寸” + 0.017*“设备” + 0.014*“接地” + 0.011*“加工” + 0.011*“空间站” + 0.010*“表面” + 0.009*“搭接” + 0.009*“文件”’), (11, ‘0.058*“文件” + 0.019*“标准” + 0.016*“编号” + 0.015*“标准化” + 0.014*“内容” + 0.014*“示例” + 0.013*“要素” + 0.012*“引用” + 0.011*“附录” + 0.010*“给出”’), (12, ‘0.009*“文件” + 0.006*“项目” + 0.006*“软件” + 0.005*“标准” + 0.005*“试验” + 0.004*“材料” + 0.004*“方法” + 0.004*“测试” + 0.003*“引用” + 0.003*“一个”’), (13, ‘0.022*“试验” + 0.020*“测试” + 0.016*“软件” + 0.016*“工作” + 0.012*“温度” + 0.012*“标准” + 0.010*“附录” + 0.009*“项目” + 0.009*“设计” + 0.009*“设备”’)]
-2.364775357070355

可视化展示:
在这里插入图片描述

K-means实现

#参考博文:https://www.cnblogs.com/fengfenggirl/p/k-means.html

from __future__ import print_function

import os
import re

import jieba
from jieba._compat import xrange
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import HashingVectorizer
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans, MiniBatchKMeans

fdir=''#doc存放地址
print('文件总数量为{}'.format(len(os.listdir(fdir))))
stoppath=''#停用词存放地址
def loadDataset():
    '''导入文本数据集'''
    flist=os.listdir(fdir)
    dataset = []
    for fname in flist:
        f = open(fdir+'\\'+fname, 'r',encoding='utf_8')
        d=''
        for line in f.readlines():
            if line!='\n' and line!='':
                d+=line
        dataset.append(d)
        f.close()
    return dataset

#停用词建立
def buildSW():
    '''停用词的过滤'''
    typetxt = open(stoppath,encoding='utf_8')  # 停用词文档地址
    stoptexts = ['\u3000', '\n', ' ']  # 爬取的文本中未处理的特殊字符
    '''停用词库的建立'''
    for word in typetxt:
        word = word.strip()
        stoptexts.append(word)
    return stoptexts

#语料建立data_set=[doc1,doc2,...]
def buildWB(dataset,stoptexts):
    '''语料库的建立'''
    corpus=[]
    for i in range(0, len(dataset)):
        data = jieba.cut(dataset[i])  # 文本分词
        data_adj = ''
        delete_word = []
        for item in data:
            if item not in stoptexts:  # 停用词过滤
                # value=re.compile(r'^[0-9]+$')#去除数字
                value = re.compile(r'^[\u4e00-\u9fa5]{2,}$')  # 只匹配中文2字词以上
                if value.match(item):
                    data_adj += item + ' '
            else:
                delete_word.append(item)
        corpus.append(data_adj)  # 语料库建立完成
    # print(corpus)
    return corpus

def transform(dataset, n_features=1000):
    vectorizer = TfidfVectorizer(max_df=0.5, max_features=n_features, min_df=2, use_idf=True)
    X = vectorizer.fit_transform(dataset)
    return X, vectorizer


def train(X, vectorizer, true_k=10, minibatch=False, showLable=False):
    # 使用采样数据还是原始数据训练k-means,
    if minibatch:
        km = MiniBatchKMeans(n_clusters=true_k, init='k-means++', n_init=1,
                             init_size=1000, batch_size=1000, verbose=False)
    else:
        km = KMeans(n_clusters=true_k, init='k-means++', max_iter=300, n_init=1,
                    verbose=False)
    km.fit(X)
    if showLable:
        print("Top terms per cluster:")
        order_centroids = km.cluster_centers_.argsort()[:, ::-1]
        terms = vectorizer.get_feature_names()
        print(vectorizer.get_stop_words())
        for i in range(true_k):
            print("Cluster %d:" % i, end='')
            for ind in order_centroids[i, :10]:
                print(' %s' % terms[ind], end='')
            print()
    result = list(km.predict(X))
    print('Cluster distribution:')
    print(dict([(i, result.count(i)) for i in result]))
    return -km.score(X)

#测试在不同的聚类数设置下,可达到的效果
def test():
    '''测试选择最优参数'''
    dataset = loadDataset()
    print("%d documents" % len(dataset))
    X, vectorizer = transform(dataset, n_features=500)
    true_ks = []
    scores = []
    for i in xrange(3, 80, 1):
        score = train(X, vectorizer, true_k=i) / len(dataset)
        print(i, score)
        true_ks.append(i)
        scores.append(score)
    plt.figure(figsize=(8, 4))
    plt.plot(true_ks, scores, label="error", color="red", linewidth=1)
    plt.xlabel("n_features")
    plt.ylabel("error")
    plt.legend()
    plt.show()


def out():
    '''在最优参数下输出聚类结果'''
    dataset = loadDataset()
    stoptexts=buildSW()
    corpus=buildWB(dataset,stoptexts)

    X, vectorizer = transform(corpus, n_features=500)
    score = train(X, vectorizer, true_k=5,minibatch=True, showLable=True) / len(dataset)
    print(score)


# test()
out()

LDA代码实现

#参考博客:https://blog.csdn.net/weixin_41168304/article/details/122389948


from __future__ import print_function

import os
import re
from multiprocessing import freeze_support

import jieba
from jieba._compat import xrange
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import HashingVectorizer
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans, MiniBatchKMeans

fdir=''#doc文件夹地址
print('文件总数量为{}'.format(len(os.listdir(fdir))))
stoppath=''#停用词存放位置

#加载数据,数据为[[],[]],二元列表,每个子列表存放每个文件分词后得到的列表
class DataLoad:
    def __init__(self):
        pass
    #将文件内容存储在dataset列表中,每个元素是一篇文件
    def loadDataset(self):
        '''导入文本数据集'''
        flist=os.listdir(fdir)
        dataset = []
        for fname in flist:
            f = open(fdir+'\\'+fname, 'r',encoding='utf_8')
            d=''
            for line in f.readlines():
                if line!='\n' and line!='':
                    d+=line
            dataset.append(d)
            f.close()
        return dataset

    #建立停用词文件
    def buildSW(self):
        '''停用词的过滤'''
        typetxt = open(stoppath,encoding='utf_8')  # 停用词文档地址
        stoptexts = ['\u3000', '\n', ' ']  # 爬取的文本中未处理的特殊字符
        '''停用词库的建立'''
        for word in typetxt:
            word = word.strip()
            stoptexts.append(word)
        return stoptexts

    #文件分词,存储在二元列表中,每个子列表是一篇文档
    def buildWB(self,dataset,stoptexts):
        '''语料库的建立'''
        corpus=[]
        for i in range(0, len(dataset)):
            data = jieba.cut(dataset[i])  # 文本分词
            data_adj =[]
            delete_word = []
            for item in data:
                if item not in stoptexts:  # 停用词过滤
                    # value=re.compile(r'^[0-9]+$')#去除数字
                    value = re.compile(r'^[\u4e00-\u9fa5]{2,}$')  # 只匹配中文2字词以上
                    if value.match(item):
                        data_adj.append(item)
                else:
                    delete_word.append(item)
            corpus.append(data_adj)  # 语料库建立完成
        # print(corpus)
        return corpus

Data=DataLoad()
dataset = Data.loadDataset()
stoptexts=Data.buildSW()
data_set=Data.buildWB(dataset,stoptexts)
print('data_set',data_set[:3])
print('data_set的长度是',len(data_set))



#----------------LDA模型-------------------------

import gensim
from gensim import corpora
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import warnings

warnings.filterwarnings('ignore')  # To ignore all warnings that arise here to enhance clarity

from gensim.models.coherencemodel import CoherenceModel
from gensim.models.ldamodel import LdaModel

#   构建词典,语料向量化表示
dictionary = corpora.Dictionary(data_set)  # 构建词典
corpus = [dictionary.doc2bow(text) for text in data_set]  #表示为第几个单词出现了几次

num_topics=10
passes=3

ldamodel = LdaModel(corpus, num_topics=num_topics, id2word = dictionary, passes=passes,random_state = 1)   #分为10个主题
print('每个主题输出15个单词')
print(ldamodel.print_topics(num_topics=num_topics, num_words=15))  #每个主题输出15个单词
#计算困惑度
def perplexity(num_topics):
    ldamodel = LdaModel(corpus, num_topics=num_topics, id2word = dictionary, passes=passes)
    print(ldamodel.print_topics(num_topics=num_topics, num_words=15))
    print(ldamodel.log_perplexity(corpus))
    return ldamodel.log_perplexity(corpus)
#计算coherence
def coherence(num_topics):
    ldamodel = LdaModel(corpus, num_topics=num_topics, id2word = dictionary, passes=passes,random_state = 1)
    print(ldamodel.print_topics(num_topics=num_topics, num_words=10))
    ldacm = CoherenceModel(model=ldamodel, texts=data_set, dictionary=dictionary, coherence='u_mass')
    print(ldacm.get_coherence())
    return ldacm.get_coherence()

if __name__ == '__main__':
    freeze_support()
    #绘制主题-coherence曲线,选择最佳主题数
    x = range(1,15)
    # z = [perplexity(i) for i in x]  #如果想用困惑度就选这个
    y = [coherence(i) for i in x]
    plt.plot(x, y)
    plt.xlabel('主题数目')
    plt.ylabel('coherence大小')
    plt.rcParams['font.sans-serif']=['SimHei']
    matplotlib.rcParams['axes.unicode_minus']=False
    plt.title('主题-coherence变化情况')
    plt.show()


    import pyLDAvis.gensim
    # pyLDAvis.enable_notebook()#如果是在笔记本中,取消注释
    data = pyLDAvis.gensim.prepare(ldamodel, corpus, dictionary)
    pyLDAvis.save_html(data, 'topic.html')

地址

项目本机地址:E:\python project\pythonProject_draftKG\主题聚类
项目git地址:git

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YingJingh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值