|
/ \. Z, E5 o$ X% |8 B" ~" l% j( u 长尾词挖掘思路来源:君言:如何在百万级的数据里找到别人正在赚钱的项目5290 赞同 · 236 评论文章
; I1 l$ q! r0 J& y 作为一名菜鸟算法工程师对里面的数据分析思路很感兴趣,趁着周末就实操了一遍期望也能挖掘点赚钱的项目,主要代码如下:importnumpyasnpfromnumpy.randomimportpermutation ! ]8 D( m% _) p$ H5 e' v+ M+ t
importpandasaspdimportsklearnassklearnimportmatplotlib.pyplotaspltfromsklearn.feature_extraction.text % f/ f6 ~5 F0 _2 n2 _% R+ w
importCountVectorizerfromsklearn.feature_extraction.textimportTfidfVectorizerimportjiebafromdatetimeimport ; @2 q: Y& h* k1 B7 A$ v4 i1 a
datetime,date,timedeltaimportpickleimportsysimportosimportwarningswarnings.filterwarnings(ignore)%matplotlib 0 Z5 Z; n# ]7 p+ f
inlinepd.set_option(display.max_columns,None)pd.set_option(display.float_format,lambdax:%.6f%x)plt.rcParams
2 b1 E) g a% k5 a. T- M# b [font.sans-serif]=[SimHei]plt.rcParams[axes.unicode_minus]=False导入停用词停用词库来源:(https://github.com/goto456/stop
# I1 ^3 u$ }3 k# H1 N# j1 f2 d words)stop_words_df=pd.read_csv(baidu_stopwords.csv)stop_words_df.head()导入从5118下载的怎么长尾词(需要开通VIP才能下载)长尾关键词挖掘_关键词挖掘工具_关键词查询 - 5118营销大数据
* F% y' {3 g: Z ci.5118.com/?promote=pp2020how_df=pd.read_csv(怎么长尾词_1602384585.csv,encoding="gbk")how_df.info()
! {6 f5 ]$ z$ C pandas.core.frame.DataFrame>RangeIndex:500000entries,0to499999Datacolumns(total12columns):关键词500000non 3 X7 ^+ \" ]( r1 q0 X' L( d
-nullobject长尾词数量500000non-nullint64搜索结果500000non-nullobjectSEM点击价格(SVIP特权数据)0non-nullfloat64流量特点(SVIP特权数据
0 ]% _5 T5 {( r; F )0non-nullfloat64流量指数(VIP特权数据)500000non-nullint64移动指数(VIP特权数据)500000non-nullobject360指数(VIP特权数据)500000
9 K" i( ^' k! D( m/ P non-nullobject竞价公司数量(VIP特权数据)500000non-nullobjectPC日检索量(VIP特权数据)500000non-nullobject移动日检索量(VIP特权数据)500000 ( O: Q2 x" o: P2 r$ c0 F! c, n
non-nullobject竞价竞争激烈程度(VIP特权数据)500000non-nullobjectdtypes:float64(2),int64(2),object(8)memoryusage:45.8
% ?& | h+ W+ I: Z* d- Z +MBhow_df.head() 6 x- H) @0 T8 q& f/ O
5118导出的长尾词去除长度少于5和超过20的关键词words_df=how_df[(how_df[关键词].str.len()>5)&(how_df[关键词].str.len()<20)][[关键词]] 1 h9 b( x6 H5 A9 l6 k9 r
words_df.head()
; H9 D0 o& O4 Z" \ 长尾词示例words_df[wlen]=words_df[关键词].str.len()words_df.columns=[words,wlen]words_df.head()
& t5 Q* K+ k3 `( c( d 使用jieba分词统计词频jieba官网:(https://github.com/fxsjy/jieba)importpdbdefcalc_word_freq(words,words_freq_dict # J& F7 N: u+ y8 p: K
,stop_words_set):
6 w1 H) [* ?! e" P* N 训练模型用于统计词频和进行相似度计算words_df.head() 3 u* t# i3 a$ l$ S& b& U
分词示例# 训练模型长尾词分类fromsklearn.clusterimportKMeansimporttimeit# 假设分为100个类别# 无监督方法分类执行速度Mac 8G内存,50w个词7分钟跑完,看上去速度还行 0 G* H3 r6 v$ a( b7 h, `! B7 X
预测长尾词类别words_df[words_class]=kmeans.predict(cv_vec)输出每个分类的长尾词库foriinrange(1,101):words_df[words_df.words_class . [8 f4 z+ o8 `- i. V% p* m5 q
==i][[words]].sort_values(by=words).to_csv(class_+str(i)+.csv,index=None,columns=[words])class_1=pd.read_csv
3 l( s* f( x- o' e! d* b* x (class_36.csv)class_1.head(10)
" @9 Q5 g7 r3 J9 C" r 长尾词分类示例看上去分类结果还可以。 # `2 C, y. I% m0 ?/ v, {3 i" I
( W* {. h$ }7 ^, q+ c/ M
# K5 ]- D, H0 L5 `
H7 e( F4 N* I
. [! N" R" R1 z8 O. f1 V4 p. c |