文章中提取关键字
来源:互联网 发布:移动网络迅雷下载不了 编辑:程序博客网 时间:2024/05/18 00:31
/**
* 相关的jar包
* lucene-core-3.6.2.jar,lucene-memory-3.6.2.jar,
* lucene-highlighter-3.6.2.jar,lucene-analyzers-3.6.2.jar
* IKAnalyzer2012.jar
*
* 截取一片文章中频繁出现的关键字,并给予分组排序(倒叙),以数组格式返回n个关键字
*
* 并该类内部含有一个List2Map方法,可将重复<String>集合转换为Map<String, Integer>格式
*
并算出该<String>重复次数,放入相应的value中
*/
实现代码:
package com.lifeix.api.util;import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.lucene.analysis.TokenStream;import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;import org.wltea.analyzer.lucene.IKAnalyzer;/** * 获取文章关键字 * @author anwj * */public class WordUtil {/** 测试文章 */static String keyWord = "笑星潘长江当上“男媒婆”了,但这回可不是演小品——由他自编自导自演的都市喜剧《男媒婆》将于1月13日在北" +"京卫视首播。剧中,潘长江变身成为能说会道、古道热肠的“新时代男媒婆”丁二春,与“台湾第一酒窝美女2”张庭上演了一出“屌丝逆袭”" +"的浪漫追爱记。李明启、李文启、冯远征、任程伟、马丽、徐等明星也齐齐上阵制造“笑料”《男媒婆》围绕着丁二春和他所开" +"办的“全成热恋”婚介所展开。人到中年的丁二春眼看来势汹涌的“婚恋大潮”商机不断,想凭借一张巧嘴开创事业和人生" +"“第二春”。婚介所开张大吉,顾客盈门,提出的要求却也千奇百怪,拜金女、宅男、小老板粉墨登场,展开了一系列令人捧腹" +"大笑又不失温情的精彩故事。剧中的一大看点是美女搭配“丑男”的搭配,张庭与潘长江成了一对欢喜冤家。张庭表示,剧中两人“" +"身高有差距、年龄有距离,相貌不对等”。而潘长江谈到这种主角设定时认为:“张庭以往的角色都特别独立、可爱,而‘大女人’和‘" +"小男人’正是我俩这对情侣的设定,所以张庭是非常合适的人选。”此外,该剧也是潘长江继《能人冯天贵》、《清凌凌的水蓝莹莹的天》" +"第一、第二部之后第四次自导自演的喜剧作品。潘长江表示,全剧通过“媒婆”这个特殊职业的视角,展示着当代社会种种婚恋价值观,涵盖了" +"黄昏恋、拜金女、凤凰男等诸多引发热议的时代话题。(记者 尹春芳)免责声明:本文仅代表作者个人观点,与环球网无关。其原创性以及文中" +"陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考," +"并请自行核实相关内容。";/** 获取关键字个数 */private final static Integer NUM=5;/** 截取关键字在几个单词以上的数量 */private final static Integer QUANTITY=1;/** * 传入String类型的文章,智能提取单词放入list中 * @param article * @param a * @return * @throws IOException */private static List<String> extract(String article,Integer a) throws IOException {List<String> list =new ArrayList<String>(); //定义一个list来接收将要截取出来单词IKAnalyzer analyzer = new IKAnalyzer(); //初始化IKAnalyzeranalyzer.setUseSmart(true); //将IKAnalyzer设置成智能截取TokenStream tokenStream= //调用tokenStream方法(读取文章的字符流)analyzer.tokenStream("", new StringReader(article));while (tokenStream.incrementToken()) { //循环获得截取出来的单词CharTermAttribute charTermAttribute = //转换为char类型tokenStream.getAttribute(CharTermAttribute.class);String keWord= charTermAttribute.toString(); //转换为String类型if (keWord.length()>a) { //判断截取关键字在几个单词以上的数量(默认为2个单词以上)list.add(keWord); //将最终获得的单词放入list集合中}}return list;}/** * 将list中的集合转换成Map中的key,value为数量默认为1 * @param list * @return */private static Map<String, Integer> list2Map(List<String> list){Map<String, Integer> map=new HashMap<String, Integer>();for(String key:list){ //循环获得的List集合if (list.contains(key)) { //判断这个集合中是否存在该字符串map.put(key, map.get(key) == null ? 1 : map.get(key)+1);} //将集中获得的字符串放在map的key键上} //并计算其value是否有值,如有则+1操作return map;}/** * 提取关键字方法 * @param article * @param a * @param n * @return * @throws IOException */public static String[] getKeyWords(String article,Integer a,Integer n) throws IOException {List<String> keyWordsList= extract(article,a); //调用提取单词方法Map<String, Integer> map=list2Map(keyWordsList); //list转map并计次数//使用Collections的比较方法进行对map中value的排序ArrayList<Entry<String, Integer>> list = new ArrayList<Entry<String,Integer>>(map.entrySet());Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {return (o2.getValue() - o1.getValue());}});if (list.size()<n) n=list.size(); //排序后的长度,以免获得到null的字符String[] keyWords=new String[n]; //设置将要输出的关键字数组空间for(int i=0; i< list.size(); i++) { //循环排序后的数组if (i<n) { //判断个数keyWords[i]=list.get(i).getKey(); //设置关键字进入数组}}return keyWords;}/** * * @param article * @return * @throws IOException */public static String[] getKeyWords(String article) throws IOException{return getKeyWords(article,QUANTITY,NUM);}public static void main(String[] args) {try {String [] keywords = getKeyWords(keyWord);for(int i=0; i<keywords.length; i++){System.out.println(keywords[i]);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
0 0
- 文章中提取关键字
- 提取文章关键字
- 按文章词频提取关键字
- C# 中文分词算法(实现从文章中提取关键字算法)
- PHP自动提取文章关键字的实现方法
- 使用php进行文章关键字(标签)的提取
- php:从网页中提取关键字
- 从百万关键字中提取前K个关键字
- js 搜索关键字,文章中关键字高亮显示
- Perl从文本文件中按关键字提取数据
- C语言通过关键字从文本中提取有效信息
- Jcseg-1.9.7 发布 - Restful API+文章自动摘要/关键字/短语/句子提取
- 提取文章中的图片保存到一个数组--完善中
- 正则表达式提取Url中QueryString键值(搜索关键字的提取)
- PHP自动提取关键字
- Python RAKE 关键字提取
- python 关键字提取
- 文本的关键字提取
- linux 下mount ISO文件
- [易飞]设置导入导出规则-小BUG
- cocos2dx Sprite setBlendFunc 使用颜色混合:加算,减算
- Object-C的语法与Cocoa框架_V1.0(心得体会)
- nginx+keepalived负载均衡可用框架(问题汇总)
- 文章中提取关键字
- C++ 中通过GetAdaptersInfo获取网卡配置和Ip地址信息
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Linux进程状态解析之R、S、D、T、Z、X
- 找到组织了
- 托管代码中的指针
- ArcGIS for IOS 动态图层 分层显示(个人)
- CentOS 5.* 6.*下安装RHEL EPEL Repo软件源
- 用VC生成 IDispatch 包装类