资源经验分享文本特征提取

文本特征提取

2019-12-20 | |  90 |   0

原标题:文本特征提取

原文来自:CSDN      原文链接:https://blog.csdn.net/qq_36853469/article/details/103347787


 文本特征抽取分为两种情况,第一种是文本分析--->偏向于情感分析,第二种是文本分类-->朴素贝叶斯,主要用来对文章分类打标签等:

1)CountVectorizer()
返回词频矩阵
    CountVectorizer(X)
              X:文本或者包含文本的可迭代对象
              返回值:sparse矩阵
    CountVectorizer。inverse_transform(X)
        X:array数组或者sparse矩阵
        返回值:转换之前的数据格式
    CountVectorizer.get_feature_names()
        返回值:单词列表
2)Count  文本分析==》情感分析

# -*- coding: UTF-8 -*-
'''
@Author :Jason
文本特征抽取
流程:
    1.实例化 CountVectorizer()
    2.调用fit_transform()输入数据并转换(利用toarray()将sparse矩阵转换成array数据)
'''
from sklearn.feature_extraction.text import CountVectorizer
import jieba
 
def CountVectEng():
    '''
    对文本进行特征值化
    :return:
    '''
    cv = CountVectorizer()
    data = cv.fit_transform(["live on the earth,life on the free,i like spring","live on the moon,life on the happy,you like summer"])
 
    print(cv.get_feature_names()) #所有的词,重复的只看作一次,对单个英文字母不统计,a,b,c没有分类意义
    #['earth', 'free', 'happy', 'life', 'like', 'live', 'moon', 'on', 'spring', 'summer', 'the', 'you']
    print(data)  #每个词在每篇文章中出现的次数
    '''
    #没转换数组前的sparse矩阵
      (0, 8)	1
      (0, 4)	1
      (0, 1)	1
      (0, 3)	1
      (0, 0)	1
      (0, 10)	2
      (0, 7)	2
      (0, 5)	1
      (1, 9)	1
      (1, 11)	1
      (1, 2)	1
      (1, 6)	1
      (1, 4)	1
      (1, 3)	1
      (1, 10)	2
      (1, 7)	2
      (1, 5)	1
    #转换数组
    [[1 1 0 1 1 1 0 2 1 0 2 0]
     [0 0 1 1 1 1 1 2 0 1 2 1]]
    '''
    return None
def CountVectChinese():
    '''
    直接的中文是不会处理的
    :return:
    '''
    cv = CountVectorizer()
    data = cv.fit_transform(
        ["人生 苦短,我用 python", "路漫漫 其修远兮,吾将上下 而求索"])
    print(cv.get_feature_names())
    #['python', '人生', '其修远兮', '吾将上下', '我用', '而求索', '苦短', '路漫漫']
    print(data.toarray())
    '''
    [[1 1 0 0 1 0 1 0]
    [0 0 1 1 0 1 0 1]]
    '''
    return None
 
def CountVectCh():
    '''
    中文jieba分词
    :return:
    '''
    info_list = [
       "2019年12月2日,知名媒体人剩闲小师傅特意从朋友处看到了发过来的人民日报直播专访胡歌的视频,胡歌在专访中宣传自己的新电影《南方车站的聚会》,并且表达来的一些作为演员的心得观念",
       "胡歌直言:创造型快乐才能持续成长。“经历了人生当中的挫折,不能仅仅只是再红一次。如果要继续做演员,至少我不能重复。",
        "胡歌在早些年前经历了一次车祸,生死只在一线之间,然而上天给了他生的机会,重新回过来头来想,这第二次生命,再继续前面的道路,做演员,做一名优秀的演员,而且让自己还能红一次,"
        "那么意义就不仅仅于此,而是要在电影中诠释不同的角色,正所谓记住我演的角色,但是可以忘记胡歌"
        ]
    data_list = []
    for info in info_list:
        data_list.append(" ".join(list(jieba.cut_for_search(info))))
 
    cv =CountVectorizer()
    data = cv.fit_transform(data_list)
    print(cv.get_feature_names())
    #['12', '2019', '一些', '一名', '一次', '一线', '上天', '不仅', '不仅仅', '不同', '不能', '专访', '之间', '二次', '人民', '人民日报', '人生', '仅仅', '仅仅只是', '仅只', '他生', '优秀', '但是', '作为', '再红', '创造', '创造型', '前面', '剩闲', '南方', '发过', '发过来', '只是', '可以', '回过', '如果', '媒体', '宣传', '师傅', '年前', '并且', '当中', '心得', '忘记', '快乐', '意义', '成长', '我演', '所谓', '才能', '持续', '挫折', '日报', '早些', '朋友', '机会', '来头', '演员', '然而', '特意', '生命', '生死', '电影', '直播', '直言', '看到', '知名', '第二', '第二次', '经历', '继续', '而且', '而是', '聚会', '胡歌', '自己', '至少', '表达', '观念', '视频', '角色', '记住', '诠释', '车祸', '车站', '过来', '造型', '道路', '那么', '重复', '重新']
 
    print(data.toarray())
    '''
        [[1 1 1 0 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0
      1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0
      0 1 2 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0]
     [0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1
      0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0
      0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0]
     [0 0 0 1 2 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0
      0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 2 1 0 1 1 1 0 0 0 0 1 1 1 1 1
      1 0 2 1 0 0 0 0 2 1 1 1 0 0 0 1 1 0 1]]
    '''
 
 
    return None
 
if __name__ == "__main__":
    CountVectCh()
3)TF-IDF:信息检索数据挖掘的常用加权技术。
    文本分类==》朴素贝叶斯
    tf:term frequency 词频
    idf:逆文档频率 inverse document frequency  log(总文档数量/该词出现的文档数量)
    重要性程度: tf * idf
    如果某个词或短语在某篇文章中出现的概率高,在其他文章中出现少,则认为该词语或者短语具有很好的类别区分能力
    作用:
        用来评估一个字词对一个文件集或者一个词科库的其中一份文件的重要性。
