通过对特征做一个kmeans聚类,将聚类的结果做为文本的标签值,可以使得样本的特征更多

我们从sklearn.cluster中导入Kmeans建立模型进行聚类

代码:

第一步:使用Dataframe格式化数据和使用数据格式化数据

第二步:对字符串进行分词和去除停用词,并使用' '.join完成连接

第三步:使用np.vectorizer向量化函数,调用函数进行分词和去除停用词

第四步:使用Tfidfvectorizer构造词袋模型

第五步:使用cosine_similarity构造相关性矩阵

第六步:对相关性矩阵进行聚类操作,将增加的聚类标签添加到原始数据中

import pandas as pd
import numpy as np
import re
import nltk #pip install nltk
corpus = ['The sky is blue and beautiful.','Love this blue and beautiful sky!','The quick brown fox jumps over the lazy dog.','The brown fox is quick and the blue dog is lazy!','The sky is very blue and the sky is very beautiful today','The dog is lazy but the brown fox is quick!'
]labels = ['weather', 'weather', 'animals', 'animals', 'weather', 'animals']# 第一步:构建DataFrame格式数据
corpus = np.array(corpus)
corpus_df = pd.DataFrame({'Document': corpus, 'categoray': labels})# 第二步:构建函数进行分词和停用词的去除
# 载入英文的停用词表
stopwords = nltk.corpus.stopwords.words('english')
# 建立词分割模型
cut_model = nltk.WordPunctTokenizer()
# 定义分词和停用词去除的函数
def Normalize_corpus(doc):# 去除字符串中结尾的标点符号doc = re.sub(r'[^a-zA-Z0-9\s]', '', string=doc)# 是字符串变小写格式doc = doc.lower()# 去除字符串两边的空格doc = doc.strip()# 进行分词操作tokens = cut_model.tokenize(doc)# 使用停止用词表去除停用词doc = [token for token in tokens if token not in stopwords]# 将去除停用词后的字符串使用' '连接,为了接下来的词袋模型做准备doc = ' '.join(doc)return doc# 第三步:向量化函数和调用函数
# 向量化函数,当输入一个列表时,列表里的数将被一个一个输入,最后返回也是一个个列表的输出
Normalize_corpus = np.vectorize(Normalize_corpus)
# 调用函数进行分词和去除停用词
corpus_norm = Normalize_corpus(corpus)# 第四步:使用TfidVectorizer进行TF-idf词袋模型的构建
from sklearn.feature_extraction.text import TfidfVectorizerTf = TfidfVectorizer(use_idf=True)
Tf.fit(corpus_norm)
vocs = Tf.get_feature_names()
corpus_array = Tf.transform(corpus_norm).toarray()
corpus_norm_df = pd.DataFrame(corpus_array, columns=vocs)
print(corpus_norm_df.head())
# 第四步:使用TfidVectorizer进行TF-idf词袋模型的构建
from sklearn.feature_extraction.text import TfidfVectorizerTf = TfidfVectorizer(use_idf=True)
Tf.fit(corpus_norm)
vocs = Tf.get_feature_names()
corpus_array = Tf.transform(corpus_norm).toarray()
corpus_norm_df = pd.DataFrame(corpus_array, columns=vocs)
print(corpus_norm_df.head())# 第五步:使用cosine_similarity构造相关性矩阵
from sklearn.metrics.pairwise import cosine_similaritysimilarity_matrix = cosine_similarity(corpus_array)
similarity_matrix_df = pd.DataFrame(similarity_matrix)# 第六步:构造聚类特征,这里主要是对相关性矩阵做的一种聚类,也可以对词袋模型特征做from sklearn.cluster import KMeansmodel = KMeans(n_clusters=2)
model.fit(np.array(similarity_matrix))
print(model.labels_)
corpus_norm_df['k_labels'] = np.array(model.labels_)
print(corpus_norm_df.head())

转载于:https://www.cnblogs.com/my-love-is-python/p/10325326.html

