数据挖掘——关键字提取—基于sklearn包实现

什么是sklearn?

  sklearn全名是Scikit-Learn,是基于Python的机器学习模块,基于BSD开源许可证,官方网址是:http://scikit-learn.org/stable

  Scikit-Learn的数据结构基于Numpy和Pandas模块,数据计算基于Scipy模块,数据可视化基于Matplotlib模块。

  Scikit-Learn的基本功能:

  分类;回归;聚类;数据降维;模型选择;数据预处理。

  Scikit-Learn将具体的机器学习分为3个步骤:

  数据准备与预处理;模型选择与训练;模型验证和参数调优。

  Scikit-Learn自带一些经典的数据集,比如用于分类的iris和digits数据集,还有用于回归分析的boston house prices数据集。该数据集是一种字典结构,数据存储在.data成员中,输出标签存储在.target成员中。Scikit-Learn建立在Scipy之上,提供了一套常用的机器学习算法,通过一个统一的接口来使用,Scikit-Learn有助于在数据集上实现流行的算法。 Scikit-Learn还有一些库,比如:用于自然语言处理的Nltk、用于网站数据抓取的Scrappy、用于网络挖掘的Pattern、用于深度学习的Theano等。

  sklearn实现分词与关键字提取的原理:sklearn进行TF-IDF分词的规则是基于空格和标点符号对原文进行分割。

  sklearn进行文本处理的步骤:

from sklearn.feature_extraction.text import CountVectorizer

#例子
example1 = [‘我们 还 没有 到 家‘,
            ‘你们 什么 时候 回来‘,
            ‘他 想 吃 肉‘]
gjz_count = CountVectorizer()
textvecot = gjz_count.fit_transform(example1) #得到文档向量化的矩阵内容

textvecot.todense() #通过todense方法获取向量化矩阵,数据结构为numpy.matrixlib.defmatrix.matrix
gjz_count.vocabulary_ #查看矩阵每个列对应的分词,数据结构为字典
type(gjz_count) #数据结构为sklearn.feature_extraction.text.CountVectorizer
type(textvecot.todense()) #数据结构为numpy.matrixlib.defmatrix.matrix
type(gjz_count.vocabulary_) #数据结构为字典
#原理就是通过ID查询单词或通过单词查询ID

结果中将长度为1的分词全都剔除了,所以在CountVectorizer函数的构造过程中需要设置初始化参数

gjz_count = CountVectorizer(
        min_df=0, #设置分词最小长度为0
        token_pattern=r‘\b\w+\b‘) #分词的正则表达式
#进行TF-IDF的运算,导入sklearn包中的TF-IDF的计算方法,直接调用
from sklearn.feature_extraction.text import TfidfTransformer
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(textvecot) #传入得到的字符串数组,得到tf-idf矩阵
#将tfidf数据结构转为数据框矩阵
import pandas as pd
tfidfDF = pd.DataFrame(tfidf.toarray()) #转换为数据框
tfidfDF.columns
tfidfDF.columns = gjz_count.get_feature_names() #将数据框的列名替换成分词##得到列名为分词,行为tf-idf值的矩阵

  对分词的tf-idf值排序后,直接输出关键字

import numpy as np
tfidf_sorted = np.argsort(tfidf.toarray(),axis=1)[:,-2:] #对所有行排序,取tf-idf值最大的2个分词的列名
tfidfDF.columns[tfidf_sorted].values #根据列名得到对应关键字

原文地址:https://www.cnblogs.com/rix-yb/p/9697094.html

时间: 2024-10-08 08:12:23

数据挖掘——关键字提取—基于sklearn包实现的相关文章

数据挖掘——关键字提取—sklearn的实际应用

前面的步骤都相似 #构建语料库 #使用jieba包进行分词,并将分词结果用空格分隔后再传回分词列表 zh = re.compile(u'[\u4e00-\u9fa5]+') #中文的正则表达式 for seg in segs: if zh.search(seg): #只匹配中文分词 segments.append(seg) filepath.append(filePath) #使用空格将符合要求的分词隔开,然后放回语料库中,而不是得到分词和路径的矩阵 row['fileContent'] = '

数据挖掘——文本挖掘-关键字提取

