pip install gensim
數(shù)據(jù)源:
代碼:
# -*- coding:utf-8 -*-
import numpyas np
from gensimimport corpora, models, similarities
import time
import jieba
def load_stopword():
'''
? ? 加載停用詞表
? ? :return: 返回停用詞的列表'''
? ? f_stop =open('stopword.txt')
sw = [line.strip()for linein f_stop]
f_stop.close()
return sw
if __name__ =='__main__':
print('1.初始化停止詞列表 ------')
# 開始的時(shí)間
? ? t_start = time.time()
# 加載停用詞表
? ? stop_words = load_stopword()
print('2.開始讀入語料數(shù)據(jù) ------ ')
wxid_list =list()
texts =list()
# 讀入語料庫
? ? with open('sample2_combined_7201wxid.txt', 'r', encoding='utf-8')as file_to_read1:
while True:
one_line = file_to_read1.readline()
if one_line =='' or one_line =='\n':
break
? ? ? ? ? ? line_strs = one_line.split('\n')[0].split('\t')
wx_id = line_strs[0]
text = line_strs[1]
words = jieba.lcut(text)
wxid_list.append(wx_id)
texts.append(words)
print('讀入語料數(shù)據(jù)完成,用時(shí)%.3f秒' % (time.time() - t_start))
M =len(texts)
print('文本數(shù)目:%d個(gè)' % M)
print('3.正在建立詞典 ------')
# 建立字典
? ? dictionary = corpora.Dictionary(texts)
V =len(dictionary)
print('4.正在計(jì)算文本向量 ------')
# 轉(zhuǎn)換文本數(shù)據(jù)為索引帜羊,并計(jì)數(shù)
? ? corpus = [dictionary.doc2bow(text)for textin texts]
print('5.正在計(jì)算文檔TF-IDF ------')
t_start = time.time()
# 計(jì)算tf-idf值
? ? corpus_tfidf = models.TfidfModel(corpus)[corpus]
print('建立文檔TF-IDF完成,用時(shí)%.3f秒' % (time.time() - t_start))
print('6.LDA模型擬合推斷 ------')
# 訓(xùn)練模型
? ? num_topics =30
? ? t_start = time.time()
lda = models.LdaModel(corpus_tfidf, num_topics=num_topics, id2word=dictionary,
? ? ? ? ? ? ? ? ? ? ? ? ? alpha=0.01, eta=0.01, minimum_probability=0.001,
? ? ? ? ? ? ? ? ? ? ? ? ? update_every=1, chunksize=100, passes=1)
print('LDA模型完成,訓(xùn)練時(shí)間為\t%.3f秒' % (time.time() - t_start))
# 隨機(jī)打印某10個(gè)文檔的主題
? ? num_show_topic =10? # 每個(gè)文檔顯示前幾個(gè)主題
? ? print('7.結(jié)果:10個(gè)文檔的主題分布:--')
doc_topics = lda.get_document_topics(corpus_tfidf)# 所有文檔的主題分布
? ? idx = np.arange(M)
np.random.shuffle(idx)
idx = idx[:10]
for iin idx:
topic = np.array(doc_topics[i])
topic_distribute = np.array(topic[:, 1])
# print topic_distribute
? ? ? ? topic_idx = topic_distribute.argsort()[:-num_show_topic -1:-1]
print(('第%d個(gè)文檔的前%d個(gè)主題:' % (i, num_show_topic)), topic_idx)
print(topic_distribute[topic_idx])
num_show_term =7? # 每個(gè)主題顯示幾個(gè)詞
? ? print('8.結(jié)果:每個(gè)主題的詞分布:--')
for topic_idin range(num_topics):
print('主題#%d:\t' % topic_id)
term_distribute_all = lda.get_topic_terms(topicid=topic_id)
term_distribute = term_distribute_all[:num_show_term]
term_distribute = np.array(term_distribute)
term_id = term_distribute[:, 0].astype(np.int)
print('詞:\t', )
for tin term_id:
print(dictionary.id2token[t], )
print('\n概率:\t', term_distribute[:, 1])
運(yùn)行結(jié)果:
1.初始化停止詞列表 ------
2.開始讀入語料數(shù)據(jù) ------
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.453 seconds.
Prefix dict has been built succesfully.
讀入語料數(shù)據(jù)完成,用時(shí)20.850秒
文本數(shù)目:7201個(gè)
3.正在建立詞典 ------
4.正在計(jì)算文本向量 ------
5.正在計(jì)算文檔TF-IDF ------
建立文檔TF-IDF完成匈庭,用時(shí)0.340秒
6.LDA模型擬合推斷 ------
LDA模型完成污桦,訓(xùn)練時(shí)間為 39.582秒
7.結(jié)果:10個(gè)文檔的主題分布:--
第4776個(gè)文檔的前10個(gè)主題: [12 29 28? 1? 2? 3? 4? 5? 6? 7]
[0.58493376 0.01431263 0.01431263 0.01431263 0.01431263 0.01431263
0.01431263 0.01431263 0.01431263 0.01431263]
第4029個(gè)文檔的前10個(gè)主題: [12? 3 20? 4 29 13? 1? 2? 5? 6]
[0.37388983 0.3025465? 0.12476926 0.11684622 0.00315185 0.00315185
0.00315185 0.00315185 0.00315185 0.00315185]
第3246個(gè)文檔的前10個(gè)主題: [ 3? 5 25? 4 29 13? 1? 2? 6? 7]
[0.37498331 0.2976712? 0.19527724 0.05764455 0.00286245 0.00286245
0.00286245 0.00286245 0.00286245 0.00286245]
第4338個(gè)文檔的前10個(gè)主題: [ 3 25? 4? 0? 5 12 13? 1? 2? 6]
[0.5332467? 0.15297471 0.12927592 0.07833721 0.04124153 0.02898731
0.00149736 0.00149736 0.00149736 0.00149736]
第2161個(gè)文檔的前10個(gè)主題: [ 3 25? 5? 4 27? 0 23 12? 1? 2]
[0.38401735 0.21167417 0.14914817 0.10948798 0.04541766 0.03539393
0.02509075 0.00172913 0.00172913 0.00172913]
第4651個(gè)文檔的前10個(gè)主題: [ 3 25? 5 12 29 13? 1? 2? 4? 6]
[0.32238352 0.31823975 0.21561985 0.04819759 0.00367536 0.00367536
0.00367536 0.00367536 0.00367536 0.00367536]
第5238個(gè)文檔的前10個(gè)主題: [12? 3 25? 5 27 29 13? 1? 2? 4]
[0.27936012 0.26403227 0.1416378? 0.1241198? 0.08557552 0.00421098
0.00421098 0.00421098 0.00421098 0.00421098]
第4130個(gè)文檔的前10個(gè)主題: [ 3 27? 5? 4 29 13? 1? 2? 6? 7]
[0.59734505 0.10868986 0.10651511 0.07392456 0.00436636 0.00436636
0.00436636 0.00436636 0.00436636 0.00436636]
第5269個(gè)文檔的前10個(gè)主題: [25? 3? 4 27? 0 13? 1? 2? 5? 6]
[0.343871? 0.30449691 0.19992411 0.05840852 0.05270721 0.00162369
0.00162369 0.00162369 0.00162369 0.00162369]
第6264個(gè)文檔的前10個(gè)主題: [25 12? 3? 5 27? 6 29 13? 1? 2]
[0.33372545 0.19687143 0.16887571 0.10230102 0.07008811 0.04191673
0.00359256 0.00359256 0.00359256 0.00359256]
8.結(jié)果:每個(gè)主題的詞分布:--
主題#0:
詞:
早餐
牛肉
維生素
C
早安
導(dǎo)致
概率: [0.03386845 0.02483381 0.02025204 0.01660909 0.01363995 0.01068665
0.00706152]
主題#1:
詞:
講授
宛伊
春季班
淺秋
網(wǎng)課
航道
幫轉(zhuǎn)
概率: [7.93909385e-06 7.93909385e-06 7.93909385e-06 7.93909385e-06
7.93909385e-06 7.93909385e-06 7.93909385e-06]
主題#2:
詞:
小伙伴
流淚
輔導(dǎo)
寵兒
瘋狂
微笑
概率: [1.29068419e-02 7.86041255e-06 7.84468011e-06 7.84414897e-06
7.84136773e-06 7.83974428e-06 7.83950691e-06]
主題#3:
詞:
,
]
[
饼记!
?
太陽
概率: [0.01985054 0.01532708 0.01354059 0.0135403? 0.00976824 0.00958529
0.00929036]
主題#4:
詞:
含有
預(yù)防
油脂
玫瑰
代謝
氣血
高
概率: [0.02105247 0.01467578 0.00972506 0.00949167 0.00915031 0.00889741
0.00666286]
主題#5:
詞:
本人
信息
工作
食用
聯(lián)系電話
聯(lián)系
求購
概率: [0.02339416 0.01594725 0.01259175 0.01181062 0.01179646 0.01147621
0.01118094]
主題#6:
詞:
首付
E
擁抱
一廳
出租
跳跳
家電
概率: [0.00836604 0.008056? 0.00526544 0.00428819 0.00402217 0.00337555
0.00293302]
主題#7:
詞:
★
復(fù)制
三網(wǎng)
站
??
☆
下載
概率: [7.94328753e-06 7.94041080e-06 7.94032258e-06 7.94012067e-06
7.93994695e-06 7.93993877e-06 7.93991512e-06]
主題#8:
詞:
??
110
碼數(shù)
??
珍惜
靴
圍巾
概率: [0.01233861 0.00504165 0.00441902 0.00437879 0.00392553 0.00380516
0.00368871]
主題#9:
詞:
平米
下款
配合
服裝
一批
概率: [2.61398800e-05 7.94631796e-06 7.94381049e-06 7.94274365e-06
7.94042626e-06 7.94038988e-06 7.94034531e-06]
主題#10:
詞:
抽繩
吧
就是
到
298
外套
39.6
概率: [7.94010339e-06 7.94001789e-06 7.93999061e-06 7.93988329e-06
7.93971594e-06 7.93969502e-06 7.93959043e-06]
主題#11:
詞:
刺激
趣
?
閃電
高檔
抓
設(shè)計(jì)
概率: [7.93989784e-06 7.93967229e-06 7.93963409e-06 7.93953132e-06
7.93952859e-06 7.93952768e-06 7.93951222e-06]
主題#12:
詞:
-
尺碼
面料
??
新款
款
概率: [0.01297308 0.01196654 0.00738309 0.00686454 0.00652365 0.00635273
0.00621089]
主題#13:
詞:
手串
極品
克
精品
重
mm
克價(jià)
概率: [7.93997333e-06 7.93986601e-06 7.93975596e-06 7.93964227e-06
7.93962499e-06 7.93960680e-06 7.93958588e-06]
主題#14:
詞:
貸款
辦理
自動(dòng)
信用卡
軟件
導(dǎo)航
刷卡
概率: [0.0075584? 0.00740018 0.00605603 0.0055211? 0.00507937 0.0047877
0.00400551]
主題#15:
詞:
松茸
姬
十袋
、
豆包
降血糖
黏
概率: [7.93930394e-06 7.93929939e-06 7.93925938e-06 7.93925210e-06
7.93922936e-06 7.93922754e-06 7.93922663e-06]
主題#16:
詞:
越
缺錢
先找
不放馬
盡我所能
讓開
驕縱
概率: [7.93957497e-06 7.93950130e-06 7.93943491e-06 7.93943309e-06
7.93943309e-06 7.93943309e-06 7.93943309e-06]
主題#17:
詞:
??
批
跑步
鞋
高幫
Jordan
流淚
概率: [0.0087569? 0.00830467 0.00424777 0.00316585 0.00305585 0.00290347
0.00265311]
主題#18:
詞:
笑
壞
出單
散客
客源
父母
鹿鞭
概率: [7.11068418e-03 3.31070670e-03 1.58573002e-05 9.37107234e-06
8.43134512e-06 7.91026287e-06 7.89694332e-06]
主題#19:
詞:
丈母娘
女兒
照料
用卡
她
困難
購點(diǎn)
概率: [7.93986328e-06 7.93965410e-06 7.93955314e-06 7.93948948e-06
7.93940035e-06 7.93935214e-06 7.93934214e-06]
主題#20:
詞:
??
領(lǐng)取
兔絨
ML
咖色
??
??
概率: [1.21185910e-02 8.46080638e-06 7.86211695e-06 7.84995154e-06
7.84794338e-06 7.84665463e-06 7.84584790e-06]
主題#21:
詞:
話費(fèi)
充
補(bǔ)單
吸引
??
成功
記住
概率: [9.07428004e-03 2.24792189e-03 8.18135049e-06 7.97946359e-06
7.96390214e-06 7.91229650e-06 7.89194746e-06]
主題#22:
詞:
┈
封號(hào)
┄
安卓
群
╰
打擾
概率: [0.02807738 0.00463936 0.00386185 0.00289498 0.00250433 0.00160384
0.00153386]
主題#23:
詞:
cn
用戶
http
注冊(cè)
t
鏈接
下載
概率: [0.00543195 0.00511594 0.00499532 0.00436718 0.00374179 0.00372209
0.00302911]
主題#24:
詞:
我手
殘
佛為
儒為表
思在腦
技
大度
概率: [7.93967683e-06 7.93967502e-06 7.93964318e-06 7.93963864e-06
7.93963409e-06 7.93959862e-06 7.93957406e-06]
主題#25:
詞:
..
慰枕、
??
具则,
。
:
概率: [0.03780913 0.02099271 0.01741591 0.01197653 0.01115799 0.01110726
0.01001806]
主題#26:
詞:
講授
宛伊
春季班
淺秋
網(wǎng)課
航道
幫轉(zhuǎn)
概率: [7.93909385e-06 7.93909385e-06 7.93909385e-06 7.93909385e-06
7.93909385e-06 7.93909385e-06 7.93909385e-06]
主題#27:
詞:
皮
美容
早
萬人
商機(jī)
人們
女生
概率: [0.0233007? 0.01607903 0.01494002 0.01140604 0.01007851 0.01006253
0.0097663 ]
主題#28:
詞:
尺寸
蕾絲
牛仔
長款
大牌
禮盒
建議
概率: [0.00684191 0.00433312 0.00364425 0.00293131 0.00268158 0.00265364
0.00230511]
主題#29:
詞:
樓
縮陰
宮頸
精準(zhǔn)
陰道
豐胸
糜爛
概率: [0.00535257 0.00325915 0.0028789? 0.00250742 0.00237429 0.00229252
0.0020758 ]
從每個(gè)分類的top7詞匯可以看出具帮,該方法有一定分類效果博肋。下一步優(yōu)化方向:增加停用詞列表、調(diào)參蜂厅。