文本聚类

数据集 THUnews中文新闻文本分类

方法 jieba分词后,使用tf-idf提取特征,提取时使用停用词表删除停用词,最后使用kmeans进行聚类。

优化 优化停用词表,增加max_feature特征,使用minibatchkmeans增加聚类速度

评价标准 外在(已知标签) 兰德基数RI ,调整兰德基数 ARI
内在 轮廓系数
from sklearn.feature_extraction.text import TfidfVectorizer import paddlenlp
from sklearn.cluster import KMeans import jieba
读取数据,数据集为THUnews新闻文本分类数据,使用jieba分词
with open('data/data12701/Train.txt','r',encoding='utf-8') as f: content=f.
readlines() data=[] label=[] for i in content: t=i.split('\t') t[2]=(" ").join(
[w for w in jieba.cut(t[2])] ) data.append(t[2]) label.append(t[1]) print(label[
:5]) print(len(label)) Building prefix dict from the default dictionary ...
Dumping model to file cache /tmp/jieba.cache Loading model cost 0.851 seconds.
Prefix dict has been built successfully. ['财经', '财经', '财经', '财经', '财经'] 752476
划分数据集,由于数据过多,测试集增加划分,并乱序
from sklearn.model_selection import train_test_split train_data,test_data,
train_label,test_label=train_test_split(data,label,test_size=0.9,shuffle=True)
print(len(train_data)) print(train_label[:5]) 75247 ['科技', '股票', '时尚', '体育',
'社会']
读取停用词表,在tf-idf提取特征时,选择能表示文本主题的词语作为特征
with open('data/cn_stop.txt','r',encoding='utf-8') as f: stopwords=f.readlines(
) tf_idf=TfidfVectorizer(max_features=20000,stop_words=stopwords) tf=tf_idf.
fit_transform(data) print(tf.shape)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/feature_extraction/text.py:391:
UserWarning: Your stop_words may be inconsistent with your preprocessing.
Tokenizing the stop words generated tokens ['exp', 'lex', 'sub', 'sup', '①①',
'①②', '①③', '①④', '①⑤', '①⑥', '①⑦', '①⑧', '①⑨', '①a', '①b', '①c', '①d', '①e',
'①f', '①g', '①h', '①i', '①o', '②①', '②②', '②③', '②④', '②⑤', '②⑥', '②⑦', '②⑧',
'②⑩', '②a', '②b', '②c', '②d', '②e', '②f', '②g', '②h', '②i', '②j', '③①', '③⑩',
'③a', '③b', '③c', '③d', '③e', '③f', '③g', '③h', '④a', '④b', '④c', '④d', '④e',
'⑤a', '⑤b', '⑤d', '⑤e', '⑤f', '一一', '一下', '一个', '一些', '一何', '一切', '一则', '一则通过',
'一天', '一定', '一方面', '一旦', '一时', '一来', '一样', '一次', '一片', '一番', '一直', '一致', '一般',
'一起', '一转眼', '一边', '一面', '万一', '三天两头', '三番两次', '三番五次', '上下', '上升', '上去', '上来',
'上述', '上面', '下列', '下去', '下来', '下面', '不一', '不下', '不久', '不了', '不亦乐乎', '不仅',
'不仅仅', '不仅仅是', '不会', '不但', '不光', '不免', '不再', '不力', '不单', '不变', '不只', '不可',
'不可开交', '不可抗拒', '不同', '不外', '不外乎', '不够', '不大', '不如', '不妨', '不定', '不对', '不少',
'不尽', '不尽然', '不巧', '不已', '不常', '不得', '不得不', '不得了', '不得已', '不必', '不怎么', '不怕',
'不惟', '不成', '不拘', '不择手段', '不敢', '不料', '不断', '不日', '不时', '不是', '不曾', '不止',
'不止一次', '不比', '不消', '不满', '不然', '不然的话', '不特', '不独', '不由得', '不知不觉', '不管',
'不管怎样', '不经意', '不胜', '不能', '不能不', '不至于', '不若', '不要', '不论', '不起', '不足', '不过',
'不迭', '不问', '不限', '与其', '与其说', '与否', '与此同时', '专门', '且不说', '且说', '两者', '严格',
'严重', '个人', '个别', '中小', '中间', '丰富', '串行', '临到', '为主', '为了', '为什么', '为什麽', '为何',
'为止', '为此', '为着', '主张', '主要', '举凡', '举行', '乃至', '乃至于', '之一', '之前', '之后', '之後',
'之所以', '之类', '乌乎', '乘势', '乘机', '乘胜', '乘虚', '乘隙', '也好', '也就是说', '也是', '也罢',
'了解', '争取', '二来', '二话不说', '二话没说', '于是', '于是乎', '云云', '云尔', '互相', '交口', '产生',
'亲口', '亲手', '亲眼', '亲自', '亲身', '人人', '人们', '人家', '人民', '什么', '什么样', '什麽', '仅仅',
'今后', '今天', '今年', '今後', '介于', '仍旧', '仍然', '从不', '从严', '从中', '从事', '从今以后', '从优',
'从古到今', '从古至今', '从头', '从宽', '从小', '从新', '从无到有', '从早到晚', '从未', '从来', '从此',
'从此以后', '从而', '从轻', '从速', '从重', '他人', '他们', '他是', '他的', '代替', '以上', '以下', '以为',
'以便', '以免', '以前', '以及', '以后', '以外', '以後', '以故', '以期', '以来', '以至', '以至于', '以致',
'任何', '任凭', '任务', '企图', '伙同', '伟大', '传说', '传闻', '似乎', '似的', '但凡', '但愿', '但是',
'何乐而不为', '何以', '何况', '何处', '何妨', '何尝', '何必', '何时', '何止', '何苦', '何须', '余外',
'作为', '你们', '你是', '你的', '使得', '使用', '例如', '依据', '依照', '依靠', '便于', '促进', '保持',
'保管', '保险', '俺们', '倍加', '倍感', '倒不如', '倒不如说', '倒是', '倘使', '倘或', '倘然', '倘若',
'借以', '借此', '假使', '假如', '假若', '偏偏', '做到', '偶尔', '偶而', '傥然', '允许', '充其极', '充其量',
'充分', '先不先', '先后', '先後', '先生', '光是', '全体', '全力', '全年', '全然', '全身心', '全部', '全都',
'全面', '八成', '公然', '共同', '共总', '关于', '其一', '其中', '其二', '其他', '其余', '其后', '其它',
'其实', '其次', '具体', '具体地说', '具体来说', '具体说来', '具有', '兼之', '再其次', '再则', '再有', '再次',
'再者', '再者说', '再说', '决不', '决定', '决非', '况且', '准备', '凑巧', '凝神', '几乎', '几度', '几时',
'几番', '几经', '凡是', '凭借', '出于', '出去', '出来', '出现', '分别', '分头', '分期', '分期分批',
'切不可', '切切', '切勿', '切莫', '则甚', '刚好', '刚巧', '刚才', '别人', '别处', '别是', '别的', '别管',
'别说', '到了儿', '到处', '到头', '到头来', '到底', '到目前为止', '前后', '前此', '前者', '前进', '前面',
'加上', '加之', '加以', '加入', '加强', '动不动', '动辄', '勃然', '匆匆', '十分', '千万', '千万千万',
'单单', '单纯', '即令', '即使', '即便', '即刻', '即如', '即将', '即或', '即是说', '即若', '却不', '原来',
'又及', '及其', '及时', '及至', '双方', '反之', '反之亦然', '反之则', '反倒', '反倒是', '反应', '反手',
'反映', '反而', '反过来', '反过来说', '取得', '取道', '受到', '变成', '古来', '另一个', '另一方面', '另外',
'另悉', '另方面', '另行', '只当', '只怕', '只是', '只有', '只消', '只要', '只限', '叫做', '召开', '叮咚',
'叮当', '可以', '可好', '可是', '可能', '可见', '各个', '各人', '各位', '各地', '各式', '各种', '各级',
'各自', '合理', '同一', '同时', '同样', '后来', '后者', '后面', '向使', '向着', '否则', '吧哒', '呆呆地',
'呜呼', '周围', '呵呵', '呼哧', '呼啦', '咱们', '哈哈', '哎呀', '哎哟', '哗啦', '哪个', '哪些', '哪儿',
'哪天', '哪年', '哪怕', '哪样', '哪边', '哪里', '哼唷', '唯有', '啊呀', '啊哈', '啊哟', '啪达', '啷当',
'喔唷', '嗡嗡', '嘎嘎', '嘎登', '嘿嘿', '因为', '因了', '因此', '因着', '因而', '固然', '在下', '在于',
'坚决', '坚持', '基于', '基本', '基本上', '处在', '处处', '处理', '复杂', '多么', '多亏', '多多',
'多多少少', '多多益善', '多少', '多年前', '多年来', '多数', '多次', '够瞧的', '大不了', '大举', '大事', '大体',
'大体上', '大凡', '大力', '大多', '大多数', '大大', '大家', '大张旗鼓', '大批', '大抵', '大概', '大略',
'大约', '大致', '大都', '大量', '大面儿上', '失去', '奋勇', '她们', '她是', '她的', '好在', '好的', '好象',
'如上', '如上所述', '如下', '如今', '如何', '如其', '如前所述', '如同', '如常', '如是', '如期', '如果',
'如次', '如此', '如此等等', '如若', '始而', '姑且', '存在', '存心', '孰料', '孰知', '宁可', '宁愿', '宁肯',
'它们', '它们的', '它是', '它的', '安全', '完全', '完成', '实现', '实际', '宣布', '容易', '密切', '对于',
'对应', '对待', '对方', '对比', '将才', '将要', '将近', '少数', '尔后', '尔尔', '尔等', '尚且', '尤其',
'就地', '就是', '就是了', '就是说', '就此', '就算', '就要', '尽可能', '尽如人意', '尽心尽力', '尽心竭力',
'尽快', '尽早', '尽然', '尽管', '尽管如此', '尽量', '局外', '居然', '届时', '属于', '屡屡', '屡次',
'屡次三番', '岂但', '岂止', '岂非', '川流不息', '左右', '巨大', '巩固', '差一点', '差不多', '已矣', '已经',
'巴巴', '帮助', '常常', '常言说', '常言说得好', '常言道', '平素', '年复一年', '并不', '并不是', '并且', '并排',
'并无', '并没', '并没有', '并肩', '并非', '广大', '广泛', '应当', '应用', '应该', '庶乎', '庶几', '开外',
'开始', '开展', '引起', '弹指之间', '强烈', '强调', '归根到底', '归根结底', '归齐', '当下', '当中', '当儿',
'当前', '当即', '当口儿', '当地', '当场', '当头', '当庭', '当时', '当然', '当真', '当着', '形成', '彻夜',
'彻底', '彼时', '彼此', '往往', '待到', '很多', '很少', '後来', '後面', '得了', '得出', '得到', '得天独厚',
'得起', '心里', '必定', '必将', '必然', '必要', '必须', '快要', '忽地', '忽然', '怎么', '怎么办', '怎么样',
'怎奈', '怎样', '怎麽', '急匆匆', '怪不得', '总之', '总是', '总的来看', '总的来说', '总的说来', '总结',
'总而言之', '恍然', '恐怕', '恰似', '恰好', '恰如', '恰巧', '恰恰', '恰恰相反', '恰逢', '您们', '您是',
'惟其', '惯常', '意思', '愤然', '愿意', '慢说', '成为', '成年', '成年累月', '成心', '我们', '我是', '我的',
'或则', '或多或少', '或是', '或曰', '或者', '或许', '战斗', '截然', '截至', '所以', '所在', '所幸', '所有',
'所谓', '才能', '扑通', '打从', '打开天窗说亮话', '扩大', '抑或', '抽冷子', '拦腰', '按时', '按期', '按照',
'按理', '按说', '挨个', '挨家挨户', '挨次', '挨着', '挨门挨户', '挨门逐户', '换句话说', '换言之', '据实',
'据悉', '据我所知', '据此', '据称', '据说', '掌握', '接下来', '接着', '接著', '接连不断', '放量', '故意',
'故此', '故而', '敞开儿', '敢于', '敢情', '整个', '断然', '方便', '方才', '方能', '方面', '旁人', '无宁',
'无法', '无论', '既往', '既是', '既然', '日复一日', '日渐', '日益', '日臻', '日见', '时候', '昂然', '明显',
'明确', '是不是', '是以', '是否', '是的', '显然', '显著', '普通', '普遍', '暗中', '暗地里', '暗自', '更为',
'更加', '更进一步', '曾经', '替代', '最后', '最大', '最好', '最後', '最近', '最高', '有些', '有关', '有利',
'有力', '有及', '有所', '有效', '有时', '有点', '有的', '有的是', '有着', '有著', '朝着', '本人', '本地',
'本着', '本身', '权时', '来不及', '来得及', '来看', '来着', '来自', '来讲', '来说', '极为', '极了', '极其',
'极力', '极大', '极度', '极端', '构成', '果然', '果真', '某个', '某些', '某某', '根据', '根本', '格外',
'次第', '欢迎', '正值', '正在', '正如', '正巧', '正常', '正是', '此中', '此后', '此地', '此处', '此外',
'此时', '此次', '此间', '毋宁', '每个', '每天', '每年', '每当', '每时每刻', '每每', '每逢', '比及', '比如',
'比如说', '比方', '比照', '比起', '比较', '毕竟', '毫不', '毫无', '毫无例外', '毫无保留地', '沙沙', '没奈何',
'没有', '沿着', '注意', '深入', '清楚', '满足', '漫说', '然则', '然后', '然後', '然而', '照着', '牢牢',
'特别是', '特殊', '特点', '犹且', '犹自', '独自', '猛然', '猛然间', '率尔', '率然', '现代', '现在', '理应',
'理当', '理该', '瑟瑟', '甚且', '甚么', '甚或', '甚而', '甚至', '甚至于', '用来', '由于', '由是', '由此',
'由此可见', '略为', '略加', '略微', '白白', '的确', '的话', '皆可', '目前', '直到', '直接', '相似', '相信',
'相反', '相同', '相对', '相对而言', '相应', '相当', '相等', '省得', '看上去', '看出', '看到', '看来',
'看样子', '看看', '看见', '看起来', '真是', '真正', '眨眼', '着呢', '矣乎', '矣哉', '知道', '确定', '碰巧',
'社会主义', '积极', '移动', '究竟', '穷年累月', '突出', '突然', '立刻', '立即', '立地', '立时', '立马',
'竟然', '竟而', '第二', '等到', '等等', '策略地', '简直', '简而言之', '简言之', '类如', '精光', '紧接着',
'累年', '累次', '纯粹', '纵令', '纵使', '纵然', '练习', '组成', '经常', '经过', '结合', '结果', '绝不',
'绝对', '绝非', '绝顶', '继之', '继后', '继续', '继而', '维持', '综上所述', '缕缕', '罢了', '老大', '老是',
'老老实实', '考虑', '而且', '而况', '而又', '而后', '而外', '而已', '而是', '而言', '而论', '联系', '联袂',
'背地里', '背靠背', '能否', '能够', '自个儿', '自从', '自各儿', '自后', '自家', '自己', '自打', '自身',
'至于', '至今', '至若', '般的', '良好', '若夫', '若是', '若果', '若非', '范围', '莫不', '莫不然', '莫如',
'莫若', '莫非', '获得', '藉以', '虽则', '虽然', '虽说', '行为', '行动', '表明', '表示', '要不', '要不是',
'要不然', '要么', '要是', '要求', '规定', '觉得', '譬喻', '譬如', '认为', '认真', '认识', '许多', '论说',
'设使', '设或', '设若', '诚如', '诚然', '话说', '该当', '说明', '说来', '说说', '请勿', '诸位', '诸如',
'谁人', '谁料', '谁知', '豁然', '贼死', '赖以', '赶快', '赶早不赶晚', '起先', '起初', '起头', '起来',
'起见', '起首', '趁便', '趁势', '趁早', '趁机', '趁热', '趁着', '越是', '路经', '转动', '转变', '转贴',
'轰然', '较为', '较之', '较比', '达到', '达旦', '迅速', '过于', '过去', '过来', '运用', '近几年来',
'近年来', '近来', '还是', '还有', '还要', '这一来', '这个', '这么', '这么些', '这么样', '这么点儿', '这些',
'这会儿', '这儿', '这就是说', '这时', '这样', '这次', '这点', '这种', '这般', '这边', '这里', '这麽',
'进入', '进去', '进来', '进步', '进而', '进行', '连同', '连声', '连日', '连日来', '连袂', '连连', '迟早',
'迫于', '适应', '适当', '适用', '逐步', '逐渐', '通常', '通过', '造成', '遇到', '遭到', '遵循', '遵照',
'避免', '那个', '那么', '那么些', '那么样', '那些', '那会儿', '那儿', '那时', '那末', '那样', '那般',
'那边', '那里', '那麽', '部分', '鄙人', '采取', '里面', '重大', '重新', '重要', '鉴于', '针对', '长期以来',
'长此下去', '长线', '长话短说', '问题', '间或', '防止', '附近', '陈年', '限制', '陡然', '除了', '除却',
'除去', '除外', '除开', '除此', '除此之外', '除此以外', '除此而外', '除非', '随后', '随时', '随着', '随著',
'隔夜', '隔日', '难得', '难怪', '难说', '难道', '难道说', '集中', '需要', '非但', '非常', '非徒', '非得',
'非特', '非独', '顶多', '顷刻', '顷刻之间', '顷刻间', '顺着', '顿时', '风雨无阻', '首先', '马上', '高低',
'高兴', '默然', '默默地', '12', 'li', 'ng昉', 'zxfitl'] not in stop_words.
'stop_words.' % sorted(inconsistent)) (752476, 20000) test=tf_idf.transform(
test_data)
为了增加聚类速度,使用minibatchkmeans,由于sklearn用于实验,如果向工业应用,进一步提高速度,可使用elkan
K-Means,两边之和大于第三边减少计算距离运算。
from sklearn.cluster import MiniBatchKMeans k=MiniBatchKMeans( init='k-means++'
, batch_size=10, n_clusters=10) result=k.fit(test) pre=result.labels_ print(len(
pre)) print(len(test_label)) 677229 677229
聚类效果评价标准 :纯度,RI兰德基数,ARI调整兰德基数
from sklearn.metrics import adjusted_rand_score,rand_score ari_score=
adjusted_rand_score(test_label,pre) ri_score=rand_score(test_label,pre) print(
ari_score) print(ri_score)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/metrics/cluster/_supervised.py:389:
RuntimeWarning: overflow encountered in long_scalars return 2. * (tp * tn - fn
* fp) / ((tp + fn) * (fn + tn) +
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/metrics/cluster/_supervised.py:390:
RuntimeWarning: overflow encountered in long_scalars (tp + fp) * (fp + tn))
-1.8037125749433274 0.4364017709049443
无监督聚类评价标准 silhouete_score 轮廓系数,由于计算过慢,没有增加

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信