zoukankan      html  css  js  c++  java
  • P6 文本特征抽取以及中文问题

    http://bilibili.com/video/BV184411Q7Ng?p=6

     

    """
    演示字典的特征抽取,
    DictVectorizer是一个类的名字
    """
    from sklearn.feature_extraction import DictVectorizer
    
    
    def dictvec():
        """
        字典数据抽取
        :return:
        加入参数sparse=False可以把转换成的数据转换成数组
        """
        dict=DictVectorizer(sparse=False) #实例化 sparse=False
        data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
        print(dict.inverse_transform(data))
    
    
        return None
    
    
    if __name__=="__main__":
        dictvec()

    运行结果:

    C:UsersTJAppDataLocalProgramsPythonPython37python.exe D:/qcc/python/mnist/feature_abstract.py
    [{'city=北京': 1.0, 'temperature': 100.0}, {'city=上海': 1.0, 'temperature': 60.0}, {'city=深圳': 1.0, 'temperature': 30.0}]

    Process finished with exit code 0

    """
    演示字典的特征抽取,
    DictVectorizer是一个类的名字
     CountVectorizer是一个类的名字,可以用来实例化一个变量
    """
    from sklearn.feature_extraction import DictVectorizer
    from sklearn.feature_extraction.text import CountVectorizer
    
    def dictvec():
        """
        字典数据抽取
        :return:
        加入参数sparse=False可以把转换成的数据转换成数组
        """
        dict=DictVectorizer(sparse=False) #实例化 sparse=False
        data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
        print(dict.inverse_transform(data))
    
    
        return None
    
    
    def countvec():
        """
        对文本进行特征值化
        :return:
        """
        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())
    
        return None
    
    
    
    if __name__=="__main__":
        countvec()

    运行结果:

    C:UsersTJAppDataLocalProgramsPythonPython37python.exe D:/qcc/python/mnist/feature_abstract.py
    ['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
    [[0 1 1 1 0 1 1 0]
    [1 1 1 0 1 1 0 1]]

    Process finished with exit code 0

    注解:

    1. 统计两篇文章中所有单词,返回一个列表,重复的单词只统计一次。
    2. 运行结果的下面的二维矩阵说明:针对每篇文章,在词的列表里面统计每个词出现的次数。
    """
    演示字典的特征抽取,
    DictVectorizer是一个类的名字
     CountVectorizer是一个类的名字,可以用来实例化一个变量
    """
    from sklearn.feature_extraction import DictVectorizer
    from sklearn.feature_extraction.text import CountVectorizer
    
    def dictvec():
        """
        字典数据抽取
        :return:
        加入参数sparse=False可以把转换成的数据转换成数组
        """
        dict=DictVectorizer(sparse=False) #实例化 sparse=False
        data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
        print(dict.inverse_transform(data))
    
    
        return None
    
    
    def countvec():
        """
        对文本进行特征值化
        :return:
        """
        cv=CountVectorizer() #实例化一个对象
        data=cv.fit_transform(["life is is short,i like python,","life is too long,i dislike python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
        print(cv.get_feature_names())
        print(data.toarray())
    
        return None
    
    
    
    if __name__=="__main__":
        countvec()

    运行结果:

    C:UsersTJAppDataLocalProgramsPythonPython37python.exe D:/qcc/python/mnist/feature_abstract.py
    ['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
    [[0 2 1 1 0 1 1 0]
    [1 1 1 0 1 1 0 1]]

    Process finished with exit code 0

     注解:

    1. 文本特征抽取的应用。
    2. 单个英文字母,不能用于文本分类和情感分析。
    """
    演示字典的特征抽取,
    DictVectorizer是一个类的名字
     CountVectorizer是一个类的名字,可以用来实例化一个变量
    """
    from sklearn.feature_extraction import DictVectorizer
    from sklearn.feature_extraction.text import CountVectorizer
    
    def dictvec():
        """
        字典数据抽取
        :return:
        加入参数sparse=False可以把转换成的数据转换成数组
        """
        dict=DictVectorizer(sparse=False) #实例化 sparse=False
        data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
        print(dict.inverse_transform(data))
    
    
        return None
    
    
    def countvec():
        """
        对文本进行特征值化
        :return:
        """
        cv=CountVectorizer() #实例化一个对象
        data=cv.fit_transform(["人生苦短,我喜欢python,","人生漫长,不用python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
        print(cv.get_feature_names())
        print(data.toarray())
    
        return None
    
    
    
    if __name__=="__main__":
        countvec()

    运行结果:

    C:UsersTJAppDataLocalProgramsPythonPython37python.exe D:/qcc/python/mnist/feature_abstract.py
    ['不用python', '人生漫长', '人生苦短', '我喜欢python']
    [[0 0 1 1]
    [1 1 0 0]]

    Process finished with exit code 0

    注解:

    1. 本利想要的结果是,一个词在一个句子或者一篇文章中出现的次数,现在统计的一个句子,所以不是想要的结果。
    2. 对于中文,默认不支持特征抽取。
    """
    演示字典的特征抽取,
    DictVectorizer是一个类的名字
     CountVectorizer是一个类的名字,可以用来实例化一个变量
    """
    from sklearn.feature_extraction import DictVectorizer
    from sklearn.feature_extraction.text import CountVectorizer
    
    def dictvec():
        """
        字典数据抽取
        :return:
        加入参数sparse=False可以把转换成的数据转换成数组
        """
        dict=DictVectorizer(sparse=False) #实例化 sparse=False
        data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
        print(dict.inverse_transform(data))
    
    
        return None
    
    
    def countvec():
        """
        对文本进行特征值化
        :return:
        """
        cv=CountVectorizer() #实例化一个对象
        data=cv.fit_transform(["人生 苦短,我 喜欢 python,","人生漫长,不用 python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
        print(cv.get_feature_names())
        print(data.toarray())
    
        return None
    
    
    
    if __name__=="__main__":
        countvec()

    运行结果:

    C:UsersTJAppDataLocalProgramsPythonPython37python.exe D:/qcc/python/mnist/feature_abstract.py
    ['python', '不用', '人生', '人生漫长', '喜欢', '苦短']
    [[1 0 1 0 1 1]
    [1 1 0 1 0 0]]

    Process finished with exit code 0

    注解:

    1. 空格分开的话,可以统计到一个词。

     

     注解:

    1. 对文本进行特征值化就是抽取文本中的单词,并统计其在文章中出现的个数。
    """
    演示字典的特征抽取,
    DictVectorizer是一个类的名字
     CountVectorizer是一个类的名字,可以用来实例化一个变量
    """
    from sklearn.feature_extraction import DictVectorizer
    from sklearn.feature_extraction.text import CountVectorizer
    import jieba
    
    def dictvec():
        """
        字典数据抽取
        :return:
        加入参数sparse=False可以把转换成的数据转换成数组
        """
        dict=DictVectorizer(sparse=False) #实例化 sparse=False
        data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
        print(dict.inverse_transform(data))
    
    
        return None
    
    
    def countvec():
        """
        对文本进行特征值化
        :return:
        """
        cv=CountVectorizer() #实例化一个对象
        data=cv.fit_transform(["人生 苦短,我 喜欢 python,","人生漫长,不用 python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
        print(cv.get_feature_names())
        print(data.toarray())
    
        return None
    
    
    
    def cutword():
        """
        对中文词进行切分
        :return:
        """
        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 chinesevec():
        """
        中文特征值化
        :return:
        """
    
        c1,c2,c3=cutword()
        print(c1,c2,c3)
    
        cv=CountVectorizer() #实例化一个对象
        data=cv.fit_transform([c1,c2,c3])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
        print(cv.get_feature_names())
        print(data.toarray())
    
        return None
    
    if __name__=="__main__":
        chinesevec()

    运行结果:

    C:UsersTJAppDataLocalProgramsPythonPython37python.exe D:/qcc/python/mnist/feature_abstract.py
    Building prefix dict from the default dictionary ...
    Loading model from cache C:UsersTJAppDataLocalTempjieba.cache
    Loading model cost 0.964 seconds.
    Prefix dict has been built successfully.
    今天很残酷,明天更残酷,后天很美好,但绝大多数是死在明天晚上,所以每个人不要放弃今天。 我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙是时,我们是自看它的过去 如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其有我们所有理解的事物联系
    ['了解事物真正含义的秘密取决于如何将其有我们所有理解的事物联系', '今天很残酷', '但绝大多数是死在明天晚上', '你就不会真正了解它', '后天很美好', '如果只用一种方式了解某样事物', '我们是自看它的过去', '我们看到的从很远星系来的光是在几百万年之前发出的', '所以每个人不要放弃今天', '明天更残酷', '这样当我们看到宇宙是时']
    [[0 1 1 0 1 0 0 0 1 1 0]
    [0 0 0 0 0 0 1 1 0 0 1]
    [1 0 0 1 0 1 0 0 0 0 0]]

    Process finished with exit code 0

    注解:

    1. 运行的结果不是视频讲解的结果。

  • 相关阅读:
    信号量整理
    Linux下串口配置初步探寻
    Vmware启动ubuntu 出现错误。
    软件工程结课作业
    第四次博客作业-结对项目
    20194731 软件工程第三次作业——博文软件质量保障初探
    20194731 第一次作业-博客初体验
    20194731 自动生成四则运算题第一版报告
    误删除 mySQL 用户解决办法
    mySQL的安装过程---二进制和源码安装
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/14205989.html
Copyright © 2011-2022 走看看