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

 

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

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

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

100e0b35b43b42388260816d70164f73.png

公主号:captain_data

 

 

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

d8718ad5bcce4c9ab0583e3c12cd2432.jpeg

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

f00503082aaf49ec83c4b763b8d5511f.png拿到课程数据后:

 

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

76b8d07991d84f0d8ecddb0a896750fa.png

 

 

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

先上结论:

475c87ab0ed048658559009a60ac50a3.jpeg

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

1cb915cec78a4772a0f52d23ce672575.png

 

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

518315f6217d4df49f210835107c7698.png

 第二步:读取文本数据:

在读取文本数据前,先导入本次分析要用到的几个包:具体为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_fileslearn_data.txt','r',encoding='utf8') as f:
    txt=f.read()

读取后结果如下:

81fc7d8693f444c68f1fab565c6cfde2.png第三步:简单清洗

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

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

804e4764334e428486ec19ae85ea0f1d.png

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

 

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)

 结果:21c7b110cfe742e49ed10bd0d35a6225.png

 完整代码在此:

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_fileslearn_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)

 

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>