zoukankan      html  css  js  c++  java
  • 机器学习之文本特征提取

      英文文本特征提取:

      文本特征提取需要导入第三方库:sklearn.feature_extraction,调用其中的类CountVectorizer

      代码如下:

     1 #文本特征提取
     2 from sklearn.feature_extraction.text import CountVectorizer
     3 #英文文本特征提取
     4 def text_English_demo():
     5     data = ["I love china and china love me!","life is too long and i like python"]
     6     #1 实例化转换器对象 CountVectorizer()函数内可有参数stop_words,为列表类型,存放停用词
     7     transfer = CountVectorizer()
     8     #2 调用文本特征提取函数
     9     new_data = transfer.fit_transform(data)
    10     print("特征名:
    ",transfer.get_feature_names())
    11     print("new_data:
    ",new_data.toarray())
    12 if __name__ == '__main__':
    13     text_English_demo()    #英文文本特征提取

      注:CountVectorizer()不含像字典特征提取一样可带参数sparse,所以不能通过这种方式使得输出格式为二维数组格式,但可以通过new_data.toarray()进行转换

      结果截图:二维列表中的值为相应的特征词的出现个数

      

      当CountVectorizer(stop_words = ['and'])时:

      结果:

      

       中文文本特征提取:

      我们先尝试一下像提取英文特征词一样提取中文特征词:

      代码如下:

    #文本特征提取
    from sklearn.feature_extraction.text import CountVectorizer
    #中文文本特征提取
    def text_chinese_demo():
        data = ["我爱北京!","天蓝蓝秋草香"]
        #1 实例化转换器对象 CountVectorizer()函数内可有参数stop_words,为列表类型,存放停用词
        transfer = CountVectorizer()
        #2 调用文本特征提取函数
        new_data = transfer.fit_transform(data)
        print("特征名:
    ",transfer.get_feature_names())
        print("new_data:
    ",new_data.toarray())
    if __name__ == '__main__':
        text_chinese_demo()

      结果截图:

      

      emmmmm,这么看来是不行的,那么我们只好先使用jieba分词了。

      首先我们要引入jieba库

      代码:

    import jieba
    #中文文本特征提取jieba分词
    def text_chinese_demo2():
        data = ["世界上那些最容易的事情中,拖延时间最不费力。","记住该记住的,忘记该忘记的;改变能改变的,接受不能接受的。"]
        for each in range(len(data)):
            result = "/".join(jieba.cut(data[each]))
            print(data[each],"
    分词结果:",result)
    def get_participle(text):
        return " ".join(jieba.cut(text))
    if __name__ == '__main__':
        text_chinese_demo2()

      结果截图:

      

      然后我们将分词得到的结果列表data使用转换器对象CountVectorizer类的fit_transform()进行特征提取

      注:CountVectorizer(stop_words = [])可添加参数stop_words列表存放停用词

      完整代码:

    import jieba
    #中文文本特征提取jieba分词
    def text_chinese_demo2():
        data = ["世界上那些最容易的事情中,拖延时间最不费力。","记住该记住的,忘记该忘记的;改变能改变的,接受不能接受的。"]
        data_jieba = []
        for each in range(len(data)):
            data_jieba.append("/".join(jieba.cut(data[each])))
        # 1 实例化转换器对象 CountVectorizer()函数内可有参数stop_words,为列表类型,存放停用词
        transfer = CountVectorizer()
        # 2 调用文本特征提取函数
        new_data = transfer.fit_transform(data_jieba)
        print("特征名:
    ", transfer.get_feature_names())
        print("new_data:
    ", new_data.toarray())
    
    def get_participle(text):
        return " ".join(jieba.cut(text))
    if __name__ == '__main__':
        text_chinese_demo2()

      结果截图:

      

     

      

    data = ["世界上那些最容易的事情中,拖延时间最不费力。","记住该记住的,忘记该忘记的;改变能改变的,接受不能接受的。"]
  • 相关阅读:
    贝叶斯公式由浅入深大讲解—AI基础算法入门
    再谈前端HTML模板技术
    再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结
    mac版chrome升级到Version 65.0.3325.18后无法打开百度bing搜狗
    图说js中的this——深入理解javascript中this指针
    web app响应式字体设置!rem之我见
    【2020-04-18】 加班
    【2020-04-06】汇郡海下的沉思
    【2020-03-28】Dubbo源码杂谈
    【2020-03-21】Dubbo本地环境搭建-实现服务注册和消费
  • 原文地址:https://www.cnblogs.com/liyuchao/p/12533445.html
Copyright © 2011-2022 走看看