具体详细说明:
 
4)TfidfVectorizer()
# -*- coding: UTF-8 -*-
'''
@Author :Jason
TfidfVectorizer 分类机器学习算法的重要依据
'''
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
def TfidfChinese():
    '''
    中文jieba分词
    :return:
    '''
    info_list = [
        "2019年12月2日,知名媒体人剩闲小师傅特意从朋友处看到了发过来的人民日报直播专访胡歌的视频,胡歌在专访中宣传自己的新电影《南方车站的聚会》,并且表达来的一些作为演员的心得观念",
        "胡歌直言:创造型快乐才能持续成长。“经历了人生当中的挫折,不能仅仅只是再红一次。如果要继续做演员,至少我不能重复。",
        "胡歌在早些年前经历了一次车祸,生死只在一线之间,然而上天给了他生的机会,重新回过来头来想,这第二次生命,再继续前面的道路,做演员,做一名优秀的演员,而且让自己还能红一次,"
        "那么意义就不仅仅于此,而是要在电影中诠释不同的角色,正所谓记住我演的角色,但是可以忘记胡歌"
    ]
    data_list = []
    for info in info_list:
        data_list.append(" ".join(list(jieba.cut_for_search(info))))
 
    tf = TfidfVectorizer()
    data = tf.fit_transform(data_list)
    print(tf.get_feature_names())
    #['12', '2019', '一些', '一名', '一次', '一线', '上天', '不仅', '不仅仅', '不同', '不能', '专访', '之间', '二次', '人民', '人民日报', '人生', '仅仅', '仅仅只是', '仅只', '他生', '优秀', '但是', '作为', '再红', '创造', '创造型', '前面', '剩闲', '南方', '发过', '发过来', '只是', '可以', '回过', '如果', '媒体', '宣传', '师傅', '年前', '并且', '当中', '心得', '忘记', '快乐', '意义', '成长', '我演', '所谓', '才能', '持续', '挫折', '日报', '早些', '朋友', '机会', '来头', '演员', '然而', '特意', '生命', '生死', '电影', '直播', '直言', '看到', '知名', '第二', '第二次', '经历', '继续', '而且', '而是', '聚会', '胡歌', '自己', '至少', '表达', '观念', '视频', '角色', '记住', '诠释', '车祸', '车站', '过来', '造型', '道路', '那么', '重复', '重新']
 
    print(data.toarray()) #重要性
    """
            [[0.17174898 0.17174898 0.17174898 0.         0.         0.
  0.         0.         0.         0.         0.         0.34349795
  0.         0.         0.17174898 0.17174898 0.         0.
  0.         0.         0.         0.         0.         0.17174898
  0.         0.         0.         0.         0.17174898 0.17174898
  0.17174898 0.17174898 0.         0.         0.         0.
  0.17174898 0.17174898 0.17174898 0.         0.17174898 0.
  0.17174898 0.         0.         0.         0.         0.
  0.         0.         0.         0.         0.17174898 0.
  0.17174898 0.         0.         0.10143771 0.         0.17174898
  0.         0.         0.13061952 0.17174898 0.         0.17174898
  0.17174898 0.         0.         0.         0.         0.
  0.         0.17174898 0.20287542 0.13061952 0.         0.17174898
  0.17174898 0.17174898 0.         0.         0.         0.
  0.17174898 0.17174898 0.         0.         0.         0.
  0.        ]
 [0.         0.         0.         0.         0.15207094 0.
  0.         0.         0.         0.         0.39991001 0.
  0.         0.         0.         0.         0.199955   0.15207094
  0.199955   0.199955   0.         0.         0.         0.
  0.199955   0.199955   0.199955   0.         0.         0.
  0.         0.         0.199955   0.         0.         0.199955
  0.         0.         0.         0.         0.         0.199955
  0.         0.         0.199955   0.         0.199955   0.
  0.         0.199955   0.199955   0.199955   0.         0.
  0.         0.         0.         0.11809665 0.         0.
  0.         0.         0.         0.         0.199955   0.
  0.         0.         0.         0.15207094 0.15207094 0.
  0.         0.         0.11809665 0.         0.199955   0.
  0.         0.         0.         0.         0.         0.
  0.         0.         0.199955   0.         0.         0.199955
  0.        ]
 [0.         0.         0.         0.14587087 0.22187711 0.14587087
  0.14587087 0.14587087 0.14587087 0.14587087 0.         0.
  0.14587087 0.14587087 0.         0.         0.         0.11093855
  0.         0.         0.14587087 0.14587087 0.14587087 0.
  0.         0.         0.         0.14587087 0.         0.
  0.         0.         0.         0.14587087 0.14587087 0.
  0.         0.         0.         0.14587087 0.         0.
  0.         0.14587087 0.         0.14587087 0.         0.14587087
  0.14587087 0.         0.         0.         0.         0.14587087
  0.         0.14587087 0.14587087 0.17230737 0.14587087 0.
  0.14587087 0.14587087 0.11093855 0.         0.         0.
  0.         0.14587087 0.14587087 0.11093855 0.11093855 0.14587087
  0.14587087 0.         0.17230737 0.11093855 0.         0.
  0.         0.         0.29174173 0.14587087 0.14587087 0.14587087
  0.         0.         0.         0.14587087 0.14587087 0.
  0.14587087]]
    """
if __name__ == "__main__":
    TfidfChinese()

 

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:Python爬虫反爬---前端JS对url参数的加密,Python,Java解密算法

下一篇:Python爬虫反爬----JavaScript前端AES加密,Python解密

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...