当前位置:   article > 正文

勇闯机器学习(第四关-文本特征提取)

勇闯机器学习(第四关-文本特征提取)

以下内容,皆为本人原创,制作不易,首先感谢各位阅读。

第一关:机器学习概念和流程http://t.csdnimg.cn/IuHh4
第二关:数据集的使用http://t.csdnimg.cn/2jsdi
第三关:特征工程-字典特征提取http://t.csdnimg.cn/ZpMto

一.文本特征提取 

        紧接上章节,这章节我们说如何将文本数据转为二维数组。方法如下:

作用:对文本数据进行特征值

sklearn.feature_extraction.text.CountVectorizer(stop_words=[])   返回词频矩阵

CountVectorizer.fit_transform(X)    X:文本或者包含文本字符串的可迭代对象

                                                        返回值:返回sparse矩阵


CountVectorizer.inverse_transform(X)        X:array数组或者sparse矩阵

                                                                        返回值:转换之前数据格


CountVectorizer.get_feature_names()        返回值:单词列表

可能直接列出方法,有点困难,直接看代码和运行结果。

  1. from sklearn.feature_extraction.text import CountVectorizer
  2. def count_demo():
  3. # 文本数据
  4. data = ['life is short, i want to study python',
  5. 'life is long, i dislike c++']
  6. # 文本特征提取CountVectorizer
  7. # 实例化一个转换器类
  8. transfer = CountVectorizer()
  9. # 调用fit_transform
  10. data_new = transfer.fit_transform(data)
  11. print("data_new\n", data_new)
  12. if __name__ == '__main__':
  13. count_demo()

 

我们可以看到这个data转换后的特征值不是特征数组,那我可以加一个toarray()方法。

观察第一个print里面,加了toarray()方法,就可以返回二维数组

  1. from sklearn.feature_extraction.text import CountVectorizer
  2. def count_demo():
  3. # 文本数据
  4. data = ['life is short, i want to study python',
  5. 'life is long, i dislike c++']
  6. # 文本特征提取CountVectorizer统计每个样本特征词出现的个数
  7. # 实例化一个转换器类
  8. transfer = CountVectorizer()
  9. # 调用fit_transform
  10. data_new = transfer.fit_transform(data)
  11. print("data_new\n", data_new.toarray())
  12. print("feature_names\n", transfer.get_feature_names_out())
  13. if __name__ == '__main__':
  14. count_demo()

 

         总结:

              可以看到返回的二维数组中,是一些单词,也就是特征值。那里面的0和1是什么意思呢?

          CountVectorizer统计每个样本特征值出现的个数。我们可以看到二维列表,它里面的元素是一维列表。一维列表里面的元素跟特征值的数量都是一样的,都是9个。这个0和1表示的是对应的。0代表这一组列表里没有这个单词,1则代表有一个。比如说dislike不在我们data的第一句话里,所以返回的二维列表里第一个元素就是0,代表第一句话没有这个词。

二维列表里面的数字,是特征值出现的次数。

 

二.中文数据特征提取

        有了上面的基础,那我们直接看代码和运行结果,变化的地方就是数据变成中文了。

  1. from sklearn.feature_extraction.text import CountVectorizer
  2. def count_chinese_demo():
  3. #中文文本数据
  4. data = ['我喜欢你', '你喜欢我吗']
  5. # 实例化转换器类
  6. transfer = CountVectorizer()
  7. data_new = transfer.fit_transform(data)
  8. print("data_new\n", data_new)
  9. print("feature_name\n", transfer.get_feature_names_out())
  10. if __name__ == "__main__":
  11. count_chinese_demo()

         

               内心感想:
                特征值为什么是一句话呢,  像我们之前的英文句子(是由一个个英语单词组成,并且单词之间有空格),所以很轻易的提取。而我们的中文都是在一起的。所以就把整个句子当做特征值了。       

         将中文句子中间加几个空格就可以了。将数据换成这个。

    data = ['我 喜欢 你', '你 喜欢 我吗']

OK,这次特征值,就发生了变化。

感谢大家的观看,今天的分享就到这里。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1017133
推荐阅读
相关标签
  

闽ICP备14008679号