函数说明

1.LDA(n_topics, max_iters, random_state)  用于构建LDA主题模型,将文本分成不同的主题

参数说明:n_topics 表示分为多少个主题, max_iters表示最大的迭代次数, random_state 表示随机种子

2. LDA.components_ 打印输入特征的权重参数,

LDA主题模型:可以用于做分类,好比如果是两个主题的话,那就相当于是分成了两类,同时我们也可以找出根据主题词的权重值,来找出一些主题的关键词

使用sklearn导入库

from sklearn.decomposition  import  LatentDirichletAllocation, 使用方法还是fit_transform

LDA.components_ 打印出各个参数的权重值,这个权重值是根据数据特征的标签来进行排列的

代码:

第一步:Dataframe化数据

第二步:进行分词和停用词的去除,使用' '.join 为了词袋模型做准备

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

第四步:使用Tf-idf 函数构建词袋模型

第五步:使用LatentDirichletAllocation构建LDA模型,并进行0,1标签的数字映射

第六步:使用LDA.components_打印输入特征标签的权重得分,去除得分小于0.6的得分,我们可以看出哪些词是主要的关键字

  1. import pandas as pd
  2. import numpy as np
  3. import re
  4. import nltk #pip install nltk
  5.  
  6. corpus = ['The sky is blue and beautiful.',
  7. 'Love this blue and beautiful sky!',
  8. 'The quick brown fox jumps over the lazy dog.',
  9. 'The brown fox is quick and the blue dog is lazy!',
  10. 'The sky is very blue and the sky is very beautiful today',
  11. 'The dog is lazy but the brown fox is quick!'
  12. ]
  13.  
  14. labels = ['weather', 'weather', 'animals', 'animals', 'weather', 'animals']
  15.  
  16. # 第一步:构建DataFrame格式数据
  17. corpus = np.array(corpus)
  18. corpus_df = pd.DataFrame({'Document': corpus, 'categoray': labels})
  19.  
  20. # 第二步:构建函数进行分词和停用词的去除
  21. # 载入英文的停用词表
  22. stopwords = nltk.corpus.stopwords.words('english')
  23. # 建立词分割模型
  24. cut_model = nltk.WordPunctTokenizer()
  25. # 定义分词和停用词去除的函数
  26. def Normalize_corpus(doc):
  27. # 去除字符串中结尾的标点符号
  28. doc = re.sub(r'[^a-zA-Z0-9\s]', '', string=doc)
  29. # 是字符串变小写格式
  30. doc = doc.lower()
  31. # 去除字符串两边的空格
  32. doc = doc.strip()
  33. # 进行分词操作
  34. tokens = cut_model.tokenize(doc)
  35. # 使用停止用词表去除停用词
  36. doc = [token for token in tokens if token not in stopwords]
  37. # 将去除停用词后的字符串使用' '连接,为了接下来的词袋模型做准备
  38. doc = ' '.join(doc)
  39.  
  40. return doc
  41.  
  42. # 第三步:向量化函数和调用函数
  43. # 向量化函数,当输入一个列表时,列表里的数将被一个一个输入,最后返回也是一个个列表的输出
  44. Normalize_corpus = np.vectorize(Normalize_corpus)
  45. # 调用函数进行分词和去除停用词
  46. corpus_norm = Normalize_corpus(corpus)
  47.  
  48. # 第四步:使用TfidVectorizer进行TF-idf词袋模型的构建
  49. from sklearn.feature_extraction.text import TfidfVectorizer
  50.  
  51. Tf = TfidfVectorizer(use_idf=True)
  52. Tf.fit(corpus_norm)
  53. vocs = Tf.get_feature_names()
  54. corpus_array = Tf.transform(corpus_norm).toarray()
  55. corpus_norm_df = pd.DataFrame(corpus_array, columns=vocs)
  56. print(corpus_norm_df.head())
  57.  
  58. # 第五步:构建LDA主题模型
  59. from sklearn.decomposition import LatentDirichletAllocation
  60.  
  61. LDA = LatentDirichletAllocation(n_topics=2, max_iter=100, random_state=42)
  62. LDA_corpus = np.array(LDA.fit_transform(corpus_array))
  63. LDA_corpus_one = np.zeros([LDA_corpus.shape[0]])
  64. LDA_corpus_one[LDA_corpus[:, 0] < LDA_corpus[:, 1]] = 1
  65. corpus_norm_df['LDA_labels'] = LDA_corpus_one
  66. print(corpus_norm_df.head())

  1. # 第六步:打印每个单词的主题的权重值
  2. tt_matrix = LDA.components_
  3. for tt_m in tt_matrix:
  4. tt_dict = [(name, tt) for name, tt in zip(vocs, tt_m)]
  5. tt_dict = sorted(tt_dict, key=lambda x: x[1], reverse=True)
  6. # 打印权重值大于0.6的主题词
  7. tt_dict = [tt_threshold for tt_threshold in tt_dict if tt_threshold[1] > 0.6]
  8. print(tt_dict)

大于0.6权重得分的部分特征

