vsm特征提取java_文本特征提取方案汇总

文本特征提取方案汇总

文本分析是机器学习算法的主要应用领域。但是,文本分析的原始数据无法直接丢给算法,这些原始数据是一组符号,因为大多数算法期望的输入是固定长度的数值特征向量而不是不同长度的文本文件。

一、文本数据的表示模型

​ 文本模型通常认为是半结构化或非结构化的,为适应计算机处理,必须转换为机器可以识别的格式,同时尽可能保留文本的原有语义信息。目前代表性的文本表示模型包括布尔模型(boolean model)、向量空间模型(vector space model)、概率模型(probabilistic model)和图空间模型(graph space model)等。

1.1 布尔模型

​ 布尔模型是一种基于二元评价体系的严格匹配模型,基于集合论和布尔代数对信息进行检索。通过逻辑运算判断某文本是否与检索条件一致,满足为真,否则为假。

​ 该模型概念简单,易于实现。但该模型基于严格逻辑匹配,无法区分检索词的重要程度;部分用户信息不能通过布尔代表式秒杀;另外,对于语义等情况无法满足。

1.2 向量空间模型(VSM)

​ 该模型由哈佛大学的Salton等人在1975年提出,作为一种索引方式得到应用。该模型,通过为语义单元赋予不同的权重以反映它们在语义表达能力上的差异,将文本看作有一组正交词条构成的矢量空间,将文本的语义单元看作是高维空间的维度。文本对于与特征空间中的向量,称为文本的特征向量。对于包含了N个文本,共有M个特征的集合,采用向量空间模型表示,文本作为M维的向量。

​ VSM是当前文斌表示最有效方式之一,在大规模文本集的处理中得到广泛应用。VSM相关研究集中在语义单元的构造(特征)和权重的计算两个方面。语义单元主要包括以词、短语、词簇、n-gram单元作为特征。

​ 对于权重,根据语义单元在文本中出现频率计算特征权重。假设特征Fi在文本​中出现的次数是​,那么可通过词频TF(term freqent)度量特征与文本间的相关性。若特征同时出现在多个文本中,其实际区分能力较差,因此可将词频与逆文档频率IDF(inverse docment freqency)综合考虑。IDF本质上是一种抑制噪声的加权方法,认为频率越低的词语越有区分度。

​ TF-IDF特征权重计算公式为:​

​ N为文本总数,​表示特征fj在文本中出现的次数。

​ VSM虽然可以通过特征的权重反应与文本内容的语义相关性,但该模型假设特征间是相互独立的,不具有普遍意义,因此有些研究人员提出了若干对VSM的改进模型(参考1,参考2,参考3)。

1.3 概率模型

​ 概率模型基于特征的概率分布表示文本数据,同时可以考虑特征之间的他概率关系度量方法,如果应用于信息检索领域还可以根据相关度对文本排序。不同的应用可以基于特定假设得到不同的概率模型,例如二元独立概率模型、二元一阶相关概率模型、双柏松分布概率模型以及概率网络信息模型等。

​ 概率模型通过统计的方法考虑特征间、特征与文本间的依赖关系,在一定程度上加强了对语义的处理,然而对相关参数的学习需要大量的标注样本。

1.4 图空间模型

​ 基于图的文本表示模型,进一步减少语义信息的损失,包括后缀树模型、频繁词集超图模型、图控件模型等,用图的形式反映特征间的次序挂你和相邻关系;还包括使用二维视图方法,将特征的信息用二维平面的局部能量和全局能量表示。该模型一般需要进行复杂的图处理,影响了后续机器学习的速度。

​ 综上,VSM是目前应用最广泛的文本表示方法之一,已成为文本分类的标准模式,而其他的表示方法仅对某些应用有效,且大都需要优化模型参数,其合理性和实用性有待进一步验证。

​ 一般使用VSM模型,采用词袋(Bag of Words,简称BOW)形式表示文本数据。

VSM(Vector Space Model)把对文本内容的处理简化为向量空间中的向量运算。

​ 概念:

​ 1)文档(D):泛指文档或文档片段,一般表征一篇文档。

