分词模型与关键字提取——当下最热的学习资料是什么?

Posted Captain_Data

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分词模型与关键字提取——当下最热的学习资料是什么?相关的知识,希望对你有一定的参考价值。

 

写在前面:本文数据与教程已打包放在此有需要可以点击下载:点我下载

分词技术与全网最全it学习教程资料-自然语言处理文档类资源-CSDN下载

关注本账号获取最新资料~

公主号:captain_data

 

 

起因是我在朋友圈看到某位大牛在转让他的课程,正好最近也在学习,于是去咨询了一下,价格还好,于是就买下了

 我看了一下,客课程确实丰富,某勾、某马、某内、某硅谷课程应有尽有,开心疯了~

拿到课程数据后:

 

看了一下里面的课程资料,表格整理的是470个,底部还有零散整理的,初步估算超过500个学习资源~

 

 

下面就分析一下这个包里头都有啥:

先上结论:

 该份资料龙里头主要关键字如下,关键字:‘数据’排名第一:

 

第一步:将文档中数据粘贴到文本中(数据确实太多,用表格存不方便)

 第二步:读取文本数据:

在读取文本数据前,先导入本次分析要用到的几个包:具体为jieba 分词和词云包

import jieba
# import jieba.posseg as jp  #lcut  cut 分词,获取词性   i.flag 词性 ,i.word 词
# import jieba.posseg as
import jieba.posseg as jp, jieba
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import datetime
from  gensim  import  corpora, models
import warnings
warnings.filterwarnings("ignore")
# jieba.set_dictionary("./in_files/dict.txt")  ## //指定dict.txt加载路径,为了方便部署,使用相对路径。
# # jieba.initialize()

读取文本数据:

with open(r'.\\in_files\\learn_data.txt','r',encoding='utf8') as f:
    txt=f.read()

读取后结果如下:

第三步:简单清洗

可以看到,很多换行符“\\n   \\t”等,于是我们用replace方法清洗一下~

txt=txt.replace("\\n","").replace("\\t","")

第四步:分词并去除停用词,设置词云与词频规格

 

stopwords=pd.read_table("in_files/stopwords.txt", index_col=False, quoting=3, names=['stopword'], encoding="utf-8")
w_st_2_str_list=[w  for w in jieba.lcut(txt) if w not in stopwords.values ]
w_st_2_str_list_clean=[i for i in w_st_2_str_list if len(i)>1 and i!='nan'] #词·频格式
# w_st_2_str_list_clean
# w_st_2_str_list_clean
word_cloud_new=" ".join(w_st_2_str_list_clean)# 词云格式

第五步:调用词云与词频统计代码,直接统计关键字的数量与频率

在这块导出使用了一个时间命名函数,防止名称重复~


# w_st_2_str_list_clean=


def path_name_time():
    global path_nameTime
    timestr = datetime.datetime.now().strftime('%Y%m%d%H%M%S')  ###生成当下的时间
    path_nameTime = timestr
#     os.mkdir('out/汇总数据/' + path_nameTime)
#     os.mkdir('out/清洗数据/' + path_nameTime)
    return timestr



print("--开始词频统计--")
bow_model=corpora.Dictionary([w_st_2_str_list_clean])  
arr_count=np.array(list(bow_model.doc2bow(w_st_2_str_list_clean)))[:,1]
arr_keys=np.array(list(bow_model.items()))
df_bow=pd.DataFrame(arr_keys,columns=['num','keywords'])
df_bow['count_times']=arr_count

print("--开始抽取关键字--")
tfidf = TfidfVectorizer(smooth_idf=True,norm='l1')
d= tfidf.fit_transform([word_cloud_new]) #" ".join(ciyun_ci)
TF_result = pd.DataFrame(d.toarray())
TF_result.columns = tfidf.get_feature_names()
TF_result_T=TF_result.T
TF_result_T.columns=['times_p']
TF_result_T['keywords']=TF_result_T.index
# TF_result_T['times']=TF_result_T['times_p']*(len(TF_result_T))

col_index=['keywords','count_times','times_p']
file_name='./result/TF_result_T'+path_name_time()

TF_result_T=TF_result_T.merge(df_bow, on='keywords', how='left')
TF_result_T=TF_result_T[col_index]
print("--开始排序导出--")
TF_result_T.sort_values(by='count_times',ascending=False,inplace=True)
TF_result_T.to_excel(file_name+ '.xlsx',index=False)



