1.CountVectorize
CountVectorizer是属于常见的特征数值计算类,是一个文本特征提取方法。对于每一个训练文本,它只考虑每种词汇在该训练文本中出现的频率。
CountVectorizer会将文本中的词语转换为词频矩阵,它通过fit_transform函数计算各个词语出现的次数。
# coding=utf-8
_author_ = 'liuzc'
# 导包
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
import jieba
def countvec():
"""
对文本进行特征值化
:return: None
"""
con1 = jieba.cut("我们在自己的哭声中来到这个世界,在别人哭声中离开这个世界")
con2 = jieba.cut("不要炫耀你的工作,你走了,无数人会比你做的更出色,不要炫耀你的房,你去了,那就是别人的窝")
# 转换成列表
content1 = list(con1)
content2 = list(con2)
# 把列表转换成字符串
c1 = ' '.join(content1)
c2 = ' '.join(content2)
# 实例化
cv = CountVectorizer()
# 转换数据
data = cv.fit_transform([c1,c2])
print(cv.get_feature_names())
print(data.toarray())
return None
if __name__ == "__main__":
countvec()
结果:
['不要', '世界', '人会', '出色', '别人', '哭声', '就是', '工作', '我们', '无数', '来到', '炫耀', '离开', '自己', '这个']
[[0 2 0 0 1 2 0 0 1 0 1 0 1 1 2]
[2 0 1 1 1 0 1 1 0 1 0 2 0 0 0]]
2.TfidfVectorizer
什么是TF-IDF
TF-IDF(term frequency-inverse document frequency)词频-逆向文件频率。在处理文本时,如何将文字转化为模型可以处理的向量呢?TF-IDF就是这个问题的解决方案之一。字词的重要性与其在文本中出现的频率成正比(TF),与其在语料库中出现的频率成反比(IDF)。
TF
TF:词频。TF(w)=(词w在文档中出现的次数)/(文档的总词数)
IDF
IDF:逆向文件频率。有些词可能在文本中频繁出现,但并不重要,也即信息量小,如is,of,that这些单词,这些单词在语料库中出现的频率也非常大,我们就可以利用这点,降低其权重。IDF(w)=log_e(语料库的总文档数)/(语料库中词w出现的文档数)
TF-IDF
将上面的TF-IDF相乘就得到了综合参数:TF-IDF=TF*IDF
# coding=utf-8
_author_ = 'liuzc'
# 导包
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
import jieba
def tfidfvec():
"""
对文本进行特征值化
:return: None
"""
con1 = jieba.cut("我们在自己的哭声中来到这个世界,在别人哭声中离开这个世界")
con2 = jieba.cut("不要炫耀你的工作,你走了,无数人会比你做的更出色,不要炫耀你的房,你去了,那就是别人的窝")
# 转换成列表
content1 = list(con1)
content2 = list(con2)
# 把列表转换成字符串
c1 = ' '.join(content1)
c2 = ' '.join(content2)
# 实例化
tf = TfidfVectorizer()
data = tf.fit_transform([c1, c2])
print(tf.get_feature_names())
print(data.toarray())
return None
if __name__ == "__main__":
tfidfvec()
结果:
['不要', '世界', '人会', '出色', '别人', '哭声', '就是', '工作', '我们', '无数', '来到', '炫耀', '离开', '自己', '这个']
[[ 0. 0.49227283 0. 0. 0.17512809 0.49227283
0. 0. 0.24613641 0. 0.24613641 0.
0.24613641 0.24613641 0.49227283]
[ 0.54420522 0. 0.27210261 0.27210261 0.19360325 0.
0.27210261 0.27210261 0. 0.27210261 0. 0.54420522
0. 0. 0. ]]