文本预处理——分词+TF-IDF

1.分词

1.1 基础分词

jieba.cut()

import jiaba
cut_result=' '.join(jieba.cut('给我点赞吧!哈,哈。哈;哈?'))

结果:
在这里插入图片描述
注意这里,用‘ ’来join就代表着用空格来将词分开,也可以使用“、”“/”等

1.2 去除标点符号

想要去除标签符号,可以使用replace()

sen_exp='给我点赞吧!哈,哈。哈;哈?'
#sen_exp.replace('!',' ').replace(',',' ').replace('。',' ').replace(';',' ').replace('?',' ')
sen_exp=sen_exp.replace('!',' ').replace(',',' ').replace('。',' ').replace(';',' ').replace('?',' ')
cut_result=' '.join(jieba.cut(sen_exp))

结果:
在这里插入图片描述
注意一定要sen_exp=一下,不然是不会有改变的

1.3 自定义词典

方法1:直接load_userdict()
txt的格式为
在这里插入图片描述
也可以在每个词后面加词频、词性;以空格分隔。

方法二:利用add_word()

jieba.add_word('给我')
cut_result=' '.join(jieba.cut(sen_exp))

结果变为了:
在这里插入图片描述
和上面的是不是不一样!

import codecs
import jieba
jieba.load_userdict("指标.txt")
with codecs.open('指标.txt','r',encoding='utf-8') as f:
    zhibiao=f.readlines()
for i in range(len(zhibiao)):
    jieba.add_word(zhibiao[i].replace('\r\n',''),tag='d')#记得把换行符去掉啊

1.4 去除停用词

停用词表可以自行下载,网上很多

with codecs.open('停用词.txt','r',encoding='gbk') as f:
    text=f.read()
stoplists=text.splitlines()
cut_stopw=[]
cut_stopw.append(''.join(list([word for word in cut_result if word not in stoplists])))

综上,分词就完成啦

1.5 提取关键词

import jieba
import jieba.analyse
sen_exp='给我点赞吧!哈,哈。哈;哈?'
print(jieba.analyse.extract_tags(sen_exp, topK = 70, withWeight = False, allowPOS = ()))

注意,提取关键词,第一个参数放的是原始句子,不需要分词,不需要去除停用词。第二个参数代表着最大保留多少个词。
结果是:
在这里插入图片描述
是不是很方便。

2. TF-IDF

应用的时候,只要修改 cut_stopw 为你需要得到词频的数据(已分词)就好,格式为list,其他不变,就能应用

from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
vectorizer=CountVectorizer()   #该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频  
transformer=TfidfTransformer() #该类会统计每个词语的tf-idf权值  
tfidf=transformer.fit_transform(vectorizer.fit_transform(cut_stopw))#cut_stopw是列表形式的分词结果;如果是DataFrame格式,要list(data['列名'])
#第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵  
word=vectorizer.get_feature_names()#获取词袋模型中的所有词语  
weight=list(tfidf.toarray().T)#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重  

存储

import pandas as pd
pd.concat([pd.DataFrame(word),pd.DataFrame(weight)],axis=1).to_excel(path+'.xlsx')

结果:
在这里插入图片描述
TF-IDF也可以用来查看这个词是否出现,可以用于标签one-hot编码
文本的读入可以参考之前的博客

接下来我们将会统计文本特征,训练word2vec模型,敬请期待

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值