​ 2)词汇(T):文本内容特征的基本语言单位,包含字、词、词组或短语。

​ 3)权重(W):表征词汇T的权重,在文档D中的重要程度。

​ 权重:

​ 目前表征一个字词在一个文本集或者语料库中某篇文本中的重要程度的统计方法为TF-IDF(term frequency–inverse document frequency),词汇的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降,详细内容在此不赘述。但是本文在实际项目中面临的问题是,文本集是变动的,而且变化速率比较快,因此并不适用于采用TF-IDF方法。本文采用非常简单直观的方法,即以词频来表征该词汇在文本中的重要程度(即权重)。

​ 向量对齐:

​ 由于在实际应用中,表征文本特征的两个向量的长度是不同的,因此必然需要对上述向量进行处理。目前存在两种方法:1)剔除掉向量中不重要的词汇,从而使得两个向量长度保持一致,目前主要依靠经验设定一些关键词来处理,但是其准确率不可保证;2)归并向量,并根据原向量是否在新向量(归并后的向量)存在,若存在则以该词汇的词频来表征,若不存在则该节点置为0,示例如下:

​ Text1: 我/是/中国人/

​ Text2: 我们/是/中国人/

​ Vector: 我/是/中国人/我们/

​ Vector1 = (1, 1, 1, 0)

​ Vector2 = (0, 1, 1, 1)

​ 上述“/”为采用IK分词,智能切分后的间隔符,则归并后的向量如Vector所示,对齐后的向量分别为Vector1 和Vector2。之后则根据两向量的余弦值确定相似度。

如果语料库很大,词就会很多,文章向量就会特别长,特别稀疏。所以有人就想到一些方法,来选择部分词语作为特征如: TF-IDF, 词频,互信息,交叉熵,卡方统计量,交叉熵

****

时间复杂度依赖于输入数据的规模,维度规约(Dimensionality reduction)则是一种被用于降低输入数据维数的方法。维度规约可以分为两类:

特征选择(feature selection),从原始的d维空间中,选择为我们提供信息最多的k个维(这k个维属于原始空间的子集)

特征提取(feature extraction),将原始的d维空间映射到k维空间中(新的k维空间不输入原始空间的子集)

在文本挖掘与文本分类的有关问题中,常采用特征选择方法。原因是文本的特征一般都是单词(term),具有语义信息,使用特征选择找出的k维子集,仍然是单词作为特征,保留了语义信息,而特征提取则找k维新空间,将会丧失了语义信息。

二、文本数据的特征选择方法

2.1 基于频率(DF)

​ 基于频率的方法包括特征频率(Term frequency,简称TF)和文本频率(document frequency,简称DF)。TF方法认为越有用的特征在文本集中出现的次数越多,常被用来初步过滤无关特征。DF方法用包含某个特征的文本占整个训练集的比例来衡量该特征的重要性。

​ 文档频率是指在训练文档集中某词条出现过的文档总数 [3] 。文档频率特征提取方法的基本思想是:首先根据具体情况设定最小和最大的文档频率阈值,接着计算每个特征词的文档频率。如果该特征词的文档频率大于已设定的最大文档频率阈值或小于最小的文档频率阈值,则删除该特征词,否则保留。

​ 如果文本集中存在大量的低频特征,TF方法可以有效降维。然而,如果高频特征在各个类中均匀分布,这样的高频特征对分类实际上没有太大的贡献,因此TF具有一定的局限性。DF方法可以有效去除噪声特征,但如果某个特征仅存在于某一类文本中,该特征可有效地区分该类,然而根据DF方法它可能被作为噪声。

2.2 信息增益(information gain,简称IG)

​ 信息增益算法通过统计某一个特征词 ​在文本中出现前后的信息熵之差,用来衡量特征中包含的类别信息。

​ 特征​ 的信息熵为 ​

​ 其中​是给定第​ 个特征后第​个类别变量的条件概率,一般用包含特征​ 并属于类别​的文本占所有包含​的文本的比例计算。该式藐视了当特征在文本中出现时,用来划分该文本类别的平均不确定性。信息熵越小,不确定性就越小,特征就越重要。积极与信息熵的定义,特征​的信息增益表示如下:

​ ​

​ 其中,​是文本中不出现特征​的概率,可以用训练集中不包含​的文本占整个文本集的比例 计算。​ 表示不包含第​个特征是的第​个类别的条件概率,一般等于不包含特征​且属于类别​的文本梳理出一所有不包含​的文本数量。还可以针对某个具体的类别​给出特征​的信息增益:

​ ​

​ 信息增益通过计算不同情况下的条件概率反映特征的信息量,并以信息量的大小作为选择特征的标准,信息量越大的特征越重要。由于信息增益需要计算条件概率,因此该方法对训练集质量的依赖性过大。

​ 信息增益法的缺点是,它考虑了特征未发生的情况,尽管特征不出现的情况也可能对文本分类的判别有积极作用,但这种积极作用往往要远小于考虑这种情况时对文本分类带来的干扰。

2.3 互信息

​ 互信息(mutual information,简称MI)是信息理论中一种衡量两个变量间相互关系的方法。特征​和类别​间的互信息可由下式计算:

​ ​

​ 其中,​ 是事件​ 和​ 的联合概率(joint probability),在文本分类中该概率可用属于类​ 并包含特征​ 的文本占整个文本集的比例来近似计算。​ 近似等于包含特征​ 的文本占整个文本集的比例,同样地,​ 可看作属于类​的文本占整个文本集的比例。当特征​依赖于类别​ 时,互信息较大;当特征​与类别 ​ 相互独立式,互信息等于0;互信息还可以是负值,表示两者是负相关的。对于所有类别,特征​ 的评价互信息可以通过下式计算:

​ ​

​ 根据互信息的定义,互信息较大的特征越重要。通过上式可知,如果特征​ 和类别 ​ 同时出现的概率较少,即​ 可能小于 ​ ,那么​值就会偏小。换言之,如果联合概率​ 接近于0时,那么满足不等式​。因此低频特征往往具有较大的互信息,即​ 倾向于选择频率较低的特征。

2.4 ​(Chi-square)统计量

​ 基于​ 统计量选择方法的出发点与基于互信息的方法相同,区别是它是一个归一化的值。

​ CHI统计量度量特征词条​ 和文档类别 ​ 之间的相关程度,并假设特征词条​和 类别 ​ 之间符合具有一阶自由度的分布。特征词条对于某类的统计值越高,它与该类之间的相关性越大,携带的类别信息也越多。反之,统计量也是反映特征词条​和 类别 ​ 之间的独立程度。当值为 0 时,属 性​和 类别 ​ 完全独立。

​ CHI特征选择算法利用了统计学中的"假设检验"的基本思想:首先假设特征词与类别直接是不相关的,如果利用CHI分布计算出的检验值偏离阈值越大,那么更有信心否定原假设,接受原假设的备则假设:特征词与类别有着很高的关联度。CHI的定义如下:

​ ​

​ 这里D是c和t都没有出现的次数,其余字母的含义与3中相同。A是特征词t和类c共同出现的次数,B是t出现但c没有出现的次数,C是c出现但t没有出现的次数,N是文本的总数。

​ 对于一个给定的语料而言,文档的总数N以及Cj类文档的数量,非Cj类文档的数量,他们都是一个定值,因此CHI的计算公式可以简化为:

167283ab011f

image

​ CHI特征选择方法,综合考虑文档频率与类别比例两个因素。CHI统计与用于处理低频特征词是不太可靠的,因其提高了在指定文本类别中出现的频率较低但却大量存在于其他类别的特征项在该文本类别中的权值。

2.5 WLLR(Weighted Log Likelihood Ration)

​ WLLR特征选择方法的定义如下:

167283ab011f

image

计算公式如下:

167283ab011f

image

2.6 WFO(Weighted Frequency and Odds)

最后一个介绍的算法,是由苏大李寿山老师提出的算法。通过以上的五种算法的分析,李寿山老师认为,"好"的特征应该有以下特点:

好的特征应该有较高的文档频率

好的特征应该有较高的文档类别比例

WFO的算法定义如下:

如果

167283ab011f

image

167283ab011f

image

否则:

167283ab011f

image

不同的语料,一般来说文档词频与文档的类别比例起的作用应该是不一样的,WFO方法可以通过调整参数

167283ab011f

image

,找出一个较好的特征选择依据。

在文本分类中,其他常见的特征选择算法,还包含期望交叉熵、文本证据权(weight of evidence for text,简称WET)、几率比(odds ratio,简称OR)等等。

​ 上述算法的理论基础不同,基于打了真实数据的实验证明,各个算法各有利弊,不存在任何一种算法在所有的数据集上都是最优的。

参考:

文本分类中特征选择技术的研究

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脚本启动显示查询频繁被服务器防御_又被CC攻击弄得心有余悸?莫怕!这里教你如何防御...

转自CSDN,博主:一只IT小小鸟。CC攻击原理HTTP Flood 俗称CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,前身名为Fatboy攻击,也是一种常见的网站攻击方法。是针对 Web 服务在第七层协议发起的攻击。攻击者相较其他三层…

java 怎么获取形参名_获得方法形参名称列表 -- 哦也,搞定!!

JAVA获取类的方法的参数名 – 老话题,新方法!!折腾了一天,终于搞定了.测试了nutz所有的类,均读取正常!! 完美读取任何class的变量名信息! 呵呵,当前,前提是编译时含debug信息.无任何依赖,不需要asm,不要其他任何字节码工具,纯标准JDK API实现. 核心代码,仅一个方法,130行,哦也!…

robotframework安装_python3.9.0 + robotframework + selenium3 实例体验

在win10上安装python3.9.0robotframework中我们做了基本的使用robot framework的环境搭建,这一章主要通过一个简单的实例来体验下robot framework的使用方式、运行、报告和日志(非常漂亮的自动化测试报告噢!)。首先我们打开RIDE,快捷键 ctrln…

vmware 搭建k8s无法ping通子节点_一波四折 —— 记一次K8S集群应用故障排查

一波四折——记一次K8S集群应用故障排查Part1 初露端倪一个周四的下午,客户的报障打破了微信群的平静。“我们部署在自建K8S集群上的应用突然无法正常访问了,现在业务受到了影响!”收到客户的报障,我们立刻响应,向客户…

java bytebuffer string_Java中的ByteBuffer get()方法

读取缓冲区当前位置的值,然后使用get()java.nio.ByteBuffer类中的方法将其递增。此方法返回当前缓冲区位置上的值。另外,如果发生下溢情况,则抛出BufferUnderflowException。演示此的程序如下所示-示例import java.nio.*;import java.util.*;…

自学python编程基础科学计算_Python基础与科学计算常用方法

Python基础与科学计算常用方法本文使用的是Jupyter Notebook,Python3。你可以将代码直接复制到Jupyter Notebook中运行,以便更好的学习。导入所需要的头文件import numpy as npimport numpy as npimport matplotlib as mplfrom mpl_toolkits.mplot3d imp…

php中删除文件夹内容吗,如何使用PHP删除包含内容的文件夹