机器学习入门-文本数据-使用聚类增加文本的标签属性相关推荐

  1. php 给富文本里的图片增加ALT、TITLE属性

    php 给富文本里的图片增加ALT.TITLE属性 $text = '内容<img src="http://www.test.com/test1.jpg">内容'; $ ...

  2. python读取微博文本数据,对微博文本进行分句(分句主要以特定的标点符号为主)。...

    首先,您需要安装 Python 的第三方库 jieba,可以使用 pip install jieba 命令安装. 然后,您需要使用 Python 的文件操作函数读取微博文本数据,例如使用 open() ...

  3. torchtext处理文本数据——构造dataset读取文本(学习一)

    pytorch使用torchtext模块处理文本的思路不太容易上手,基本的思路是: 定义每一列该如何处理每一个单元格的数据,这个叫做tokenize 比如单元格里是个句子,那么我们按空格切分:那如果是 ...

  4. js 实现拷贝页面文本数据时,给文本结尾添加文本的出处”p这段文本来自我的js练习/p”。

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 机器学习入门iris数据加载

    调用sklearn模块里的datasets from sklearn import datasets iris=datasets.load_iris() 把iris的参数数据赋值给x 把iris的结果 ...

  6. html 忽略标签属性,限制文本一定数目的字符忽略HTML标签/属性

    地带的所有的HTML从与正则表达式的字符串标签和然后子串 var new_string = text_string.replace(/]*>/g, "").substring ...

  7. 【CIPS 2016】(6-7章)知识图谱、文本分类与聚类(研究进展、现状趋势)

    CIPS 2016 笔记整理 <中文信息处理发展报告(2016)>是中国中文信息学会召集专家对本领域学科方 向和前沿技术的一次梳理,官方定位是深度科普,旨在向政府.企业.媒体等对中文 信息 ...

  8. 给你的数据加上杠杆:文本增强技术的研究进展及应用实践

    文章目录 1. 为什么要了解文本增强技术 2. 典型技术方案 2.1. 回译(Back translation) 2.2. 随机词替换 2.3. 非核心词替换 2.4. 基于上下文信息的文本增强 2. ...

  9. 大数据可视化(六)文本数据可视化

    文本数据可视化 在于利用可视化技术刻画文本和文档,将其中的信息直观的呈现. 文本数据在大数据中的应用及提取 文本数据在大数据中的应用 对文本的理解需求分为三级:词汇级.语法级和语义级. 词汇级使用各类 ...

最新文章

  1. php中使用mysql_fetch_array输出数组至页面中展示
  2. A Multi-task Deep Network for Person Re-identification
  3. MRP例外消息处理方法
  4. 【实操】深度学习网络万万千,到底怎么把我的数据放进去?
  5. git 拉取远程分支到本地
  6. java、sqlserver复习
  7. python 怎么查看变量的数据类型
  8. 换位思考的最高境界是换待遇,所以,换位思考就是空话!!!
  9. 网络爬虫--5.urllib库的基本使用(1)
  10. python逻辑流程图_python-程序流程图
  11. 老人言 摘自云风的blog
  12. HTTP Basic Authentication验证WCF Data Service
  13. 从零开始webpack搭建项目
  14. MATLAB与DPS做Mann-Kendall显著性检验
  15. 吴昊品游戏核心算法 Round 5 —— 五子棋(无禁手)后台的判胜负AI(bfs+queue容器)(HDOJ 2699)...
  16. 【推荐系统】Criteo数据集介绍
  17. 密码学hash函数-SHA256-512
  18. 字符型数据与数值型数据之间的转换
  19. (附源码)springboot汽车配件销售管理系统 毕业设计131650
  20. oracle当中怎么保留两位小数

热门文章

  1. select 选择器php,php – 选择laravel 5.4中下拉列表的选定值
  2. Java更改中文_Java中文编程开发,让Java编写更改复杂
  3. mongDB update 修改器
  4. CDH 组件升级:zookeeper升级到 3.4.14
  5. Java实现根据地理位置获取经纬度
  6. 对现代C++的一点看法
  7. day15:磁盘格式化和挂载
  8. Theano - 更多的例子
  9. oracle 12c 新特性之不可见字段
  10. webstrom 中 plugins error 设置里 Languages Frameworks里面没有JavaScript?