## 词云
print('--生成词云图ing--')
ciyun_obj = WordCloud(font_path='simhei.ttf',width=600,height=200,max_font_size=80,min_font_size=10,max_words=100,collocations = False,  background_color='white',mask=plt.imread('in_files/tt.jpg'))
ciyun_obj.generate(word_cloud_new) #生成指定的词云图
plt.figure(dpi=150) #词云图缩放比例
plt.imshow(ciyun_obj)  #显示词云图
plt.axis('off') #去掉坐标轴
ciyun_obj.to_file(file_name+".jpg") #保存词云
print('--导出关键字文件名为:', file_name)

 结果:

 完整代码在此:

import jieba
# import jieba.posseg as jp  #lcut  cut 分词,获取词性   i.flag 词性 ,i.word 词
# import jieba.posseg as
import jieba.posseg as jp, jieba
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import datetime
from  gensim  import  corpora, models
import warnings
warnings.filterwarnings("ignore")
# jieba.set_dictionary("./in_files/dict.txt")  ## //指定dict.txt加载路径,为了方便部署,使用相对路径。
# # jieba.initialize()


with open(r'.\\in_files\\learn_data.txt','r',encoding='utf8') as f:
    txt=f.read()   #公主号:captain_data
    
txt=txt.replace("\\n","").replace("\\t","")  #公主号:captain_data

stopwords=pd.read_table("in_files/stopwords.txt", index_col=False, quoting=3, names=['stopword'], encoding="utf-8")
w_st_2_str_list=[w  for w in jieba.lcut(txt) if w not in stopwords.values ]
w_st_2_str_list_clean=[i for i in w_st_2_str_list if len(i)>1 and i!='nan'] #词·频格式
# w_st_2_str_list_clean
# w_st_2_str_list_clean
word_cloud_new=" ".join(w_st_2_str_list_clean)# 词云格式


# w_st_2_str_list_clean=


def path_name_time():
    global path_nameTime
    timestr = datetime.datetime.now().strftime('%Y%m%d%H%M%S')  ###生成当下的时间
    path_nameTime = timestr
#     os.mkdir('out/汇总数据/' + path_nameTime)
#     os.mkdir('out/清洗数据/' + path_nameTime)
    return timestr



print("--开始词频统计--")
bow_model=corpora.Dictionary([w_st_2_str_list_clean])  
arr_count=np.array(list(bow_model.doc2bow(w_st_2_str_list_clean)))[:,1]
arr_keys=np.array(list(bow_model.items()))
df_bow=pd.DataFrame(arr_keys,columns=['num','keywords'])
df_bow['count_times']=arr_count

print("--开始抽取关键字--")
tfidf = TfidfVectorizer(smooth_idf=True,norm='l1')
d= tfidf.fit_transform([word_cloud_new]) #" ".join(ciyun_ci)
TF_result = pd.DataFrame(d.toarray())
TF_result.columns = tfidf.get_feature_names()
TF_result_T=TF_result.T
TF_result_T.columns=['times_p']
TF_result_T['keywords']=TF_result_T.index
# TF_result_T['times']=TF_result_T['times_p']*(len(TF_result_T))

col_index=['keywords','count_times','times_p']
file_name='./result/TF_result_T'+path_name_time()

TF_result_T=TF_result_T.merge(df_bow, on='keywords', how='left')
TF_result_T=TF_result_T[col_index]
print("--开始排序导出--")
TF_result_T.sort_values(by='count_times',ascending=False,inplace=True)
TF_result_T.to_excel(file_name+ '.xlsx',index=False)



## 词云
print('--生成词云图ing--')
ciyun_obj = WordCloud(font_path='simhei.ttf',width=600,height=200,max_font_size=80,min_font_size=10,max_words=100,collocations = False,  background_color='white',mask=plt.imread('in_files/tt.jpg'))
ciyun_obj.generate(word_cloud_new) #生成指定的词云图
plt.figure(dpi=150) #词云图缩放比例
plt.imshow(ciyun_obj)  #显示词云图
plt.axis('off') #去掉坐标轴
ciyun_obj.to_file(file_name+".jpg") #保存词云
print('--导出关键字文件名为:', file_name)

 

 

以上是关于分词模型与关键字提取——当下最热的学习资料是什么?的主要内容,如果未能解决你的问题,请参考以下文章

最热的前端Web组态工具(可视化)

元宇宙的当下与未来

五款最热的Node.js端到端测试框架评测

5 月份最热的 GitHub 项目

React作为时下最热的前端框架,各位有啥经验分享下吗

用python+selenium抓取知乎今日最热和本月最热的前三个问题及每个问题的首个回答并保存至html文件