LED 聚类

#!/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @virtualenv:workon
# @contact: 1040691703@qq.com
# @Desc:文本主题聚类
__author__ = '未昔/AngelFate'
__date__ = '2020/3/6 19:07'

import jieba
import jieba.posseg as jp
from gensim import corpora, models
import pandas as pd

# Global Dictionary
new_words = ['新肺炎', 'von']  # 新词
stopwords = {' ', '再', '的', '们', '为', '时', ':',',','】','【','(',')','~','、','!','/','。','-','*',',','*','.','《','》'}  # 停用词
synonyms = {'中国': '中华人民共和国', '艺赛期': 'rpa'}  # 同义词
words_nature = ('n', 'nr', 'ns', 'nt', 'eng', 'v', 'd')  # 可用的词性


def add_new_words(): 
    for i in new_words:
        jieba.add_word(i)


def remove_stopwords(ls):  # 去除停用词,并且以2个以上单词为语料词典
    return [word for word in ls if len(word)>1 and word not in stopwords]


def replace_synonyms(ls):  
    return [synonyms[i] if i in synonyms else i for i in ls]

documents = pd.read_excel('./文本主题聚类/B站-发布者.xlsx')

add_new_words()
words_ls = []
data_list = []
for len_ in range(len(documents)):
    con = documents['个性签名'][len_]
    if type(con) is not None:
        data_list.append(con)
        if len(con)>1:
            words = replace_synonyms(remove_stopwords([w.word for w in jp.cut(con)]))
            # print(words)
            words_ls.append(words)
print('words_ls:',words_ls)

# 生成语料词典
dictionary = corpora.Dictionary(words_ls)

corpus = [doc2bow(words) for words in words_ls]
print('corpus:',corpus)
# LDA模型,最终主题的数量
lda = models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=x)

for topic in lda.print_topics(num_words=5):
    print(topic)
# 推断每个语料库中的主题类别
print('推断:')
for con, values in enumerate(lda.inference(corpus)[0]):
    topic_val = 0
    topic_id = 0
    for tid, val in enumerate(values):
        if val > topic_val:
            topic_val = val
            topic_id = tid
    print(topic_id, '->', data[con])

