ICTCLAS

该分词系统的主要思想是先通过CHMM(层叠形马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率。基本思路是:先进行原子切分,然后在此基础上进行N-最短路径粗切分,找到前N个最符合的切分结果,生成二元分词表,然后生成分词结果,接着进行词性标注并完成主要分词步骤。

CHI算法:

初始情况下,该特征项集合包含所有该类中出现的词。对个每个词,计算词和类别的统计

其中,N为文档总数,C为某一特定的类别,t表示特定的词条,A表示属于t的文档频数,B表示不属于c类的但是包含t的文档频数,C表示属于c但是不属于t的文档频数,D是既不包含t也不属于c类的文档频数。

分别计算次词条对各个类别的CHI值,取最大值。

选取高于某阈值的词条作为特征值,精简向量表示。

libSVM

LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。

【1】数据预处理:对训练集的预处理包括分词,取名词,去停用词等步骤;

【2】特征提取与表达:对文本进行如上所示的预处理之后,留下的词语仍然不能较典型的代表每个具体的类,然后对其进行CHI处理并建立数据词典。CHI 的中心思想是通过分析特征词与类别之间的关系,一个对某类有分类价值的特征词,应该在该类各个文档中均匀分布出现的次数较多,并且只在该类中出现的次数较多。

【3】将训练集住转化为libSVM所支持的格式:

  [label] [idex1]:[value1] [index2]:[value2] ...

  即 [l类别标号] [特征1]:[特征值] [特征2]:[特征值] ...

【4】同样,对测试集也进行分词,取名词,去停用词,CHI处理,并最终表达为所需要的向量的形式

【5】对训练集和数据集进行归一化是必要的,因为适当的scale有利于参数的选取和建svm模型的速度,生成文件trainscale和testscale,

【6】测试过程:第一次用默认的参数,进行svm预测,得到结果只有如图所示的49.76%。

【7】实验结果与性能评估:在本次试验中,共使用训练集10000篇,测试集10000篇,。通过多次实验得到最好的参数c=780时,得到整个试验中最高的准确率82.11%。

【8】其中,准确率最高的是第七类99.11308%,最低的是第八类57.3590%,召回率最高的是第四类93.1%,最低的是第九类66.1%。

【注】svm-scale有两点好处,第一点是加快训练速度,第二点是比没归一化前同样的条件训练出来的模型准确率更高。

wenbenfenlei的更多相关文章

随机推荐

  1. 如何同时打开两个excel

    1. 打开一个excel1 2. 不要双击想要打开的excel2.右键excel应用的图标,选择excel2007. 3. 将excel2拖动到2所打开的新建excel中. 4. over.

  2. 网站访问量大 怎样优化mysql数据库

    MySQL优化的一些建议,单机MySQL的优化我分为三个部分,一是服务器物理硬件的优化,二是 MySQL安装时的编译优化,三是自身配置文件my.cnf的优化:如果单机的优化也解决不了你的数据库的压力的 ...

  3. js闭包的作用域以及闭包案列的介绍:

    转载▼ 标签: it   js闭包的作用域以及闭包案列的介绍:   首先我们根据前面的介绍来分析js闭包有什么作用,他会给我们编程带来什么好处? 闭包是为了更方便我们在处理js函数的时候会遇到以下的几 ...

  4. hadoop集群安装故障解决

    nodemanager进程解决:http://blog.csdn.net/baiyangfu_love/article/details/13504849 编译安装:http://blog.csdn.n ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. PHP错误处理函数set_error_handler()的用法

    定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数. 该函数用于创建运行时期间的用户自己的错误处理方法. 该函数会返回旧的错误处理程序,若失败,则返回 null. 语 ...

  7. java基础 集合类

    java集合类主要有以下集中: List结构的集合类: ArrayList类, LinkedList类, Vector类, Stack类 Map结构的集合类: HashMap类,Hashtable类 ...

  8. 2016年11月24日--面向对象、C#小复习

    面对对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象.对同类对象抽象出其共性,形成类.类中的大多数数据,只能用本类的方法进行处理.类通过一个简单的外部接口与外界发生关系,对象 ...

  9. zTree学习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. java线程与缓存

    如果在你的服务中用了一些第三方的服务,最好使用缓存配合线程的方式去访问第三方的服务,以免引发线程安全问题,因为第三方的服务你不知道人家对于多线程是如何处理的,所以我们要在自己的程序中做一些线程安全的处 ...