特征抽取

特征抽取算是自然语言处理领域一个比较重要的概念了,近期由于需要又要重新回顾下这方面的知识,顺便也总结下所有的方法。

特征抽取就是找出一些词来代表文本,表述上既能表达文本所要传递的内容,形式上又要精炼精简。那什么样的词才能代表这篇文本呢?很自然的我们就会想到经常出现的词即词频很高的词。这样又带来一个问题:一个词在这个文本里面经常出现,那这个词肯定和这个文本的关系很紧密,但是这能不能说明这个词就可以代表这篇文本区别标识与其他文本呢?很明显,这不是一个充要条件,这又牵扯出一个概念:停用词。什么叫做停用词呢?就是在每篇文本中的词频都很高,最常用的停用词就是“的”,这个词经常出现在各类文本中,但是却不能代表任何一类文本,因此,特征抽取的时候都会在预处理阶段把此类词过滤掉。

去掉停用词以后,我们就可以用一些常用的方法进行特征抽取了。

一、 DF(Document frequency)即文档频率

指训练集中包含该特征的文本总数。所谓文本包含特征是指这个特征在该文本中出现,忽略其在文本中的出现次数。DF方法提取DF值较高的特征,它的目的是去掉在训练集上出现次数过少的特征,保留出现达到一定次数,具有一定影响力的特征,在各个特征抽取方法中DF方法的计算是最简单的。

二、IG(Information Gain)即信息增益

信息增益是一种基于熵的评估方法。它根据训练数据,计算出各个特征词的信息增益,按照信息增益从大到小排序,筛选出较大的值。

哦,差点忘了一些前提介绍,将词和类别联系起来,训练集所能提供数据的四个数值。

分别是:类别T中含有这个词的文档的个数(A),除了类别T其他所有类别中含有这个词的文档的个数(B),类别T中不含有这个词的文档的个数(C),除了类别T其他所有类别中不含有这个词的文档的个数(D)。

示意图


类别T


除了T的剩余类别


总计


含词1的文档数


A


B


A+B


不含词1的文档数


C


D


C+D


总计


A+C


B+D


N(即A+B+C+D)

三、MI(Mutual Information)互信息

四、CHI卡方

时间: 2024-10-17 00:44:20

特征抽取的相关文章

特性选择、特征抽取阅读记录

关联规则模型 关联规则模型的特点:就是从大量随机发生的并发时间中,找到强关联的现象,使得在某事件发生的前提下,另一事件的发生具有很高的概率,并且是一种具有业务意义的强规则. 关联规则:Apriori算法.FP树频集算法. 一个关联规则是形如X=>Y的蕴含式,这里X属于I,Y属于I,并且X与Y的交集为空集. 支持度 置信度 Apriori算法:逐层迭代找出频繁项集.缺点就是I/O开销大. FP树 Lift:提示给定的前件和后件随机同时出现的规则的强度.若Lift<1的规则都不能显示一个真正的内在

Caffe Python特征抽取

Caffe Python特征抽取 转载 http://www.cnblogs.com/louyihang-loves-baiyan/ Caffe大家一般用到的深度学习平台都是这个,关于Caffe的训练通常一般都可以通过一些命令来执行,但是在deploy阶段,如果是做实际的工程,那么C++接口用得会相对比较多.但是Caffe是支持Python和Matlab接口的,所以用Python来做一些相关的特征的处理以及额外的任务比较方便 这里我主要是结合了Caffe官网的例程,当然它给的例程是参照的Ipyt

特征抽取 — TF-IDF

特征处理相关的算法,大体分为以下三类: 特征抽取:从原始数据中抽取特征 特征转换:特征的维度.特征的转化.特征的修改 特征选取:从大规模特征集中选取一个子集 #导入相关的库 from pyspark.ml.feature import HashingTF,IDF,Tokenizer from pyspark.sql import SparkSession #创建SparkSession对象 spark = SparkSession.builder.master('local').appName(

字典特征抽取

#特征抽取 feature_extraction #导包 # from sklearn.feature_extraction.text import CountVectorizer # # vector = CountVectorizer() # # res = vector.fit_transform(["life is short,i like python ", "life is too long ,i dislike python"]) # # print(

基于 GAN 的特征抽取 Feature Extraction by GAN

InfoGAN 期望的是 input 的每一个维度都能表示输出数据的某种特征.但实际改变输入的一个特定维度取值,很难发现输出数据随之改变的规律. InfoGAN 就是想解决这个问题.在 GAN 结构以外,把输入 z 分成两个部分 c 和 z' ,然后根据 generated data x 来预测给到 generator 的 c 是什么,这里的ae 做的事情是 code-x-code.同时还需要 discriminator 来配合,x 还必须要足够像目标数据(要不 generator 直接把 c

特征抽取--标签与索引的转化: OneHotEncoder

?独热编码(One-Hot Encoding) 是指把一列类别性特征(或称名词性特征,nominal/categorical features)映射成一系列的二元 连续特征的过程,原有的类别性特征有几种可能取值,这一特征就会被映射成几个二元连续特征,每一个特征代表一种取值,若该样 本表现出该特征,则取1,否则取0. One-Hot编码适合一些期望类别特征为连续特征的算法,比如说逻辑斯蒂回归等. 首先创建一个DataFrame,其包含一列类别性特征,需要注意的是,在使用OneHotEncoder进

特征抽取--标签与索引的转化: VectorIndexer

之前介绍的StringIndexer是针对单个类别型特征进行转换,倘若所有特征都已经被组织在一个向量中 ,又想对其中某些单个分量进行处理时,Spark ML提供了VectorIndexer类来解决向量数据集中的类别 性特征转换.通过为其提供maxCategories超参数,它可以自动识别哪些特征是类别型的,并且将原始 值转换为类别索引.它基于不同特征值的数量来识别哪些特征需要被类别化,那些取值可能性最多不超 过maxCategories的特征需要会被认为是类别型的.在下面的例子中,我们读入一个数

特征抽取: sklearn.feature_extraction.FeatureHasher

sklearn.feature_extraction.FeatureHasher(n_features=1048576, input_type="dict", dtype=<class 'numpy.float64'>, alternate_sign=True, non_negative=False): 特征散列化的实现类. 此类将符号特性名称(字符串)的序列转换为scipy.sparse矩阵,使用哈希函数计算与名称对应的矩阵列.使用的散列函数是带符号的32位版本的Murm

Scikit-learn使用总结

在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包.在数据量不是过大的情况下,可以解决大部分问题.学习使用scikit-learn的过程中,我自己也在补充着机器学习和数据挖掘的知识.这里根据自己学习sklearn的经验,我做一个总结的笔记.另外,我也想把这篇笔记一直更新下去. 1 scikit-learn基础介绍 1.1 估计器(Estimator) 估计器,很多时候可以直接理解成分类器,主要包含两个函数: fit():训练算法,设置内部参数.接收训练集和类别两