1.载入文档

 #!/usr/bin/python
# -*- coding: utf-8 -*- import pandas as pd
import re
import jieba
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer #加载文本
dataPath1='D:/machinelearning data/crawlerData/mi6x_JD500.csv'
dataPath2='D:/machinelearning data/crawlerData/huaWei_P20_JD100.csv'
dataPath3='D:/machinelearning data/crawlerData/test1.txt'
stopWord_Path='D:/论文文件/学习文件/情感分析/dict词典/哈工大stopword .txt'#停用词路径
f1=pd.read_csv(dataPath1,sep=',',encoding='GBK')#.iloc[:,1]#加载文本1
f2=pd.read_csv(dataPath2,sep=',',encoding='GBK')#.iloc[:,1]#加载文本2
f3=pd.read_csv(dataPath3,sep=',',encoding='GBK',header=0)#.iloc[:,1]#加载文本3

2.加载停用词

把停用词典的停用词存到列表里,下面去停用词要用到

 #加载停用词,停用词要是列表形式才能使用
stopWord=[]
with open(stopWord_Path,'r',encoding='utf-8') as fr:#加载停用词
for word in fr.readlines():
stopWord.append(word.strip())
#print(stopWord)

3.文本分词

这里有两个切分词的函数,第一个是手动去停用词,第二个是下面在CountVectorizer()添加stop_words参数去停用词。两种方法都可用。

 #文本切分函数,用来对中文文本分词,包括除去数字字母以及停用词,得到一个分词用空格隔开的字符串,便于下面向量化(因为这个CountVouterizer()是针对英文分词的,英文之间直接用空格隔开的)
def cut_word(sent):
line=re.sub(r'[a-zA-Z0-9]*','',sent)
wordList=jieba.lcut(line,cut_all=False)
return ' '.join([word for word in wordList if word not in stopWord and len(word)>1])#文本分词,并且用空格连接起来,便于下面向量化 #也是文本切分函数,只不过这个没有去停用词,CountVouterizer()中可以直接添加停用词表参数,不统计文档中的停用词的数量
def cutword(sent):
line=re.sub(r'[a-zA-Z0-9]*','',sent)
wordList=jieba.lcut(line,cut_all=False)
return ' '.join([word for word in wordList if len(word)>1])

4.对文本进行分词,向量化

(1)对文本进行分词,并且将分词结果加到'word_list’列中。

f3['word_list']=f3.comment.apply(cutword)#将文本分词,并且分词用空格隔开变成文本存才DataFrame中
print(f3)

结果如下

                                        comment            word_list
0 你好吗,你的我的他的都不行,非常好,中国加油! 你好 不行 非常 中国 加油
1 真的非常好,你知道吗,手机性能不行 真的 非常 知道 手机 性能 不行
2 昨天晚上下单,今早拿到机器。这物流很给力!电池不耐用,不优秀。严重发烫,希望小米后续优化跟进。 昨天晚上 下单 今早 拿到 机器 物流 电池 耐用 优秀 严重 发烫 希望 小米 后续 优化 跟进

(2)对文本向量化,sklearn中的CounterVectorizer()向量化为系数矩阵,文本必须是空格隔开的字符串,因为CounterVectorizer()是针对英文分词的,英文之间直接用空格隔开的。

get_feature_names()获得上面稀疏矩阵的列索引,即特征的名字(就是分词)。这样就能知道稀疏矩阵中的每一列表示的是哪个词了
 wordList=list(f3.word_list)#必须变成列表个是才能输入下面的向量化函数
count_vect = CountVectorizer(min_df=1,stop_words=stopWord,analyzer ='word') # 并且设置了停用词表为列表stopWord,即在向量化时去掉停用词不统计,词至少在1个文档中出现过
words_vec = count_vect.fit_transform(wordList)
print(words_vec.toarray())#得到分词的系数矩阵
#print(words_vec.todense())
vec1=pd.DataFrame(words_vec.toarray())
print(count_vect.get_feature_names())#获得上面稀疏矩阵的列索引,即特征的名字(就是分词)

向量化的结果

[[0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0]
[1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1]]

(3)count_vect.get_feature_names()得到的分词索引列表

['下单', '不行', '中国', '今早', '优化', '优秀', '你好', '加油', '发烫', '后续', '小米', '希望', '性能', '手机', '拿到', '昨天晚上', '机器', '物流', '电池', '真的', '耐用', '跟进']

  对应上面的稀疏矩阵就是,第一列为‘下单’,在文档1,2,3中分别出现0,0,1次。其他的同理

