机器学习特征工程之英文中文文本的特征提取

作用就是:将一个英文文档中的所有词当做特征,然后用one-hot将特征位置标出来,用toarry将稀疏变换为离散后,会标注每个文本当中每个次出现的次数(文档特征识别无spare参数!字典有)

2.3.3 文本特征提取
                   单词 作为 特征
                   句子、短语、单词、字母
                   特征:特征词
                   方法1:CountVectorizer
                        1)统计每个样本特征词出现的个数:
                        如图1所示该类会自动将单个字母剔除。只留下字母串当作特征值,统计特征值在数据中出现的次数,并按一句一句的输出一维数组,表明按照顺序的每个特征值所存在的个数。
                        ps:与字典特征提取对比,字典是输入字典型数据以后,比如输入了三个字典(三个样例),每个字典两个特征值(见上一个总结),则最后将三个样本的两个特征值将变成位置变量以及对应值(若特征值等于字符串,则位置对应值1。若为数字,则对应值为数字)。而文本特征提取是将输入文本剔除单个字符,然后对应于每个特征值在每个句子出现几次
                        2)内置函数如图二:与字典特征提取一样。其中建议将特征名(第三个)打出来,好看每次处理的特征值

机器学习特征工程之英文中文文本的特征提取_第1张图片
图一
机器学习特征工程之英文中文文本的特征提取_第2张图片
图二
代码实现:

from sklearn.feature_extraction.text import CountVectorizer
def count_demo():
    """
    文本特征抽取:CountVecotrizer
    :return:
    """
    data = ["life is short,i like like python", "life is too long,i dislike python"]
    # 1、实例化一个转换器类
    transfer = CountVectorizer()

    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new)
    print("特征名字:\n", transfer.get_feature_names())

代码输出:
data_new:
   (0, 2)	1
  (0, 1)	1
  (0, 6)	1
  (0, 3)	2
  (0, 5)	1
  (1, 2)	1
  (1, 1)	1
  (1, 5)	1
  (1, 7)	1
  (1, 4)	1
  (1, 0)	1
特征名字:
 ['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']

可以看到,第一行是特征值位置,如(0, 3) 2,就是like在样本句子1中特征值中第4个,出现两次
由于文本转换器没有spare这个参数,因此在fit_transform函数中还有个toarry的内置方法,从而实现稀疏变离散
代码如下

from sklearn.feature_extraction.text import CountVectorizer
def count_demo():
    """
    文本特征抽取:CountVecotrizer
    :return:
    """
    data = ["life is short,i like like python", "life is too long,i dislike python"]
    # 1、实例化一个转换器类
    transfer = CountVectorizer(stop_words=["is", "too"])

    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new.toarray())
    print("特征名字:\n", transfer.get_feature_names())
代码输出:
data_new:
 [[0 1 2 0 1 1]
 [1 1 0 1 1 0]]
特征名字:
 ['dislike', 'life', 'like', 'long', 'python', 'short']

可以看出此时就是按照样本,特征值顺序,输出出现数量

但是问题是中文不想英文,都要用空格隔开每个单词,因此需要用其他方法
下一节继续

你可能感兴趣的:(python,机器学习)