文件特征抽取
- 作用:对文本数据进行特征值化
 
- 类:sklearn.feature_extraction.text.CountVectorizer
- CountVectorizer()
- CountVectorizer.fit_transform(X)
- X:文本或包含文本字符串的可迭代对象
 
- 返回值:返回sparse矩阵
 
 
- CountVectorizer.inverse_transform(X)
- X:array数组或者sparse矩阵
 
- 返回值:转化之前的数据
 
 
- CountVectorizer.get_feature_names()
 
 
 
- 对于单个英文单词不统计
 
from sklearn.feature_extraction.text import CountVectorizer  
def countvec():
   #对文本进行特征值化
   cv = CountVectorizer()
   data = cv.fit_transform(["life is short , i love python","life is too long , i dislike python"])    
   print(cv.get_feature_names())
   #统计所有文章当中所有的词,没有重复,词的列表
   print(data.toarray())
   #对每一篇文章,统计词出现的次数,单个字母不统计
   return None    
if __name__ == '__main__':
   countvec()    
['dislike', 'is', 'life', 'long', 'love', 'python', 'short', 'too']
[[0 1 1 0 1 1 1 0]
 [1 1 1 1 0 1 0 1]]
TF-IDF
- tf:term frequency:词的频率
 
- idf:inverse document frequency 逆文档频率  <font color=blue>log(总文档数量/该词出现的次数)</font>
 
- log(数值)输入的数值越小,结果越小
 
- TF-IDF:如果某个词或短语在一篇文章出现频率高,在其它文章出现频率低,则认为这个词或短语具有很好的类别能力,适合用来分类
 
- 作用:用来评估一个词对于一个文件集或者语料库中的其中一份文件的重要程度
 
- 类:sklearn.feature_extration.text.TfidfVectorizer
 
- TfidfVectorizer(stop_words=None,...)
- 返回词的权重矩阵
 
- TfidfVectorizer.fit_transform(X)
- X:文本或者包含文本字符串的可迭代对象
 
- 返回值:sparse矩阵
 
 
- TfidfVectorizer.inverse_transform(X)
- X:array数组或者sparse矩阵
 
- 返回值:返回之前数据格式
 
 
- TfidfVectorizer.get_feature_names()
 
 
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
def cutword():
    """
     分词后的字符串结果
    :return: c1,c2,c3
    """
    
    con1=jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")
    con2=jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
    con3=jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。  了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
    
    #转换成列表
    content1=list(con1)
    content2 = list(con2)
    content3 = list(con3)
   
    #把列表转换成字符串
    c1= ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)
 
    return c1,c2,c3
def tfidfvec():
    """
    中文特征值化
    :return: None
    """
    
    # 调用分词分割中文文章
    c1, c2, c3 = cutword()
    
    print(c1, c2, c3)
    
    # 实例化
    tf= TfidfVectorizer()
    
    data = tf.fit_transform([c1,c2,c3])
    
    #打印结果
    print(data)
    print(tf.get_feature_names()) #打印特征值 统计文章中出现的词
    print(data.toarray()) #对每篇文章进行统计每个词出现的次数
    
    return None
if __name__=="__main":
    tfidfvec()