小编典典此功能将允许您删除任何文件夹(只要可写)及其文件和子目录。function Delete($path){if (is_dir($path) true){$files array_diff(scandir($path), array(., ..));foreach ($files as $file){Delete(realpath($path) . / . $file);}return rmdir($path);}else if (is…

php多维数组删除指定元素,如何删除多维数组中指定元素?

[0] > Array ( [v] > 1 [fup] > 0 [n] > 服务器 [s] > Array ( [0] > Array ( [v] > 2 [fup] > 2 [n] > one [s] > Array ( [0] > Array ( [v] > 3 [fup] > 41 [n] > one ) [1] > Array ( [v] > 4 [fup] > 1 [n] > two …

python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo

转自:菜鸟学Python蝙蝠侠作为DC漫画的核心人物之一,一直都受到广大粉丝的喜爱,而笔者作为DC的铁杆粉丝,自然也是老爷(粉丝对蝙蝠侠的昵称)的支持者。今天,笔者就用Python来画一个蝙蝠侠的logo,大概就是下图…

iis7php怎么301重定向,iis7/8设置网站301重定向的方法

准备条件:a、一台装有win2008以上版本的服务器 b、iis启用并且运行正常 c、在网站程序存放目录中单独创建个目录,目录里面留空即可(为了方便区分,目录名称可以设置为站点名称301,例如fcblog_301)1、打开Internet信息服务…

结构体内元素不确定_查漏补缺!高中三年生物最易忽略、易错的30个知识点整理不容错过...

高中生物的知识体系基本上是由大约数十个核心概念为基础构建起来的,这些概念包括细胞、细胞分裂、光合作用、呼吸作用、基因、染色体、遗传、变异、进化、生化系统等等,今天学姐来帮助你们整理一下高中三年中最容易忽略,也是最容易出错的30个…

基于单片机超声波测距系统的设计_一种基于UWB技术实现的测距防撞系统

叉车被广泛应用于工厂车间、仓库、流通中心和配送中心等,大大提高了对成件托盘货物进行装卸、堆垛和短距离运输作业的运输效率,几乎是所有车间必不可少的运输工具。但目前,简单方便的同时,安全事故(剐蹭、碰撞、碾压、撞车等)却也…

php zend 多个站错误,php – 如何显示Zend框架抛出的异常错误

APPLICATION_ENV环境变量的值是多少.ZF应用程序中的标准public / index.php执行以下操作:// Define application environmentdefined(APPLICATION_ENV)|| define(APPLICATION_ENV, (getenv(APPLICATION_ENV) ? getenv(APPLICATION_ENV) : production));这意味着如果…

vb.net中递归退到最外层_数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的…

php5 数据库框架,数据库 · FastAdmin - 基于ThinkPHP5的极速后台开发框架文档 · 看云...

这里提供的是数据库表字段规则在你创建表时使用,当按如下的规则进行字段命名、类型设置和备注时使用php think crud -t 表名生成CRUD时会自动生成对应的HTML元素和组件## 根据字段类型| 类型 | 备注 | 类型说明 || --------- | ---- | ----------------------------…

python的安装包下载_科学网—[转载]python常用的安装包下载 - 林清莹的博文

Python常用的安装包下载1.首先应该下载dlib安装包(例如:dlib-19.8.1-cp36-cp36m-win_amd64.whl)可以通过此网址进行下载对应的dlib包 https://pypi.org/simple/dlib/2.需要使用pip进行安装(之前很多博客说要安装vs2015,然后借用其编译的dlib才能实现在…

java实现条形图,JavaFX条形图

本文概述通常, 条形图可以定义为使用矩形条形表示数据的图。条的长度表示绘制在其中一根轴上的精确数值数据值。矩形条可以在图表上水平或垂直绘制。在下图中, 条形图显示了工程各个分支中的学生人数。 X轴是类别轴, 显示了不同的分支, 而Y轴是数字轴, 显示了特定分支中的学生人…

python缺失值填充均值法_pandas 使用均值填充缺失值列的小技巧分享

pd.DataFrame中通常含有许多特征,有时候需要对每个含有缺失值的列,都用均值进行填充,代码实现可以这样:for column in list(df.columns[df.isnull().sum() > 0]):mean_val df[column].mean()df[column].fillna(mean_val, inpl…

php excel 垂直居中,完美实现文字图片水平垂直居中

垂直居中是一个历史悠久的大问题,要做到兼容所有浏览器少不了要花点时间,网上也流传了很多解决方案,但没发现比我现在用的方案更完美,至少在我的项目是如此。项目中要用到垂直居中而碰到兼容性问题的,一般都是以下几种…

cd短是什么意思_每日命令|pwd、cd

01 命令简介上回说到《每日命令 | ls》,今天我们来说一说pwd命令和cd命令。pwd命令——返回当前工作目录名称。cd命令——改变工作目录。什么是工作目录?举个例子:我在北京上班,那我的工作地点就是北京;后来我到上海上…