基于jieba包的自动提取 关键方法:jieba.analyse.extract_tags(content,topK=n) 具体思路:通过jieba包自带的extract_tags方法,在遍历读取文件内容时,获得每篇文档前n个关键字 使用的包: import os import codecs import pandas as pd import jieba import jieba.analyse 过程: '''定义变量 文件路径/文件内容/关键字(5个)''' filepaths = [] c

基于scikit-learn包实现机器学习之KNN(K近邻)-完整示例

基于scikit-learn包实现机器学习之KNN(K近邻) scikit-learn(简称sklearn)是目前最受欢迎,也是功能最强大的一个用于机器学习的Python库件.它广泛地支持各种分 类.聚类以及回归分析方法比如支持向量机.随机森林.DBSCAN等等,由于其强大的功能.优异的拓展性以及易用性,目 前受到了很多数据科学从业者的欢迎,也是业界相当著名的一个开源项目之一. 基于上一篇的k近邻原理讲解,我们这一片主要是利用相应的工具包实现机器学习,为了逐步掌握这样成功的工具包,我们 从简单的

R语言爬虫初尝试-基于RVEST包学习

R语言爬虫初尝试-基于RVEST包学习 Thursday, February 26, 2015 在学完coursera的getting and Cleaning data后,继续学习用R弄爬虫网络爬虫.主要用的还是Hadley Wickham开发的rvest包.再次给这位矜矜业业开发各种好用的R包的大神奉上膝盖 查阅资料如下: rvest的github rvest自身的帮助文档 rvest + CSS Selector 网页数据抓取的最佳选择-戴申: 里面有提及如何快速获得html的位置.看完这

关键字提取算法TF-IDF和TextRank(python3)————实现TF-IDF并jieba中的TF-IDF对比,使用jieba中的实现TextRank

关键词:    TF-IDF实现.TextRank.jieba.关键词提取数据来源:    语料数据来自搜狐新闻2012年6月-7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据    数据处理参考前一篇文章介绍:    介绍了文本关键词提取的原理,tfidf算法和TextRank算法    利用sklearn实现tfidf算法    手动python实现tfidf算法    使用jieba分词的tfidf算法和TextRank提取关键词 1.关键字提取: 关键词抽取就是从文本里面把跟这

LAMP基于RPM包搭建

一:简述 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准. HTTP是一个客户端和服务器端请求和应答的标准(TCP).客户端是终端用户,服务器端是网站.通过使用Web浏览器.网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求.(我们称这个客户端)叫用户代理(user agent).应答的服务器上存储着(一些)资源,比如HTML文件和图像.(我们称)这个

3 中文文本中的关键字提取

前言 关键词提取就是从文本里面把跟这篇文章意义最相关的一些词语抽取出来.这个可以追溯到文献检索初期,关键词是为了文献标引工作,从报告.论文中选取出来用以表示全文主题内容信息的单词或术语,在现在的报告和论文中,我们依然可以看到关键词这一项.因此,关键词在文献检索.自动文摘.文本聚类/分类等方面有着重要的应用,它不仅是进行这些工作不可或缺的基础和前提,也是互联网上信息建库的一项重要工作. 关键词抽取从方法来说主要有两种: 第一种是关键词分配:就是给定一个已有的关键词库,对于新来的文档从该词库里面匹配

漫漫运维路——基于rpm包安装实现LAMP

LAMP早期即为Linux+Apache+MySQL+PHP,以基于Linux平台的三个软件搭建出动态网页站点,而现在的LAMP不仅仅代表以上几个软件,因为现在的开源软件种类较多,网站的构建人员的选择也较多,所以现在的M可以为MySQL,也可以为maria DB或者是其他的数据库管理系统.而P则也不仅可代表PHP,在实际应用中还可能是Python.Perl.JSP等语言. 本文将基于rpm包安装的形式实现Linux+Apache+MySQL+PHP的LAMP平台,并且实现以下功能: 1.创建两个

如何修改基于Debian包管理dpkg的程序流程方法概述

/*********************************************************************  * Author  : Samson  * Date    : 05/14/2014  * Test platform:  *              Mint 15-3.8.13.13  *              GNU bash, version 4.2.45  * ***************************************