CountVectorizer方法对中文进行特征提取

CountVectorizer方法进行特征提取

from sklearn.feature.extraction.text import CountVectorizer

这个方法根据分词进行数量统计继续文本分类

文本特征提取

作用:对文本进行特征值化

sklearn.feature_extraction.text.CountVectorizer(stop_words = [])

 返回:词频矩阵

CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代对象

 返回:sparse矩阵 在后面加上 .toarray() 可以转换为二维数组

CountVectorizer.inverse_transform(X) X:array数组或者sparse矩阵

 返回:转换之前数据格

CountVectorizer.get_feature_names()

 返回:单词列表,也可以说是返回特征名字

中文特征提取举例(手动分词)

from sklearn.feature_extraction.text import CountVectorizer
#中文 需要分词,否则是以整句作为一个词。英文则不需要,因为英文单词本来就有空格
def chinese_text_count_demo():
    data = ["我 爱 北京 天安门", "天安门 上 太阳 升"]

    # 1、实例化一个转换器类(为什么叫转化器,因为是将 文本 转化为 数值)
    transfer = CountVectorizer()

    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new.toarray())
    print("特征名字:\n", transfer.get_feature_names())

    return None

if __name__ == ‘__main__‘:
    chinese_text_count_demo()

输出结果:
data_new:
 [[1 1 0]
 [0 1 1]]
特征名字:
 [‘北京‘, ‘天安门‘, ‘太阳‘]

解析:上面第一行表示的是,data第一句话

数字表示的是,这个 特征词 出现的次数

中文特征提取举例(使用jieba分词)

首先你需要在自己的cmd命令行中下载jieba

pip3 install jieba / pip install jieba

from sklearn.feature_extraction.text import CountVectorizer
import jieba

def cut_word(text):
    #进行中文分词
    return " ".join(list(jieba.cut(text)))
    # jieba.cut(text)返回的是一个生成器对象,需要转换为迭代器
    #return "".join(jieba.lcut(text))
    #jieba.cut(text)直接返回一个列表list

def auto_chinese_text_count_demo():
    data = ["你说这该怎么办"
           ,"唐龙大声问怎么回事"
           ,"晚上找个地方喝几盅怎么样"
           ,"老忠领他们到朱老明那里站在大柏树坟前说你看看这个地势怎么样我们的人要是从城里过来经过大渡口或是小渡口沿着千里堤"]
    data_new = []
    for sent in data:
        data_new.append(cut_word(sent))

    print("句子分词后:\n", data_new)

    # 1、实例化一个转换器类
    transfer = CountVectorizer(stop_words = ["说","的"])#停顿词应该预处理清理,这里只是示范

    # 2、调用fit_transform
    data_vector_value = transfer.fit_transform(data_new)
    print("data_vector_value:\n", data_vector_value.toarray())
    print("特征名字:\n", transfer.get_feature_names())

    return None

if __name__ ==‘__main__‘:
    auto_chinese_text_count_demo()

输出结果:
句子分词后:
 [‘你 说 这 该 怎么办‘, ‘唐龙 大声 问 怎么回事‘, ‘晚上 找个 地方 喝 几盅 怎么样‘, ‘老忠领 他们 到 朱老明 那里 站 在 大柏树 坟前 说 你 看看 这个 地势 怎么样 我们 的 人 要 是从 城里 过来 经过 大渡口 或是 小 渡口 沿着 千里 堤‘]
