使用Gensim进行文本信息分类

pip install gensim

数据源:

朋友圈信息

代码:

# -*- 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.初始化停止词列表 ------')

# 开始的时间

    t_start = time.time()

# 加载停用词表

    stop_words = load_stopword()

print('2.开始读入语料数据 ------ ')

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('读入语料数据完成,用时%.3f秒' % (time.time() - t_start))

M =len(texts)

print('文本数目:%d个' % M)

print('3.正在建立词典 ------')

# 建立字典

    dictionary = corpora.Dictionary(texts)

V =len(dictionary)

print('4.正在计算文本向量 ------')

# 转换文本数据为索引,并计数

    corpus = [dictionary.doc2bow(text)for textin texts]

print('5.正在计算文档TF-IDF ------')

t_start = time.time()

# 计算tf-idf值

    corpus_tfidf = models.TfidfModel(corpus)[corpus]

print('建立文档TF-IDF完成,用时%.3f秒' % (time.time() - t_start))

print('6.LDA模型拟合推断 ------')

# 训练模型

    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模型完成,训练时间为\t%.3f秒' % (time.time() - t_start))

# 随机打印某10个文档的主题

    num_show_topic =10  # 每个文档显示前几个主题

    print('7.结果:10个文档的主题分布:--')

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个文档的前%d个主题:' % (i, num_show_topic)), topic_idx)

print(topic_distribute[topic_idx])

num_show_term =7  # 每个主题显示几个词

    print('8.结果:每个主题的词分布:--')

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

运行结果:

1.初始化停止词列表 ------

2.开始读入语料数据 ------

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.

读入语料数据完成,用时20.850秒

文本数目:7201个

3.正在建立词典 ------

4.正在计算文本向量 ------

5.正在计算文档TF-IDF ------

建立文档TF-IDF完成,用时0.340秒

6.LDA模型拟合推断 ------

LDA模型完成,训练时间为 39.582秒

7.结果:10个文档的主题分布:--

第4776个文档的前10个主题: [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个文档的前10个主题: [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个文档的前10个主题: [ 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个文档的前10个主题: [ 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个文档的前10个主题: [ 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个文档的前10个主题: [ 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个文档的前10个主题: [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个文档的前10个主题: [ 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个文档的前10个主题: [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个文档的前10个主题: [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.结果:每个主题的词分布:--

主题#0:

词:

早餐

牛肉

维生素

C

早安

导致

概率: [0.03386845 0.02483381 0.02025204 0.01660909 0.01363995 0.01068665

0.00706152]

主题#1:

词:

讲授

宛伊

春季班

浅秋

网课

航道

帮转

概率: [7.93909385e-06 7.93909385e-06 7.93909385e-06 7.93909385e-06

7.93909385e-06 7.93909385e-06 7.93909385e-06]

主题#2:

词:

小伙伴

流泪

辅导

宠儿

疯狂

微笑

概率: [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:

词:

含有

预防

油脂

玫瑰

代谢

气血

概率: [0.02105247 0.01467578 0.00972506 0.00949167 0.00915031 0.00889741

0.00666286]

主题#5:

词:

本人

信息

工作

食用

联系电话

联系

求购

概率: [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:

词:

复制

三网

下载

概率: [7.94328753e-06 7.94041080e-06 7.94032258e-06 7.94012067e-06

7.93994695e-06 7.93993877e-06 7.93991512e-06]

主题#8:

词:

110

码数

珍惜

围巾

概率: [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:

词:

刺激

閃電

高檔

設計

概率: [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

克价

概率: [7.93997333e-06 7.93986601e-06 7.93975596e-06 7.93964227e-06

7.93962499e-06 7.93960680e-06 7.93958588e-06]

主题#14:

词:

贷款

办理

自动

信用卡

软件

导航

刷卡

概率: [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:

词:

丈母娘

女儿

照料

用卡

困难

购点

概率: [7.93986328e-06 7.93965410e-06 7.93955314e-06 7.93948948e-06

7.93940035e-06 7.93935214e-06 7.93934214e-06]

主题#20:

词:

领取

兔绒

ML

咖色

概率: [1.21185910e-02 8.46080638e-06 7.86211695e-06 7.84995154e-06

7.84794338e-06 7.84665463e-06 7.84584790e-06]

主题#21:

词:

话费

补单

吸引

成功

记住

概率: [9.07428004e-03 2.24792189e-03 8.18135049e-06 7.97946359e-06

7.96390214e-06 7.91229650e-06 7.89194746e-06]

主题#22:

词:

封号

安卓

打扰

概率: [0.02807738 0.00463936 0.00386185 0.00289498 0.00250433 0.00160384

0.00153386]

主题#23:

词:

cn

用户

http

注册

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:

词:

讲授

宛伊

春季班

浅秋

网课

航道

帮转

概率: [7.93909385e-06 7.93909385e-06 7.93909385e-06 7.93909385e-06

7.93909385e-06 7.93909385e-06 7.93909385e-06]

主题#27:

词:

美容

万人

商机

人们

女生

概率: [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:

词:

缩阴

宫颈

精准

阴道

丰胸

糜烂

概率: [0.00535257 0.00325915 0.0028789  0.00250742 0.00237429 0.00229252

0.0020758 ]

从每个分类的top7词汇可以看出,该方法有一定分类效果。下一步优化方向:增加停用词列表、调参。

你可能感兴趣的:(使用Gensim进行文本信息分类)