05_文本特征值处理

 文本特征值处理:如何从一段话中,分解句子,以矩阵的形式,得到每个词语出现的次数,可以应用于文章类别分析、情感预测等等。

中文文本特征抽取:第一种方法:1.利用jieba.cut进行分词; 2.实例化CountVectorizer; 3.将分词结果变成字符串当做fit_transform的输入值;

         第二种方法:过滤掉文章中不重要的信息,比如对比两篇文章时,所以、明天、我们等这些词都不重要,就可以把它们去掉,解决了第一种方法不能解决的问题。

               1.使用tfidf;  tf:term frequency:词的频率(词列表)。 idf:inverse document frequency 逆文档频率。

               2.涉及的公式: log(总文档数量/该词出现的文档数量) 

                      重要性 = tf * idf

TF—IDF:

  TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高, 并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

  TF-IDF作用:评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

扫描二维码关注公众号,回复: 7533607 查看本文章

TF—IDF用法:

  TfidfVectorizer(stop_words=None,…) 返回词的权重矩阵;

  TfidfVectorizer.fit_transform(X,y) X:文本或者包含文本字符串的可迭代对象 返回值:返回sparse矩阵;

  TfidfVectorizer.inverse_transform(X) X:array数组或者sparse矩阵 返回值:转换之前数据格式 TfidfVectorizer.get_feature_names() 返回值:单词列表

 

from sklearn.feature_extraction.text import CountVectorizer
import jieba

def cutword():
"""
汉字统计
"""
con1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")
con2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
con3 = jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")

# con1类型为<generator object Tokenizer.cut at 0x000002D44A7550C0>
# 进行类型转换,将con1转换成列表
content1 = list(con1)
content2 = list(con2)
content3 = list(con3)

# 把列表转换成字符串
c1 = ' '.join(content1)
c2 = ' '.join(content2)
c3 = ' '.join(content3)

return c1,c2,c3

def hanzivec():
"""
中文特征值化:先把句子变成字符串做分词处理,分词之后,然后转化为列表,把这个列表转化为空格隔开的字符串
"""
c1,c2,c3 = cutword()
print(c1)
print(c2)
print(c3)
cv = CountVectorizer()
data = cv.fit_transform([c1,c2,c3])
print(cv.get_feature_names())
print(data.toarray())
return None

from sklearn.feature_extraction.text import TfidfVectorizer
def tfidfvec():
"""
中文词频统计的第二种方法
:return:
"""
c1,c2,c3 = cutword()
tf = TfidfVectorizer()
data = tf.fit_transform([c1,c2,c3])
print(tf.get_feature_names())
print(data.toarray())

return None


英文文本特征抽取:对 "life is short,i like python","life is too long,i dislike python" 进行特征抽取

# 特征抽取

from sklearn.feature_extraction.text import CountVectorizer

# 实例化CountVectorizer
vector = CountVectorizer()

# 调用fit_transform输入并转换数据
res = vector.fit_transform(["life is short,i like python","life is too long,i dislike python"])

# 打印结果
print(vector.get_feature_names())
print(res.toarray())



结果:['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
   [[0 1 1 1 0 1 1 0]
    [1 1 1 0 1 1 0 1]]





猜你喜欢

转载自www.cnblogs.com/cwj2019/p/11715626.html