结果


Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\10406\AppData\Local\Temp\jieba.cache
Loading model cost 0.810 seconds.
Prefix dict has been built succesfully.
words_ls: [['照理说'], ['Vanee', '坐标', '香港', '香港', '吃喝玩乐', '衣食住行', 'Korea', '相关', '日常', '追星', '跳舞', '美妆'], ['理性', '观察', '商界', '事物', '任务'], ['信用', '颜值', '并重', '智慧', '美貌', '齐飞'], ['同名', '花逗', '商业', '邮箱', 'syhz', 'papitube', 'com', '标明', '花逗', '合作'], ['咨询', '朋友', '加微信', 'manmanjun08'], ['年轻', '焦虑', '社畜', '焦虑', '职场', '中年', '焦虑', '怎么', '我们', '视频'], ['广告', '合作', '邮箱', 'ad', 'happyjuzi', 'com', '电话', '010', '85929200', '8018'], ['有趣', '一样', '财经', '故事', '财经', '周一', '周五', '每日'], ['我们', '故事', '我们', '听见', '真实'], ['商务', '合作', '联系', '微信', 'hulang008', '好多', '私信', '来得及', '看到', '如果', '没有', '回复', '见谅'], ['搞笑', '视频剪辑', '制作'], ['睁开', '眼睛', '努力', '探索', '世界', '主观', '角度', '理性', '思维', '认真', '分享', '严肃'], ['语文课', '代表', '数学', '稀烂', '擅长', '名词解释', '今天', '我们'], ['美貌', '智慧', '并重', '关注', '微信', '公众', 'ON', 'ON', '爆笑', '菊花', '缺氧', '影视作品', '全由本', '亲自', '制作'], ['有趣', '一样', '财经', '故事', '财经', '周一', '周五', '每日'], ['发现', '偶像', '分享', '趣味', '连接', '新世界', '一起', '快乐', '追星'], ['这个', '233'], ['我们', '故事', '我们', '听见', '真实'], ['美貌', '智慧', '并重', '关注', '微信', '公众', 'ON', 'ON', '爆笑', '菊花', '缺氧', '影视作品', '全由本', '亲自', '制作'], ['不点'], ['国内', '好看', '内容', '频道'], ['通过', '视频', '真实', '记录', '两个', '吃货', '旅行', '探索', '未知', '异域', '美食', '纪录片', '希望', '大家', '一起', '分享', '美食', '旅行', '带来', '快乐'], ['自由职业', '斜杠', '青年'], ['没有', '亲身经历', '无法', '感同身受'], ['雅思', '托福', 'GRE', 'GMAT', 'SAT', '留学', '预备', '课程', '流利', '口语', '雅思', '机经', '免费', '还有', '学习', '资料'], ['不减', '10', '不换', '头像'], ['一起', '天下', '每周', '老外', '东西', '精彩', '不断', '不要', '错过'], ['青年', '视频', '杂志', '节目', '矩阵', '100'], ['佛系', '阿婆', '公众', '工作室', 'Vitamochi', 'Studio', '72953390'], ['电影', '认真'], ['一日', '一记', '发现', '记录', '真实', '温州'], ['话题', '爆炸', '中招', '流泪', '社会', '话题', '刺穿', '心脏'], ['这里', '一份', '记录', 'sparkle', 'things', '收藏夹', '清单', '信息源', '筛选', '频道'], ['雅思', '托福', 'GRE', 'GMAT', 'SAT', '留学', '预备', '课程', '流利', '口语', '雅思', '机经', '免费', '还有', '学习', '资料'], ['咨询', '朋友', '加微信', 'manmanjun08'], ['欢乐', '抬杠', '杠精', '侃财'], ['专门', '分享', '社保', '民生', '知识'], ['真的', '第一', '时间', '官方'], ['公众', '郑在秀', '心师', '郑实'], ['不要', '厚颜无耻', '接受', '略略'], ['单身', '独立', '女性', '生活', '日志'], ['保险', '套路', '配置', '保险', '理性', '微信', '注明', '来意', 'ZhangZhiYong', 'info'], ['什么', '想看', '可以', '私信'], ['欢迎', '各位', '喜爱', '财知', '生活', '朋友', '加入', 'QQ', '629254508', '一起', '学习', '财经', '知识', '财经', '从未', '如此', '简单'], ['一起', '天下', '每周', '老外', '东西', '精彩', '不断', '不要', '错过'], ['翻译家', '代表作', '霸王别姬', '七月', '安生', '何以', '笙箫', '默等'], ['故事', '讲道理', '姿势', '技能', '出点子', '广告', '创意', '难题'], ['视觉', '阅读', '读书', '变得', '简单', '锦灰', '视读']]
corpus: [[(0, 1)], [(1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1), (10, 1), (11, 2)], [(12, 1), (13, 1), (14, 1), (15, 1), (16, 1)], [(17, 1), (18, 1), (19, 1), (20, 1), (21, 1), (22, 1)], [(23, 1), (24, 1), (25, 1), (26, 1), (27, 1), (28, 1), (29, 1), (30, 2), (31, 1)], [(32, 1), (33, 1), (34, 1), (35, 1)], [(36, 1), (37, 1), (38, 1), (39, 1), (40, 3), (41, 1), (42, 1), (43, 1)], [(23, 1), (26, 1), (31, 1), (44, 1), (45, 1), (46, 1), (47, 1), (48, 1), (49, 1), (50, 1)], [(51, 1), (52, 1), (53, 1), (54, 1), (55, 1), (56, 1), (57, 2)], [(39, 2), (54, 1), (58, 1), (59, 1)], [(26, 1), (60, 1), (61, 1), (62, 1), (63, 1), (64, 1), (65, 1), (66, 1), (67, 1), (68, 1), (69, 1), (70, 1), (71, 1)], [(72, 1), (73, 1), (74, 1)], [(15, 1), (75, 1), (76, 1), (77, 1), (78, 1), (79, 1), (80, 1), (81, 1), (82, 1), (83, 1), (84, 1), (85, 1)], [(39, 1), (86, 1), (87, 1), (88, 1), (89, 1), (90, 1), (91, 1), (92, 1)], [(18, 1), (19, 1), (20, 1), (65, 1), (72, 1), (93, 2), (94, 1), (95, 1), (96, 1), (97, 1), (98, 1), (99, 1), (100, 1), (101, 1)], [(51, 1), (52, 1), (53, 1), (54, 1), (55, 1), (56, 1), (57, 2)], [(10, 1), (78, 1), (102, 1), (103, 1), (104, 1), (105, 1), (106, 1), (107, 1), (108, 1)], [(109, 1), (110, 1)], [(39, 2), (54, 1), (58, 1), (59, 1)], [(18, 1), (19, 1), (20, 1), (65, 1), (72, 1), (93, 2), (94, 1), (95, 1), (96, 1), (97, 1), (98, 1), (99, 1), (100, 1), (101, 1)], [(111, 1)], [(112, 1), (113, 1), (114, 1), (115, 1)], [(43, 1), (59, 1), (78, 1), (81, 1), (102, 1), (105, 1), (116, 1), (117, 1), (118, 1), (119, 1), (120, 1), (121, 1), (122, 2), (123, 1), (124, 1), (125, 2), (126, 1), (127, 1)], [(128, 1), (129, 1), (130, 1)], [(67, 1), (131, 1), (132, 1), (133, 1)], [(134, 1), (135, 1), (136, 1), (137, 1), (138, 1), (139, 1), (140, 1), (141, 1), (142, 1), (143, 1), (144, 1), (145, 1), (146, 1), (147, 2), (148, 1)], [(149, 1), (150, 1), (151, 1), (152, 1)], [(102, 1), (153, 1), (154, 1), (155, 1), (156, 1), (157, 1), (158, 1), (159, 1), (160, 1)], [(43, 1), (130, 1), (161, 1), (162, 1), (163, 1), (164, 1)], [(96, 1), (165, 1), (166, 1), (167, 1), (168, 1), (169, 1), (170, 1)], [(85, 1), (171, 1)], [(59, 1), (104, 1), (126, 1), (172, 1), (173, 1), (174, 1)], [(175, 1), (176, 1), (177, 1), (178, 1), (179, 1), (180, 1), (181, 2)], [(115, 1), (126, 1), (182, 1), (183, 1), (184, 1), (185, 1), (186, 1), (187, 1), (188, 1), (189, 1)], [(134, 1), (135, 1), (136, 1), (137, 1), (138, 1), (139, 1), (140, 1), (141, 1), (142, 1), (143, 1), (144, 1), (145, 1), (146, 1), (147, 2), (148, 1)], [(32, 1), (33, 1), (34, 1), (35, 1)], [(190, 1), (191, 1), (192, 1), (193, 1)], [(78, 1), (194, 1), (195, 1), (196, 1), (197, 1)], [(198, 1), (199, 1), (200, 1), (201, 1)], [(96, 1), (202, 1), (203, 1), (204, 1)], [(154, 1), (205, 1), (206, 1), (207, 1)], [(208, 1), (209, 1), (210, 1), (211, 1), (212, 1)], [(15, 1), (65, 1), (213, 1), (214, 1), (215, 2), (216, 1), (217, 1), (218, 1), (219, 1)], [(69, 1), (220, 1), (221, 1), (222, 1)], [(35, 1), (57, 2), (102, 1), (139, 1), (196, 1), (212, 1), (223, 1), (224, 1), (225, 1), (226, 1), (227, 1), (228, 1), (229, 1), (230, 1), (231, 1), (232, 1)], [(102, 1), (153, 1), (154, 1), (155, 1), (156, 1), (157, 1), (158, 1), (159, 1), (160, 1)], [(233, 1), (234, 1), (235, 1), (236, 1), (237, 1), (238, 1), (239, 1), (240, 1)], [(49, 1), (54, 1), (241, 1), (242, 1), (243, 1), (244, 1), (245, 1), (246, 1)], [(231, 1), (247, 1), (248, 1), (249, 1), (250, 1), (251, 1), (252, 1)]]
(0, '0.025*"财经" + 0.025*"话题" + 0.025*"生活" + 0.025*"我们" + 0.025*"认真"')
(1, '0.039*"雅思" + 0.039*"财经" + 0.020*"学习" + 0.020*"流利" + 0.020*"机经"')
(2, '0.029*"美貌" + 0.029*"齐飞" + 0.029*"颜值" + 0.029*"并重" + 0.029*"智慧"')
(3, '0.034*"保险" + 0.023*"香港" + 0.018*"何以" + 0.018*"七月" + 0.018*"笙箫"')
(4, '0.041*"焦虑" + 0.041*"我们" + 0.030*"公众" + 0.015*"视频" + 0.015*"不要"')
(5, '0.048*"ON" + 0.037*"制作" + 0.025*"亲自" + 0.025*"美貌" + 0.024*"影视作品"')
(6, '0.028*"侃财" + 0.028*"抬杠" + 0.028*"欢乐" + 0.028*"杠精" + 0.028*"这个"')
(7, '0.029*"花逗" + 0.029*"合作" + 0.029*"分享" + 0.015*"好多" + 0.015*"一起"')
(8, '0.018*"收藏夹" + 0.018*"频道" + 0.018*"things" + 0.018*"不断" + 0.018*"天下"')
推断:
2 -> 照理说事
3 -> Vanee, 坐标香港, 香港吃喝玩乐衣食住行,Korea相关(日常追星),跳舞和美妆~
8 -> 理性观察商界事物和任务
2 -> 信用与颜值并重,智慧与美貌齐飞
7 -> 同名微博(花逗请说)商业邮箱:syhz@papitube.com 请标明【花逗请说合作】
7 -> 想咨询的朋友加微信 manmanjun08
4 -> 年轻焦虑没钱,社畜又焦虑职场,中年更焦虑,怎么破?多看我们视频就好了
1 -> 广告合作邮箱:ad@happyjuzi.com 电话:010-85929200-8018
1 -> 有趣、有料、有范,不一样的财经故事。《她说财经》周一到周五每日一更~
4 -> 我们不说故事,我们听见真实
7 -> 商务合作请联系微信hulang008 | 好多私信还没来得及看到就被吞了,如果没有回复请见谅。
5 -> 搞笑视频剪辑制作达人~~
0 -> 刚睁开的眼睛,努力探索世界。从主观的角度,用理性的思维认真分享的严肃人
6 -> 语文课代表,数学稀烂。 擅长名词解释。 今天,我们咬谁呢?
5 -> 美貌与智慧并重的你关注微信公众号【ON仔】微博【ON仔】.爆笑到令你菊花缺氧的影视作品全由本***丝亲自制作
1 -> 有趣、有料、有范,不一样的财经故事。《她说财经》周一到周五每日一更~
7 -> 发现新偶像,分享新趣味,连接新世界。和O妹一起快乐追星吧~
6 -> 这个人懒死了233
4 -> 我们不说故事,我们听见真实
5 -> 美貌与智慧并重的你关注微信公众号【ON仔】微博【ON仔】.爆笑到令你菊花缺氧的影视作品全由本***丝亲自制作
6 -> 一筒,偏张,不点炮!
5 -> 国内最好看的内容频道场
1 -> 通过视频真实记录两个吃货在旅行探索味未知异域美食的纪录片,吃遍亚、欧、澳、美、非。希望与大家一起分享美食+旅行带来的快乐
7 -> 自由职业 斜杠青年
3 -> 没有亲身经历就无法感同身受
1 -> 雅思/ 托福 /GRE /GMAT / SAT 留学预备课程 /流利口语 / 雅思机经免费领还有更多学习资料
4 -> 不减10斤不换头像
8 -> 和你一起看天下~每周《老外看东西》精彩不断,不要错过哦~
8 -> 青年视频杂志,短节目矩阵《100》
4 -> 佛系阿婆主,公众号【亚男工作室】(Vitamochi-Studio) Q群72953390
0 -> 看电影要认真。。
5 -> 一日一记,只为发现和记录最真实的温州。
0 -> 话题大爆炸,让你中招流泪的社会话题,刺穿你的心脏!
8 -> 这里是一份记录「sparkle things」的收藏夹清单(信息源筛选频道)
1 -> 雅思/ 托福 /GRE /GMAT / SAT 留学预备课程 /流利口语 / 雅思机经免费领还有更多学习资料
7 -> 想咨询的朋友加微信 manmanjun08
6 -> 欢乐抬杠, 杠精侃财!
7 -> 专门分享社保等民生知识
8 -> 真的是《第一时间》官方哦!
4 -> 公众号:郑在秀 微博:@扎心师郑实
3 -> 不要说我厚颜无耻,说也不接受,略略略
0 -> 单身独立女性生活日志
3 -> 保险套路多,配置保险要理性! 微信(注明来意):ZhangZhiYong-info
0 -> 有什么想看的可以私信我
0 -> 欢迎各位喜爱“财知生活”的朋友们加入QQ群629254508,一起学习财经知识。财经,从未如此简单。
8 -> 和你一起看天下~每周《老外看东西》精彩不断,不要错过哦~
3 -> 中韩翻译家,代表作:霸王别姬,七月与安生,何以笙箫默等
5 -> 说故事 讲道理 学姿势 涨技能 出点子 玩广告 想创意 解难题
4 -> 视觉化阅读,让读书变得更简单,锦灰视读

Process finished with exit code 0