|
+ Y7 s. F9 m* R0 ?) V
长尾词挖掘思路来源:君言:如何在百万级的数据里找到别人正在赚钱的项目5290 赞同 · 236 评论文章 / v1 F0 m- E. b. B, v0 {
作为一名菜鸟算法工程师对里面的数据分析思路很感兴趣,趁着周末就实操了一遍期望也能挖掘点赚钱的项目,主要代码如下:importnumpyasnpfromnumpy.randomimportpermutation : K% m7 H( K& d9 \
importpandasaspdimportsklearnassklearnimportmatplotlib.pyplotaspltfromsklearn.feature_extraction.text
) ]4 `1 @: }& f' A0 h importCountVectorizerfromsklearn.feature_extraction.textimportTfidfVectorizerimportjiebafromdatetimeimport $ F7 a/ r0 H/ ^( f+ a
datetime,date,timedeltaimportpickleimportsysimportosimportwarningswarnings.filterwarnings(ignore)%matplotlib 2 C# q3 }7 B2 C2 L. J" r
inlinepd.set_option(display.max_columns,None)pd.set_option(display.float_format,lambdax:%.6f%x)plt.rcParams & [+ ~3 i$ V) ~8 v% A; J$ @
[font.sans-serif]=[SimHei]plt.rcParams[axes.unicode_minus]=False导入停用词停用词库来源:(https://github.com/goto456/stop
$ v) w9 N. I& d8 r8 C words)stop_words_df=pd.read_csv(baidu_stopwords.csv)stop_words_df.head()导入从5118下载的怎么长尾词(需要开通VIP才能下载)长尾关键词挖掘_关键词挖掘工具_关键词查询 - 5118营销大数据
9 l4 s7 |0 e8 v# `& v6 H2 v ci.5118.com/?promote=pp2020how_df=pd.read_csv(怎么长尾词_1602384585.csv,encoding="gbk")how_df.info()
6 C }) V: z3 a pandas.core.frame.DataFrame>RangeIndex:500000entries,0to499999Datacolumns(total12columns):关键词500000non
) O' E4 I) U( C1 l, v4 N% ] -nullobject长尾词数量500000non-nullint64搜索结果500000non-nullobjectSEM点击价格(SVIP特权数据)0non-nullfloat64流量特点(SVIP特权数据 + Y1 y. P$ O4 K) b7 x9 I
)0non-nullfloat64流量指数(VIP特权数据)500000non-nullint64移动指数(VIP特权数据)500000non-nullobject360指数(VIP特权数据)500000
8 H) \1 g5 F- G9 q, O: y non-nullobject竞价公司数量(VIP特权数据)500000non-nullobjectPC日检索量(VIP特权数据)500000non-nullobject移动日检索量(VIP特权数据)500000 3 O8 g' @ p& J9 e4 f
non-nullobject竞价竞争激烈程度(VIP特权数据)500000non-nullobjectdtypes:float64(2),int64(2),object(8)memoryusage:45.8
8 `8 f# B6 x% ]' | +MBhow_df.head() - @( f6 l, J c
5118导出的长尾词去除长度少于5和超过20的关键词words_df=how_df[(how_df[关键词].str.len()>5)&(how_df[关键词].str.len()<20)][[关键词]] 2 r6 h# X; w1 {9 e: P& |
words_df.head() 0 D( J% b+ Y- i7 X% C8 B X: p
长尾词示例words_df[wlen]=words_df[关键词].str.len()words_df.columns=[words,wlen]words_df.head() 6 h: {+ V1 U- H$ h1 J
使用jieba分词统计词频jieba官网:(https://github.com/fxsjy/jieba)importpdbdefcalc_word_freq(words,words_freq_dict 4 n9 C5 j/ p4 k
,stop_words_set): " I Q) E! U" ]! p
训练模型用于统计词频和进行相似度计算words_df.head() ; i# p" U: {8 c5 w( I" Q8 t7 P1 h0 ~
分词示例# 训练模型长尾词分类fromsklearn.clusterimportKMeansimporttimeit# 假设分为100个类别# 无监督方法分类执行速度Mac 8G内存,50w个词7分钟跑完,看上去速度还行 ( Y9 E! e( h: R) _ F
预测长尾词类别words_df[words_class]=kmeans.predict(cv_vec)输出每个分类的长尾词库foriinrange(1,101):words_df[words_df.words_class / k9 i2 u: X W5 n5 @+ I2 K; w( {
==i][[words]].sort_values(by=words).to_csv(class_+str(i)+.csv,index=None,columns=[words])class_1=pd.read_csv
! p( E+ Y& l) T9 L6 ^2 S (class_36.csv)class_1.head(10)
+ Y3 b' m- e$ i9 A# }0 o/ y& h+ c' _1 i; b 长尾词分类示例看上去分类结果还可以。
% V6 u& l5 ?; n3 l) C8 o. z8 Y; K# W# x' t5 j3 W
, x0 K: N! O# J5 U Z. A9 Q( _8 n8 |0 M" j
/ t$ d4 n5 _0 J. J% V9 k3 r) ]8 e |