NLP第7课:动手实战基于 ML 的中文短文本聚类

文本聚类是将一个个文档由原有的自然语言文字信息转化成数学信息,以高维空间点的形式展现出来,通过计算哪些点距离比较近,从而将那些点聚成一个簇,簇的中心叫做簇心。一个好的聚类要保证簇内点的距离尽量的近,但簇与簇之间的点要尽量的远。

如下图,以 K、M、N 三个点分别为聚类的簇心,将结果聚为三类,使得簇内点的距离尽量的近,但簇与簇之间的点尽量的远。


v2-351a1239cfafa1b59cafa33e7b42a6ea_b.jpg


开发环境,我们选择:

  1. MAC 系统
  2. Python 3.6
  3. Jupyter Notebook

本文继续沿用上篇文本分类中的语料来进行文本无监督聚类操作。

整个过程分为以下几个步骤

  • 语料加载
  • 分词
  • 去停用词
  • 抽取词向量特征
  • 实战 TF-IDF 的中文文本 K-means 聚类
  • 实战 word2Vec 的中文文本 K-means 聚类

下面开始项目实战。

1. 首先进行语料加载,在这之前,引入所需要的 Python 依赖包,并将全部语料和停用词字典读入内存中。

第一步,引入依赖库,有随机数库、jieba 分词、pandas 库等:

        import random
    import jieba
    import pandas as pd
    import numpy as np
    from sklearn.feature_extraction.text import TfidfTransformer
    from sklearn.feature_extraction.text import TfidfVectorizer
    import matplotlib.pyplot as plt
    from sklearn.decomposition import PCA
    from sklearn.cluster import KMeans
    import gensim
    from gensim.models import Word2Vec
    from sklearn.preprocessing import scale
    import multiprocessing
      

第二步,加载停用词字典,停用词词典为 stopwords.txt 文件,可以根据场景自己在该文本里面添加要去除的词(比如冠词、人称、数字等特定词):

        #加载停用词
    stopwords=pd.read_csv('stopwords.txt',index_col=False,quoting=3,sep="\t",names=['stopword'], encoding='utf-8')
    stopwords=stopwords['stopword'].values
      

第三步,加载语料,语料是4个已经分好类的 csv 文件,直接用 pandas 加载即可,加载之后可以首先删除 nan 行,并提取要

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值