博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中文自动摘要的基本实现方法
阅读量:7098 次
发布时间:2019-06-28

本文共 1728 字,大约阅读时间需要 5 分钟。

hot3.png

参考Classifier4J的实现方法,中文自动摘要的基本实现方法如下5个步骤:

 1.通过中文分词,统计词频和词性等信息,抽取出关键词。

   2.把文章划分成一个个的句子。

   3.通过各句中关键词出现的情况定义出句子的重要度。

   4.确定前K个最重要的句子为文摘句。

   5.把文摘句按照在原文中出现的顺序输出成摘要。

其中,统计词频我们可以去掉一些停用词增加摘要的准确性。对于各行各业来说,都会有个子的一些行业关键字,可以增加其权重,不过涉及到文本分类的问题,这里就不一一赘述了。

下面是简单的实现:

ArrayList
 pItem = Tagger.getFormatSegResult(rouseStr); WordFreq[] charArray = new WordFreq[10]; WordCounter wordCounter = new WordCounter(); for (int i = 0; i < pItem.size(); ++i) { CnToken t = pItem.get(i); if (t.type().startsWith("n")) { wordCounter.ProNChar(t.termText()); } else if (t.type().startsWith("v")) { wordCounter.ProVChar(t.termText()); } } //取得出现的频率最高的五个名词 WordFreq[] charNArray = wordCounter.getWords(wordCounter.CharNCount); for (int mn = 0; mn < 5; mn++) { charArray[mn] = charNArray[mn]; } //取得出现的频率最高的五个动词 WordFreq[] charVArray = wordCounter.getWords(wordCounter.CharVCount); for (int mn = 5; mn < 10; mn++) { charArray[mn] = charVArray[mn - 5]; } //抽取句子 SentenceExtractor senCou = new SentenceExtractor(); ArrayList
 sentenceArray = senCou.getSentences(rouseStr); int q = 0; int sumCount = 1;    //计算句子权重 while ( q
= 1) { sumCount = sumCount * charArray[j].freq; } else { sumCount = sumCount * 1; } } sentenceArray.get(q).score = sumCount; sumCount = 1; q++; } ArrayList
 copySenArr = new ArrayList
(); for(SentenceScore sc:sentenceArray) { copySenArr.add(sc); } int minSize = Math.min(sentenceArray.size(), 3); (new Select
()).selectRandom(copySenArr, copySenArr.size(), minSize,0); //System.out.println(""); for(int i=0;i

转载于:https://my.oschina.net/ouyanghuangzheng/blog/184549

你可能感兴趣的文章
C# Process
查看>>
字符编码
查看>>
php下intval()和(int)
查看>>
WordPress超级基本教程(转)
查看>>
Python基础 3----文件和网络
查看>>
模块的耦合和内聚
查看>>
对话框
查看>>
迁移SQL SERVER 数据库实例
查看>>
HttpClient工具类v1.7
查看>>
Sqlite中使用rowid来表示行号,用于分页。
查看>>
HDU 4916 树形dp
查看>>
远程数据库迁移数据
查看>>
ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目
查看>>
一些有用的java 框架
查看>>
访问不了firefox附加组件页面怎么办
查看>>
Docker image 镜像介绍
查看>>
Java线程池
查看>>
ArrayList,LinkedList,Vector,Stack之间的区别
查看>>
Freemarker常用技巧(二)
查看>>
2.C#中通过委托Func消除重复代码
查看>>