方法一:CounterVectorize
统计所有文章中出现的词语(单个字符不统计),重复的只统计一次。
CounterVectorize的使用(文本特征抽取)
- 导包
首先要导入sklearn下的包
from sklearn.feature_extraction.text import CountVectorizer
- 实例化CounterVectorizer对象
cv=CountVectorizer()
- 文本特征抽取并转化
data=cv.fit_transform(["life is short,i like python","life is too long, i dislike python"])
注:fit_transform方法需要接收列表类型的文本参数
示例代码:
from sklearn.feature_extraction.text import CountVectorizer
#对文本进行特征值化
def countvec():
#第二步:实例化CountVectorizer对象
cv=CountVectorizer()
#第三步:文本特征抽取并转化
data=cv.fit_transform(["life is short,i like python","life is too long, i dislike python"])
#获取特征名
print(cv.get_feature_names())
#将转换的数据转换为二维数组格式
print(data.toarray())
if __name__ == "__main__":
countvec()
运行结果
注意:单个的字符不统计,如文中的i
方法二:TfidfVectorizer
根据重要性对文中出现的词语进行统计
TfidfVectorizer的使用(文本特征抽取)
1.导包
from sklearn.feature_extraction.text import TfidfVectorizer
2.实例化TfidfVectorizer对象
tf=TfidfVectorizer()
- 文本特征抽取并转化
data=tf.fit_transform([c1,c2])
示例代码:
from sklearn.feature_extraction.text import TfidfVectorizer#运用tfid进行统计
import jieba#进行中文分词
#分词
def cut():
#进行中文汉字分词(将一段话按词用空格隔开)
con1=jieba.cut("人生苦短,我用py")
con2=jieba.cut("人生太长,我不用py")
#将分词结果转换成列表
contend1=list(con1)
contend2=list(con2)
#将列表转换为字符串
c1=''.join(contend1)
c2=''.join(contend2)
#根据词的重要性(出现频率*比重)进行分类
def tfidfvec():
c1,c2=cut()
tf=TfidfVectorizer()
data=tf.fit_transform([c1,c2])
print(tf.get_feature_names())
print(data.toarray())
运行结果:
方法三:DictVectorizer
字典数据特征抽取的作用:将字典数据的类别特征分别转换为一列数据特征,数据值不变。
方法步骤与上面的文本特征抽取相同,只要换个类就行。
实例代码
from sklearn.feature_extraction import DictVectorizer
def dictvec():
#第二步:实例化DictVectorizer对象,令sparse=False,将其转换为矩阵格式
dict=DictVectorizer(sparse=False)
#第三步:字典数据特征抽取
data=dict.fit_transform([{"city":"北京","temperature":100},{"city":"上海","temperature":60},{"city":"深圳","temperature":30}])
#dict.get_feature_names()获取特征名称
print(dict.get_feature_names())
print(data)
if __name__ == "__main__":
dictvec()#调用字典数据特征抽取函数