tf-idf+lda分析多篇文章摘要

news2025/1/26 15:46:21
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#import seaborn as sns
plt.rcParams['font.sans-serif'] = ['KaiTi']  #指定默认字体 SimHei黑体
plt.rcParams['axes.unicode_minus'] = False   #解决保存图像是负号'
import jieba
import os
# stop_list  = pd.read_csv("停用词.txt",index_col=False,quoting=3,sep="\t",names=['stopword'], encoding='utf-8')
df = pd.read_csv('软件项目风险管理论文.csv', encoding='utf-8')
df
主题摘要
0浅谈软件项目管理中的成本效益和收益管理软件项目实施的主要目标就是实现经济效益。在软件项目管理过程中,必须对所要研发的软件开展经济学...
1J公司用户中心系统项目风险管理研究随着社会环境的变化,项目风险管理的重要性日渐凸显,特别是软件项目,这类项目大多迭代快,在这过...
2敏捷软件项目风险管理探析在敏捷实践中敏捷方法有利于降低项目风险,但它们通常不足以应对在某些场景(例如在高度规范的领域...
3B公司A软件项目风险管理近年来,软件产品市场高速发展,信息安全也越来越被大家所关注,SM(国家涉密信息)软件行业更是...
4S公司敏捷开发互联网软件项目的风险管理随着科技的不断进步发展,信息技术发展至今已经非常成熟,其已经被广泛用于各行各业当中。为顺应时...
.........
592长沙软件园有限公司项目管理成熟度评价研究长沙软件园有限公司具体负责长沙国家软件产业基地的专业基础设施、软件开发环境建设及技术创新运营...
593基于3G技术的“移动勘险”项目管理研究随着世界移动互联网及物联网、云计算技术的发展,3G技术的优势得到了充分的发挥。智能手机的普及...
594软件项目风险管理之探索随着IT科技的飞速发展,软件项目的风险管理成为项目实施成功与否的重要环节。该文通过风险计划编...
595软件项目风险管理过程探析软件项目风险管理是一个基于过程的管理。是对整个项目生命周期内可能遇到的风险进行预测、识别、分...
596SG公司人力资源管理信息系统开发项目的进度计划与控制研究随着现代信息技术的发展,信息化管理软件逐渐成为现代企业提高效率、增加效益不可或缺的必要工具与...

597 rows × 2 columns

#Jieba分词函数

def IsChinese(character):
    '''判断是否为中文字符'''
    for cha in character:
        if not '\u0e00' <= cha <= '\u9fa5':
            return False
    else:
        return True
        
jieba.load_userdict('no_split.txt')
key_words = set()
with open('no_split.txt', encoding='utf-8') as f:
    for line in f:
        l = line.strip()
        if l:
            key_words.add(l)
print('key_words', len(key_words))
stop_list = []
def txt_cut(juzi):
    # lis=[w for w in jieba.cut(juzi) if w not in stop_list]
    # lis=[w for w in jieba.cut(juzi) if IsChinese(w)]
    lis=[w for w in jieba.cut(juzi) if w in key_words]
    return (" ").join(lis)

df['cutword']=df['摘要'].astype('str').apply(txt_cut)
df
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\wangkai\AppData\Local\Temp\jieba.cache
Loading model cost 0.718 seconds.
Prefix dict has been built successfully.


key_words 362
主题摘要cutword
0浅谈软件项目管理中的成本效益和收益管理软件项目实施的主要目标就是实现经济效益。在软件项目管理过程中,必须对所要研发的软件开展经济学...
1J公司用户中心系统项目风险管理研究随着社会环境的变化,项目风险管理的重要性日渐凸显,特别是软件项目,这类项目大多迭代快,在这过...项目风险 项目风险 项目风险 项目风险 项目风险 客户需求不明确 项目风险 沟通风险 项目风险
2敏捷软件项目风险管理探析在敏捷实践中敏捷方法有利于降低项目风险,但它们通常不足以应对在某些场景(例如在高度规范的领域...项目风险 项目风险 项目风险 项目风险 项目风险
3B公司A软件项目风险管理近年来,软件产品市场高速发展,信息安全也越来越被大家所关注,SM(国家涉密信息)软件行业更是...需求风险 技术风险 人员风险 管理风险 需求风险 技术风险 人员风险 管理风险 需求风险 需...
4S公司敏捷开发互联网软件项目的风险管理随着科技的不断进步发展,信息技术发展至今已经非常成熟,其已经被广泛用于各行各业当中。为顺应时...项目风险 开发风险 开发风险
............
592长沙软件园有限公司项目管理成熟度评价研究长沙软件园有限公司具体负责长沙国家软件产业基地的专业基础设施、软件开发环境建设及技术创新运营...
593基于3G技术的“移动勘险”项目管理研究随着世界移动互联网及物联网、云计算技术的发展,3G技术的优势得到了充分的发挥。智能手机的普及...
594软件项目风险管理之探索随着IT科技的飞速发展,软件项目的风险管理成为项目实施成功与否的重要环节。该文通过风险计划编...项目风险
595软件项目风险管理过程探析软件项目风险管理是一个基于过程的管理。是对整个项目生命周期内可能遇到的风险进行预测、识别、分...项目风险 项目风险 项目风险
596SG公司人力资源管理信息系统开发项目的进度计划与控制研究随着现代信息技术的发展,信息化管理软件逐渐成为现代企业提高效率、增加效益不可或缺的必要工具与...

597 rows × 3 columns

import jieba.analyse
text = ''
for i in range(len(df['cutword'])):
    text += df['cutword'][i]+'\n'
jieba.analyse.extract_tags(text,topK=20,withWeight=True)
[('项目风险', 8.96327305713358),
 ('需求变更', 0.434584893820764),
 ('需求风险', 0.3314630546090573),
 ('技术风险', 0.32409720895107824),
 ('管理风险', 0.287267980661183),
 ('开发风险', 0.15468275881756008),
 ('人力资源风险', 0.147316913159581),
 ('过程风险', 0.13258522184362292),
 ('人员风险', 0.11048768486968576),
 ('沟通风险', 0.08102430223776956),
 ('项目管理风险', 0.0736584565797905),
 ('成本超支', 0.058926765263832406),
 ('进度延期', 0.05156091960585336),
 ('成本风险', 0.05156091960585336),
 ('组织风险', 0.05156091960585336),
 ('技术复杂', 0.03682922828989525),
 ('团队风险', 0.029463382631916203),
 ('市场变化', 0.029463382631916203),
 ('业务风险', 0.029463382631916203),
 ('项目范围变更', 0.029463382631916203)]
from sklearn.feature_extraction.text import  CountVectorizer,TfidfVectorizer
from sklearn.decomposition import LatentDirichletAllocation
tf_vectorizer = TfidfVectorizer()
#tf_vectorizer = TfidfVectorizer(ngram_range=(2,2)) #2元词袋
X = tf_vectorizer.fit_transform(df.cutword)
#print(tf_vectorizer.get_feature_names_out())
print(X.shape)
(597, 54)
data1 = {'word': tf_vectorizer.get_feature_names(),
        'tfidf': X.toarray().sum(axis=0).tolist()}
df1 = pd.DataFrame(data1).sort_values(by="tfidf" ,ascending=False,ignore_index=True) 
df1.head(50)
wordtfidf
0项目风险263.114700
1技术风险13.927242
2管理风险13.047944
3需求风险12.544134
4需求变更11.912484
5开发风险9.081740
6过程风险7.930715
7人力资源风险6.603049
8人员风险5.521073
9成本超支4.871734
10进度延期4.674772
11项目管理风险4.631457
12沟通风险3.740801
13技术复杂3.349597
14组织风险2.778550
15业务风险2.626922
16市场变化2.390404
17市场风险2.340672
18成本风险2.089939
19团队风险1.915098
20沟通不畅1.903461
21合同风险1.551550
22项目范围变更1.485818
23需求变更频繁1.468582
24项目范围风险1.464663
25开发环境风险1.295113
26更新风险1.288034
27风险管理风险1.173554
28开发效率低1.000000
29员工流失1.000000
30用户风险0.988988
31运营风险0.970427
32产品风险0.892363
33管理层不支持0.859065
34用户需求变化0.836008
35范围变更0.728814
36设计不合理0.707107
37工作效率低0.707107
38项目质量风险0.686501
39时间风险0.662809
40产品性能不足0.650848
41需求不明确或不完整0.640246
42管理能力不足0.626602
43组织管理风险0.612870
44需求不明确0.557005
45新技术的使用0.531023
46使用新技术0.495843
47设计和实现风险0.479658
48计划编制风险0.479658
49客户需求不明确0.463192
n_topics = 4  #分为10类
lda = LatentDirichletAllocation(n_topics=n_topics, max_iter=100,
                                learning_method='batch',
                                learning_offset=100,
#                                 doc_topic_prior=0.1,
#                                 topic_word_prior=0.01,
                               random_state=0)
lda.fit(X)
LatentDirichletAllocation(batch_size=128, doc_topic_prior=None,
             evaluate_every=-1, learning_decay=0.7,
             learning_method='batch', learning_offset=100,
             max_doc_update_iter=100, max_iter=100, mean_change_tol=0.001,
             n_jobs=1, n_topics=4, perp_tol=0.1, random_state=0,
             topic_word_prior=None, total_samples=1000000.0, verbose=0)
def print_top_words(model, feature_names, n_top_words):
    tword = []
    tword2 = []
    tword3=[]
    for topic_idx, topic in enumerate(model.components_):
        print("Topic #%d:" % topic_idx)
        topic_w = [feature_names[i] for i in topic.argsort()[:-n_top_words - 1:-1]]
        topic_pro=[str(round(topic[i],3)) for i in topic.argsort()[:-n_top_words - 1:-1]]  #(round(topic[i],3))
        tword.append(topic_w) 
        tword2.append(topic_pro)
        print(" ".join(topic_w))
        print(" ".join(topic_pro))
        print(' ')
        word_pro=dict(zip(topic_w,topic_pro))
        tword3.append(word_pro)
    return tword3
##输出每个主题对应词语和概率
n_top_words = 20
feature_names = tf_vectorizer.get_feature_names()
word_pro = print_top_words(lda, feature_names, n_top_words)
Topic #0:
技术复杂 业务风险 项目范围风险 需求变更频繁 开发效率低 产品性能不足 市场变化 新技术的使用 技术复杂性 项目风险 成本风险 技术风险 开发团队成员缺乏经验 市场风险 成本超支 风险管理风险 开发风险 管理能力不足 需求变更 组织风险
3.597 2.873 1.711 1.709 1.25 0.9 0.819 0.774 0.651 0.262 0.26 0.255 0.254 0.254 0.254 0.253 0.253 0.253 0.253 0.253
 
Topic #1:
人力资源风险 成本超支 进度延期 沟通风险 需求变更 市场变化 合同风险 项目范围变更 员工流失 运营风险 范围变更 工作效率低 设计不合理 需求不明确 客户需求不明确 技术变更 项目管理风险 项目风险 风险管理风险 技术风险
6.841 5.112 4.924 3.985 2.472 2.07 1.793 1.735 1.249 1.219 0.978 0.957 0.957 0.799 0.708 0.598 0.274 0.263 0.261 0.255
 
Topic #2:
项目风险 开发风险 市场风险 组织风险 更新风险 风险管理风险 需求不明确或不完整 管理能力不足 开发团队成员缺乏经验 技术复杂性 项目管理风险 客户需求不明确 技术风险 新技术的使用 成本风险 管理风险 成本超支 用户风险 使用新技术 人员风险
263.321 9.299 2.221 1.816 1.534 1.392 0.886 0.871 0.648 0.256 0.255 0.254 0.253 0.253 0.253 0.253 0.253 0.253 0.252 0.252
 
Topic #3:
技术风险 管理风险 需求风险 需求变更 过程风险 人员风险 项目管理风险 成本风险 团队风险 沟通不畅 开发环境风险 组织风险 用户风险 产品风险 管理层不支持 用户需求变化 项目质量风险 时间风险 组织管理风险 使用新技术
14.164 13.29 12.788 9.937 8.176 5.766 4.851 2.325 2.164 2.151 1.544 1.458 1.235 1.14 1.108 1.084 0.934 0.911 0.86 0.741

#输出每篇文章对应主题
topics=lda.transform(X)
topic=np.argmax(topics,axis=1)
df['topic']=topic
#df.to_excel("data_topic.xlsx",index=False)
print(topics.shape)
print(topics[0])
topic[0]
(597, 4)
[0.25 0.25 0.25 0.25]





0
import random   #定义随机生成颜色函数
def randomcolor():
    colorArr = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    color ="#"+''.join([random.choice(colorArr) for i in range(6)])
    return color
[randomcolor() for i in range(3)]
['#3149B8', '#A4E22C', '#2BE6D5']
from collections import Counter
from wordcloud import WordCloud
from matplotlib import colors
#from imageio import imread    #形状设置
#mask = imread('爱心.png')  
 
def generate_wordcloud(tup):
    color_list=[randomcolor() for i in range(10)]  #随机生成10个颜色
    wordcloud = WordCloud(background_color='white',font_path='simhei.ttf',#mask = mask, #形状设置
                          max_words=20, max_font_size=50,random_state=42,
                          colormap=colors.ListedColormap(color_list)       #颜色
                          ).generate(str(tup))
    return wordcloud
dis_cols = 4                  #一行几个
dis_rows = 3
dis_wordnum=20
plt.figure(figsize=(5 * dis_cols, 5 * dis_rows),dpi=128)
kind=len(df['topic'].unique())
 
for i in range(kind):
    ax=plt.subplot(dis_rows,dis_cols,i+1)
    most10 = [ (k,float(v)) for k,v in word_pro[i].items()][:dis_wordnum]  #高频词
    ax.imshow(generate_wordcloud(most10), interpolation="bilinear")
    ax.axis('off')
    ax.set_title("第{}类话题 前{}词汇".format(i,dis_wordnum), fontsize=30)
plt.tight_layout()
plt.show()

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ的介绍和安装

文章目录 1.1 RabbitMQ介绍1.2 RabbitMQ的安装1.2.1 下载镜像1.2.2 安装启动1.2.3 测试 1.1 RabbitMQ介绍 RabbitMQ是一个开源的消息队列中间件&#xff0c;可以用于构建分布式应用程序&#xff0c;使应用程序能够快速、可靠地处理大量消息。它实现了AMQP&#xff08;高级消息队…

Vue安装脚手架 vue-cli

Vue 脚手架是 Vue 官方提供的标准化开发工具&#xff08;开发平台&#xff09; 在安装脚手架之前我们还需要安装 Node.JS 和 npm 全局安装 vue-cli 【初次安装】: 首先打开命令行 输入 npm install -g vue/cli 再按回车键 安装脚手架 安装命令行&#xff1a; npm install …

多层LCP技术的毫米波段超宽带槽天线设计

1、引言 无线宽带通信的迅猛发展需要能传输高比特率的新型宽带天线。毫米波段是短距离高比特率无线通信的重要波段。所以近年来&#xff0c;毫米波段小型高性能的超宽带天线吸引了大量的研究人员在这方面进行研究工作。 天线设计的另一个重要趋势是集成天线的射频前端电路。在…

Linux/Unix编写sh脚本,设置开机自动启动脚本在linux下

1编写.sh脚本的基本步骤&#xff1a; 创建一个新的文本文件&#xff0c;使用一个文本编辑器&#xff0c;比如vi或nano&#xff0c;来编写脚本。你需要保存文件为.sh扩展名&#xff0c;以便让系统知道这是一个shell脚本文件。 touch myprogram.sh #!/bin/sh# 进入C程序所在目…

基于JAVA的网络通讯系统设计与实现

一般来说&#xff0c;聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成&#xff0c;本系统采用客户机/服务器架构模式&#xff0c;通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信&#xff0c;由于聊天是多点对多…

HTB-Cascade

HTB-Cascade 信息收集立足s.smith -> arksvc使用脚本获取CascAudit.exe加密的密码明文修改IL指令获取 arksvc -> administrator 信息收集 查看smbclient。 rpcclient空密码连接并收集信息。 收集到用户列表&#xff0c;此外没有有意思的信息。 CascGuest arksvc s.smi…

Qt/QML编程学习之心得:二进制兼容、私有实现及Q_D/Q_Q指针(三)

QML画好或说描述好界面之后,实现部分通过C++实现,Qt采用了私有实现的设计模式解决了二进制兼容的问题。 二进制兼容问题描述: 现在有一个Widget, 包含一个私有成员变量m_geometry ,编译 Widget 并且发布为MyWidgetLib 1.0 。该应用程序名字为TestAPP,基于 Qt 4.9。 cla…

【Linux网络服务】Linux网络设置

一、查看网络配置 1.1ifconfig 1.2ip a 1.3什么是mtu 最大传输单元MTU&#xff0c;是指网络能够传输的最大数据包大小&#xff0c;以字节为单位。MTU的大小决定了发送端一次能够发送报文的最大字节数。如果MTU超过了接收端所能够承受的最大值&#xff0c;或者是超过了发送路径…

异步爬虫的原理和解析

我们知道爬虫是 IO 密集型任务&#xff0c;比如如果我们使用 requests 库来爬取某个站点的话&#xff0c;发出一个请求之后&#xff0c;程序必须要等待网站返回响应之后才能接着运行&#xff0c;而在等待响应的过程中&#xff0c;整个爬虫程序是一直在等待的&#xff0c;实际上…

焦虑症会出现哪些问题 什么因素导致的焦虑症

当说起焦虑症&#xff0c;大多数人想到的就是植物神经紊乱&#xff0c;确实&#xff0c;这两种疾病是非常容易混淆的&#xff0c;甚至很多时候植物神经紊乱都会当做焦虑症进行治疗&#xff0c;虽然这种疾病大多效果不会太理想。 你们知道什么是焦虑症吗&#xff1f; 很多人当出…

Android ProtoLog动态开启相关wm logging源码分析补充

Android ProtoLog动态开启相关wm logging源码分析补充 针对上一节已经清楚了相关的代码中怎么可以打印到logcat中&#xff0c;其实本质上还就是protologtool这个工具对代码中的所有ProtoLog进行了相关的替换成了具体实现&#xff0c;最后会条件判断输出到Slog中 本文就重点来看…

【池化方法】多示例学习池化(MIL pooling)公式与代码

一般的池化方法包括最大池化、平均池化、自适应池化与随机池化&#xff0c;这几天意外看到了多示例学习池化&#xff0c;感觉挺有意思的&#xff0c;记录一下。   论文   代码 1. 多示例学习&#xff08;Multiple instance learning&#xff0c;MIL&#xff09; 经典深度学…

梯度下降算法原理详解及MATLAB程序代码(最简单)

模型就是线性规划及线性规划的对偶理论&#xff0c;单纯形法以及它的实际应用&#xff1a;整数规划及其解法(分支定界法、割平面法匈牙利算法Q)&#xff0c;目标规划&#xff0c;非线性规划动态规划、决策分析等等。 其它的一些优化算法。比如说一维搜索里面的黄金分割法、加步…

PostMan笔记(二)发送请求

1. 发送请求功能介绍 Postman是一款流行的API开发工具&#xff0c;它可以让开发人员更方便地测试、调试和使用API。其中&#xff0c;发送请求功能是Postman最为重要和基础的功能之一。 在Postman中&#xff0c;发送请求功能主要包括以下几个步骤&#xff1a; 选择请求方法&am…

数据分析时,进行数据建模该如何筛选关键特征?

1.为什么要做关键特征筛选&#xff1f; 在数据量与日俱增的时代&#xff0c;我们收集到的数据越来越多&#xff0c;能运用到数据分析挖掘的数据也逐渐丰富起来&#xff0c;但同时&#xff0c;我们也面临着如何从庞大的数据中筛选出与我们业务息息相关的数据。&#xff08;大背景…

Java的对象克隆

本节我们会讨论 Cloneable 接口&#xff0c;这个接口指示一个类提供了一个安全的 clone() 方法。 Object 类提供的 clone() 方法是 “浅拷贝”&#xff0c;并没有克隆对象中引用的其他对象&#xff0c;原对象和克隆的对象仍然会共享一些信息。深拷贝指的是&#xff1a;在对象中…

微服务---一篇学完SpringCloud

SpringCloud 1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff1a…

java企业级信息系统开发学习笔记06基于xml配置方式使用Spring MVC

文章目录 一、学习目标二、Spring MVC概述1、MVC架构2、Spirng MVC3、使用Spring MVC的两种方式 三、基于xml配置与注解的方式使用Spring MVC&#xff08;一&#xff09;创建Maven项目&#xff08;二&#xff09;添加相关依赖&#xff08;三&#xff09;给项目添加Web功能&…

SpringMVC表格提交中文乱码和配置logback

最佳解决方案还是使用Spring提供的过滤器&#xff0c;将其配置到WEB.XML文件中&#xff1a; <filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class&g…

nginx部署VUE项目

前言 目前公司的前端代码基本都是部署在nginx下&#xff0c;特此来记录一下 开发环境&#xff1a;window10 nginx环境搭建&#xff08;参考下方文章&#xff09; window环境安装 mac环境安装 本地我将nginx放置于F盘 前端项目打包 一个nginx服务下可能会放置多个前端包&…