加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 自然语言处理 – 文本分类的特征

发布时间:2020-12-14 05:38:29 所属栏目:Java 来源:网络整理
导读:所以我试图使用Weka SVM对文本进行分类.到目前为止,我用于训练SVM的特征向量由培训文本中出现的unigrams和bigrams的TF-IDF统计数据组成.但是,我从测试训练有素的SVM模型得到的结果根本不准确,所以有人能给我反馈我的程序吗?我按照以下步骤对文本进行分类:
所以我试图使用Weka SVM对文本进行分类.到目前为止,我用于训练SVM的特征向量由培训文本中出现的unigrams和bigrams的TF-IDF统计数据组成.但是,我从测试训练有素的SVM模型得到的结果根本不准确,所以有人能给我反馈我的程序吗?我按照以下步骤对文本进行分类:

>构建一个由训练文本中提取的unigrams和bigrams组成的字典
>计算每个训练文本中每个unigram / bigram出现的次数,以及unigram / bigram出现的训练文本数量
>使用步骤2中的数据计算每个unigram / bigram的TF-IDF
>对于每个文档,构造一个特征向量,该向量是字典的长度,并在向量的每个元素中存储相应的TF-IDF统计量(例如,文档1的特征向量中的第一个元素将对应于字典中第一个单词的TF-IDF相对于文档一)
>将类标签附加到每个特征向量,以区分哪个文本属于哪个作者
>使用这些特征向量训练SVM
>测试文本的特征向量以与训练文本相同的方式构建,并由SVM分类

还有,我需要训练具有更多功能的SVM吗?如果是这样,在这种情况下哪些功能最有效?非常感谢任何帮助,谢谢.

解决方法

自然语言文档通常包含许多只出现一次的单词,也称为 Hapax Legomenon.例如,Moby-Dick中44%的不同单词只出现一次,17%出现两次.

因此,包括来自语料库的所有单词通常会导致过多的特征.为了减小此功能空间的大小,NLP系统通常使用以下一项或多项:

>删除停用词 – 对于作者分类,这些通常是简短的常用词,如is,the,at,which等.
>词干 – 流行的词干分析器(如Porter词干分析器)使用一组规则来规范化单词的变形.例如,步行,步行和散步都映射到茎行走.
>相关/重要性阈值 – 计算Pearson相关系数或每个要素相对于类别标签的p值.然后设置阈值,并删除所有得分低于该阈值的值的功能.
>覆盖阈值 – 类似于上述阈值,移除至少在t个文档中没有出现的所有特征,其中t相对于整个语料库大小非常小(<0.05%).
>根据词性过滤 – 例如,仅考虑动词或删除名词.
>根据系统类型进行过滤 – 例如,临床文本的NLP系统可能只考虑在医学词典中找到的单词.

对于词干,删除停用词,索引语料库,计算tf_idf或文档相似度,我建议使用Lucene.Google“Lucene in 5分钟”,以获得一些关于使用lucene的快速简便的教程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读