国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java編程實現提取文章中關鍵字的方法

Java編程實現提取文章中關鍵字的方法

2020-01-15 14:27awj3584 JAVA教程

這篇文章主要介紹了Java編程實現提取文章中關鍵字的方法,較為詳細的分析了Java提取文章關鍵字的原理與具體實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Java編程實現提取文章中關鍵字的方法。分享給大家供大家參考,具體如下:

實現代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/**
 * 相關的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(); //初始化IKAnalyzer
  analyzer.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 block
   e.printStackTrace();
  }
 }
}

希望本文所述對大家Java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一区二区在线 | 国产欧美日韩在线 | 国产色爱综合网 | 国产在线小视频 | 成人性毛片 | 日韩二区三区 | 亚洲精品久久久久久久久久久 | 国产精品久久久久久久久费观看 | 中文字幕亚洲一区二区va在线 | 亚洲精品乱码 | 亚洲精品成a人在线 | 日本免费中文字幕 | 精品成人一区 | 国产成人久久一区二区三区 | 久久久一 | 爱爱综合网 | 国产成人高清 | 国产色爱综合网 | 亚洲不卡视频在线 | 亚洲一区 日韩精品 中文字幕 | 日韩不卡一区 | 一区二区三区四区免费 | 色在线视频 | 91高清在线| 精品乱子伦一区二区三区 | 亚洲精品久久久久久久久久久 | 成人福利网站 | 小情侣高清国产在线播放 | 国产黄视频在线观看 | 免费成人在线视频网站 | 午夜影视 | 亚洲一区二区三区在线 | 日本免费一区二区三区四区 | 在线视频自拍 | 国产综合亚洲精品一区二 | 日韩一区二区三区视频 | 91精品国产日韩91久久久久久 | 男人天堂网av | 日本中文字幕在线观看 | yiren22成人网 | 在线国产视频观看 |