因为需要对文件的主题,做聚类分析,得到本体或者文件所属类别,尝试了现有的两种非常常用的聚类手段,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 [['载人', '航天', '工程', '专项', '标准', '载人', '航天', '工程', '有效载荷', '生物', '通用', '发布', '实施', '中国', '载人', '航天', '工程', '办公室', '批准', '前言', '标准', '附录', '资料性', '附录', '标准'], ['中国', '载人', '航天', '工程', '办公室', '提出', '标准', '载人', '航天', '工程', '标准化', '管理', '咨询中心', '归口', '标准', '起草', '单位', '飞行', '动物', '植物', '实验', '样品', '飞行', '确认', '实验', '样品', '包含', '生物', '危害', '凡不注', '日期', '版次', '引用', '文件', '最新', '版本', '于本', '标准', '工作', '场所', '物理', '因素', '测量', '紫外', '辐射'],[ '声学', '测量', '常用', '频率', '声学', '倍频程', '分数', '安装', '到位', '测量', '接地', '电阻', '满足要求', '设备', '自带', '接地', '螺钉', '涂胶', '拧紧', '设备', '优先', '安装', '面来', '接地', '电阻', '满足要求', '轻微', '打磨', '设备', '支架', '安装', '方法', '加以解决', '搭接', '设备', '舱体', '安装', '打磨', '安装', '安装', '后应', '实测']]
每个主题输出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
#参考博文: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()
#参考博客: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