data_vector_value:
 [[0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
 [0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0]
 [1 0 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1]]
特征名字:
 [‘他们‘, ‘几盅‘, ‘千里‘, ‘唐龙‘, ‘地势‘, ‘地方‘, ‘坟前‘, ‘城里‘, ‘大声‘, ‘大柏树‘, ‘大渡口‘, ‘怎么办‘, ‘怎么回事‘, ‘怎么样‘, ‘我们‘, ‘或是‘, ‘找个‘, ‘是从‘, ‘晚上‘, ‘朱老明‘, ‘沿着‘, ‘渡口‘, ‘看看‘, ‘经过‘, ‘老忠领‘, ‘过来‘, ‘这个‘, ‘那里‘]

原文地址:https://www.cnblogs.com/henabo/p/11588437.html

时间: 2024-10-31 00:30:58

CountVectorizer方法对中文进行特征提取的相关文章

http中 get方法 传送中文参数乱码解决办法

http传送参数有两种方法:get 和post  当时使用get方法传递中文参数是会有乱码现象 解决办法: 1.在jsp压面url后面的参数使用 encodeURI:"&zxbghy="+ encodeURI(zxbghy) 2.在后台java获取参数时使用字节数组:temphgdmhy = new String(hgdmhy.getBytes("ISO-8859-1"), "UTF-8");  案例,用get方法传递两个中文参数:zxb

SWFObject使用方法和中文教程及IE无法加载播放的问题

SWFObject使用方法和中文教程 SWFObject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入Flash媒体资源了. 下面是一个最简单的范例: 1.文件顶部需加载swfobject.js <script type="text/javascript" src="swfobject.js"></script> <script type="text/jav

(转)Delphi 调用C#编写的WebService 参数为Null解决方法 附中文乱码问题

(转)Delphi 调用C#编写的WebService 参数为Null解决方法 附中文乱码问题 //add-------to support UTF-8     RIO.HTTPWebNode.UseUTF8InHeader := true;  //添加该行,指定采用UTF-8代码传输     RIO.Converter.Encoding:='UTF-8';     RIO.Converter.Options:=RIO.Converter.Options + [soUTF8InHeader,so

【cocos2dx】rapidjson使用方法以及中文显示的解决方法【续】

上一个博客讲了怎么用rapidjson读取中文字符串,但是有一个很明显的缺陷 就是不能直接读取数据编辑器导出的数据.下面我们来修复这个bug并且将代码精简到不到原来的一半大小. 上一博客的地址是:[cocos2dx]rapidjson使用方法以及中文显示的解决方法 不多说 直接上源码吧: 首先,数据编辑器导出的格式是: [{"id":1,"content":"再次按下返回键退出游戏"},{"id":2,"conten

GET方法传递中文参数的问题

中文参数通过GET方法传递(就是URL后面跟变量名和参数)的时候是不能直接传递的,需要经过URL编码转换成16进制之后才能成功.同时在接收页面直接request.QueryString方法就能接收到中文参数,这个时候不需要再次人工解码(Server.UrlDecode),服务器已经帮咱们干了这事 就像这样: val=Server.UrlEncode(val)

jquery之getJSON方法获取中文数据乱码解决方法

最近公司做的东西要用到js,感觉js太繁琐,所以自己学起了jquery,发现jquery确实强大.在学到jquery ajax的时候(用的工具是eclipse),发现$.getJSON()方法请求服务器的json数据(有中文),返回到浏览器页面是乱码,怎么办呢? 原因是浏览器编码和服务器里的json数据编码不一致, 1.对着项目右键,properties,将text file encoding,改为utf-8.这时访问页面,发现还是乱码.我们还需要一步. 2.对着json文件,右键,proper

类似微信通讯录界面的排序方法及中文转拼音的方法

最近做一个类似微信的通讯录列表,因为本人也算个新手,然后呢,就遇到点问题.难点在对昵称的排序上,顺带着也就找了找中文转拼音的方法. 废话不多说,直接贴代码吧 1.首先要对昵称字符串进行中文转拼音,这个比较简单,写到NSString分类里面就行. - (NSString *)pinyin; { NSMutableString *str = [self mutableCopy]; CFStringTransform(( CFMutableStringRef)str, NULL, kCFStringT

localeCompare() 方法实现中文的拼音排序

google了很多次才发现在国外网站上有提示如何比较中文,原文地址:http://www.webdeveloper.com/forum/showthread.php?t=9365 前提:使用Unicode 编码,如果其他GBK此方法应该就不行! 定义和用法 用本地特定的顺序来比较两个字符串. stringObject.localeCompare(target) target:要以本地特定的顺序与 stringObject 进行比较的字符串 测试1: var str="北京"; var

Python 3 与 Javascript escape 传输确保数据正确方法和中文乱码解决方案

前几天用Python的Bottle框架写个小web程序,在进行Ajax交互之时,前端则先用 JSON.stringify 来将类序列化,然后用escape() 函数将其编码,确保传输正确. 再基本上配合上Jquery的$.ajax应该就可以了,可能是经验不足,即使编码之后的数据依然在 Python 中难以处理. 后来慢慢思考出一种方式,在网上也发现了类似的方式,于是将其实现. 基本思路如下: escape('你好世界ABC'); //返回 "%u4F60%u597D%u4E16%u754CABC