自然语言处理--中文文本向量化counterVectorizer()的更多相关文章

  1. LSTM实现中文文本情感分析

    1. 背景介绍 文本情感分析是在文本分析领域的典型任务,实用价值很高.本模型是第一个上手实现的深度学习模型,目的是对深度学习做一个初步的了解,并入门深度学习在文本分析领域的应用.在进行模型的上手实现之 ...

  2. NLP自然语言处理入门-- 文本预处理Pre-processing

    引言 自然语言处理NLP(nature language processing),顾名思义,就是使用计算机对语言文字进行处理的相关技术以及应用.在对文本做数据分析时,我们一大半的时间都会花在文本预处理 ...

  3. 自然语言0_nltk中文使用和学习资料汇总

    http://blog.csdn.net/huyoo/article/details/12188573 官方数据 http://www.nltk.org/book/ Natural Language ...

  4. 『TensotFlow』RNN中文文本_上

    中文文字预处理流程 文本处理 读取+去除特殊符号 按照字段长度排序 辅助数据结构生成 生成 {字符:出现次数} 字典 生成按出现次数排序好的字符list 生成 {字符:序号} 字典 生成序号list ...

  5. SnowNLP:•中文分词•词性标准•提取文本摘要,•提取文本关键词,•转换成拼音•繁体转简体的 处理中文文本的Python3 类库

    SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和Te ...

  6. 文本向量化及词袋模型 - NLP学习(3-1)

    分词(Tokenization) - NLP学习(1) N-grams模型.停顿词(stopwords)和标准化处理 - NLP学习(2)   之前我们都了解了如何对文本进行处理:(1)如用NLTK文 ...

  7. SnowNLP:一个处理中文文本的 Python 类库[转]

    SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和Te ...

  8. word2vec词向量训练及中文文本类似度计算

    本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...

  9. 推荐 | 中文文本标注工具Chinese-Annotator(转载)

    自然语言处理的大部分任务是监督学习问题.序列标注问题如中文分词.命名实体识别,分类问题如关系识别.情感分析.意图分析等,均需要标注数据进行模型训练.深度学习大行其道的今天,基于深度学习的 NLP 模型 ...

随机推荐

  1. CUDA C Programming Guide 在线教程学习笔记 Part 9

    ▶ 协作组,要求 cuda ≥ 9.0,一个简单的例子见 http://www.cnblogs.com/cuancuancuanhao/p/7881093.html ● 灵活调节需要进行通讯的线程组合 ...

  2. HTML5 Canvas ( 线性渐变, 升级版的星空 ) fillStyle, createLinearGradient, addColorStop

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. WebService客户端调用的几种方式

    1.用组件HTTPRIO,支持VCL WIN32和FIRE MONKEY跨平台Android手机 HTTPRIO1.URL := 'http://127.0.0.1:8080/soap/IsoapTe ...

  4. Java 9 模块化(Modularity)

    JDK9的发布一直在推迟,终于在2017年9月21日发布了.下面是JDK9的几个下载地址: JDK9.0.1 Windows-x64下载地址 Oracle Java 官网下载地址 OpenJDK 9官 ...

  5. egret 精简游戏项目

    新建一个游戏项目,我们可以删除resource文件夹下除了default.thm.json和default.res.json文件,一旦删除,当新建皮肤exml文件时会报错 还可以删除src文件夹里除了 ...

  6. python练习题:三级菜单

    需求:可依次选择进入各子菜单可从任意一层往回退到上一层可从任意一层退出程序所需新知识点:列表.字典 测试环境:win7系统,python3.7.0,工具:pycharm-community-2018. ...

  7. vue基础——计算属性和侦听器

    计算属性——介绍 模板内的表达式非常便利,但是设计他们的初衷是用于简单计算的.在模板中放入太多的逻辑会让模板太过沉重切难以维护.如下: <div id="example"&g ...

  8. HTML CSS + DIV实现整体布局 part1

    HTML CSS + DIV实现整体布局 1.技术目标: 开发符合W3C标准的Web页面 理解盒子模型 实现DIV+CSS整体布局 2.什么是W3C标准? W3C:World Wide Web Con ...

  9. zset

    zset sorted set,有序集合 元素为string类型 元素具有唯一性,不重复 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序 说明:没有修改操作 增 ...

  10. node.js实时编译,不需要重启

    npm -g install supervisor 全局安装这个,然后编译依一次文件就可以了,之后修改这个文件不用编译也可以了