机器学习入门-文本特征-使用LDA主题模型构造标签 1.LatentDirichletAllocation(LDA用于构建主题模型) 2.LDA.components(输出各个词向量的权重值)的更多相关文章

  1. 机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv['sky']输出这个词的向量映射 3.model.wv.index2vec(输出经过映射的词名称)

    函数说明: 1. from gensim.model import word2vec  构建模型 word2vec(corpus_token, size=feature_size, min_count ...

  2. 机器学习入门-文本数据-构造Ngram词袋模型 1.CountVectorizer(ngram_range) 构建Ngram词袋模型

    函数说明: 1 CountVectorizer(ngram_range=(2, 2)) 进行字符串的前后组合,构造出新的词袋标签 参数说明:ngram_range=(2, 2) 表示选用2个词进行前后 ...

  3. 机器学习入门-数值特征-数字映射和one-hot编码 1.LabelEncoder(进行数据自编码) 2.map(进行字典的数字编码映射) 3.OnehotEncoder(进行one-hot编码) 4.pd.get_dummies(直接对特征进行one-hot编码)

    1.LabelEncoder() # 用于构建数字编码 2 .map(dict_map)  根据dict_map字典进行数字编码的映射 3.OnehotEncoder()  # 进行one-hot编码 ...

  4. 机器学习入门09 - 特征组合 (Feature Crosses)

    原文链接:https://developers.google.com/machine-learning/crash-course/feature-crosses/ 特征组合是指两个或多个特征相乘形成的 ...

  5. 机器学习入门-文本数据-构造词频词袋模型 1.re.sub(进行字符串的替换) 2.nltk.corpus.stopwords.words(获得停用词表) 3.nltk.WordPunctTokenizer(对字符串进行分词操作) 4.np.vectorize(对函数进行向量化) 5. CountVectorizer(构建词频的词袋模型)

    函数说明: 1. re.sub(r'[^a-zA-Z0-9\s]', repl='', sting=string)  用于进行字符串的替换,这里我们用来去除标点符号 参数说明:r'[^a-zA-Z0- ...

  6. 机器学习入门-文本数据-构造Tf-idf词袋模型(词频和逆文档频率) 1.TfidfVectorizer(构造tf-idf词袋模型)

    TF-idf模型:TF表示的是词频:即这个词在一篇文档中出现的频率 idf表示的是逆文档频率, 即log(文档的个数/1+出现该词的文档个数)  可以看出出现该词的文档个数越小,表示这个词越稀有,在这 ...

  7. 机器学习入门-数值特征-对数据进行log变化

    对于一些标签和特征来说,分布不一定符合正态分布,而在实际的运算过程中则需要数据能够符合正态分布 因此我们需要对特征进行log变化,使得数据在一定程度上可以符合正态分布 进行log变化,就是对数据使用n ...

  8. 机器学习入门-数值特征-数据四分位特征 1.quantile(用于求给定分数位的数值) 2.plt.axvline(用于画出竖线) 3.pd.pcut(对特征进行分位数切分,生成新的特征)

    函数说明: 1.  .quantile(cut_list) 对DataFrame类型直接使用,用于求出给定列表中分数的数值,这里用来求出4分位出的数值 2.  plt.axvline()  # 用于画 ...

  9. 机器学习入门-数值特征-连续数据离散化(进行分段标记处理) 1.hist(Dataframe格式直接画直方图)

    函数说明: 1. .hist 对于Dataframe格式的数据,我们可以使用.hist直接画出直方图 对于一些像年龄和工资一样的连续数据,我们可以对其进行分段标记处理,使得这些连续的数据变成离散化 就 ...

随机推荐

  1. Zipkin和Brave实现http服务调用的跟踪

    使用Zipkin和Brave实现http服务调用的跟踪,Brave 是用来装备Java程序的类库,提供了面向标准Servlet.Spring MVC.Http Client.JAX RS.Jersey ...

  2. [UE4]爆头和穿墙

    一.LineTracebyChannel的Out Hit值展开后有一个名为“Hit Bone Name”(击中的骨骼名称),以此来判断击中的是否是头部,进而实现爆头的目的(爆头:高伤害,一枪毙命) 二 ...

  3. c#属性 ——面向对象

    String. Format(字符串格式化输出) 相当于Console.WriteLine(字符串格式化输出); 而String.Format是返回一个字符串 属性: 因为把字段全public,会非常 ...

  4. sshd服务安装

    SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 作用:sshd服务使用SSH协议可以用来进行远程控制, 或在计算 ...

  5. HBase核心知识点总结

    一.HBase介绍 1.基本概念 HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键.列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平 ...

  6. 用singleton单例模式实现一个模块

    对于具有唯一性的模块(例如,购物车项目中的物品数据,各个页面都要使用它,而且是唯一的数据),用singleton模式. var mySingleton = (function() { var priv ...

  7. 配置MySQL GTID(Global Transaction IDs)复制

    一.GTID的简介 1.GTID的概述 .全局事物标识:global transaction identifieds. .GTID事物是全局唯一性的,且一个事务对应一个GTID. .一个GTID在一个 ...

  8. jquery鼠标放上去显示悬浮层即弹出定位的div层

    <div><a id="a1" onmouseover="javascript:show('a1','div1');" onmouseout= ...

  9. mysql定时备份

    1.创建备份DB的脚本 python版本的脚本 db_backup.py import os password='df' os.system('mysqldump -uroot -p{} fwss & ...

  10. python项目入门之 安装、创建

    3年前接触python,那时候还是文本格式进行学习,但是由于一直没有项目实践,所以就搁浅了 今天,python如火如荼,适用于人工智能等多领域,已经成为了语言界的翘楚 python有非常多的优点,开源 ...