文章目录
前言
简单记录机器学习特征工程的文本特征抽取及jieba的使用
一、文本特征抽取是什么?
数据分析过程中,为了将文本数据转换为计算机所认识的数字数据,从而实现文本数据的特征值化的功能。
二、使用方法
可以调用sklearn的特征工程相关方法,直接对文本列表进行文本特征值化。
1.对普通的英文文本特征值化
代码如下:
from sklearn.feature_extraction.text import CountVectorizer
def countvec1():
cv=CountVectorizer() #获取转换器
data=cv.fit_transform(['I like you','I hate you']) #对 I like you与I hate you 这2段字符串组成的列表进行特征值化
print(cv.get_feature_names())
print(data.toarray())
运行结果:
2.对包含中文文本的数据进行特征值化(使用jieba分词库)
由于sklearn的分词是根据空格来分的,英文文本有天然的空格,而中文文本没有。因此,对于中文文本,分词操作需要比普通的纯英文文本多进行一个"添加空格"的操作。又因为不可能对长的中文文本一个个手动进行添加空格,故可以使用jieba分词库来对包含中文文本的数据进行分词划分。
2.1导入jieba库
代码如下(示例):
import jieba
2.2运用jieba库进行分词
def cutword():
content1=jieba.cut("关关雎鸠,在河之洲。窈窕淑女,君子好逑。")
content2=jieba.cut("参差荇菜,左右流之。窈窕淑女,寤寐求之。")
print(type(content1))
content1_list=list(content1)
content2_list=list(content2)
c1=" ".join(content1_list)
c2=" ".join(content2_list)
return c1,c2 # 将分词结果进行返回
2.3进行特征值化
def countvec4():
cv=CountVectorizer()
c1,c2=cutword();
data=cv.fit_transform([c1,c2])
print(cv.get_feature_names())
print(data.toarray())
2.4运行结果
结果分析:
运用sklearn将文本数据特征值化的统计结果中,会将一整段文本分成一个个词语,然后根据词语统计出词语的出现频率。但是要注意的是,结果会忽略单字词语(字母)。