




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. 信息處理模塊要求:(1) 利用自然語言處理、數據挖掘技術對爬去的網站、論壇、博客、微博等進行文本挖掘,從各種網絡信息中準確提取出用戶關心事件的時間、地點、主體、行為和客體等要素;(2) 分析用戶對事件要素的態度,構成特定的用戶關注及態度模型。對大量不同類型網絡信息的挖掘將形成具有差異性的模型庫,同時也可以通過用戶問卷調查的方式,獲取更多具有差異性的關注模型作為補充。1. 自然語言處理工具包:fudanNLPfudanNLP主要是為中文自然語言處理而開發的工具包,也包含為實現這些任務的機器學習算法和數據集。本工具包及其包含數據集使用LGPL3.0許可證。開發語言為Java。主要功能有:1.
2、文本分類 新聞聚類;2. 中文分詞 詞性標注 實體名識別 關鍵詞抽取 依存句法分析 時間短語識別;3. 結構化學習 在線學習 層次分類 聚類 精確推理。InputStr1 = "甬溫線特別重大鐵路交通事故車輛經過近24小時的清理工作,26日深夜已經全部移出事故現場,之前埋下的D301次動車車頭被挖出運走"InputStr2 = "甬溫線|特別|重大|鐵路交通事故車輛經過近24小時的清理工作,26日深夜已經全部移出事故現場,之前埋下的D301次動車車頭被挖出運走"抽取top10:Output1 = 甬溫線=100, 運走=100, 事故=52, 工作=41
3、, 深夜=36, 清理=36, 全部=33, 小時=30, 移出=30, 車輛=26;import java.util.ArrayList; Import java.util.Map; import org.fnlp.app.keyword.AbstractExtractor; import org.fnlp.app.keyword.WordExtract; import .tag.CWSTagger; import edu.fudan.nlp.corpus.StopWords; public class GetKeywords public ArrayList<String> G
4、etKeyword(String News,int keywordsNumber) throws Exception ArrayList<String> keywords=new ArrayList<String>(); StopWords sw= new StopWords("models/stopwords"); CWSTagger seg = new CWSTagger("models/seg.m"); AbstractExtractor key = new WordExtract(seg,sw); Map<Strin
5、g,Integer> ans = key.extract(News, keywordsNumber); for (Map.Entry<String, Integer> entry : ans.entrySet() String keymap = entry.getKey().toString(); String value = entry.getValue().toString(); keywords.add(keymap); System.out.println("key" + keymap + "value" + value); r
6、eturn keywords; 輸出結果是這樣:2. 關鍵字提取后對文本進行分類 第一步,對文檔進行預處理過程。按照文本文檔數據集(一般分目錄放置文本文檔)路徑對所有訓練文檔掃描,分析出不同的單詞。第二步,建立詞頻矩陣。預處理之后,將文章變為一個詞集,單詞也稱為特征項或屬性。把文檔看成是一個詞向量(word vector ),它的維數是所有不同的單詞個數,詞集中可以有數萬個不同的單詞。第三步,構造文本分類器。詞頻統計矩陣是算法建模的基礎。在詞頻統計矩陣的基礎上根據特定的算法構造分類器。主要任務是根據不同分類算法,計算詞向量的權值。目前較為著名的文本分類算法包括支持向量機(S
7、upport Vector Machine,SVM), K 近鄰法(K- Nearest Neighbour,KNN), 樸素貝葉斯法(NaiveBayes,NB), 神經網絡法(Neural Network,NNet), 線性最小二乘法( Linear Least Squares Fit,LLSF) 等 在本次實驗中我組將打算用神經網絡法。其代碼如下。ackage com.mfsoft.ai.algorithm.imp; p
8、ublic class RbfNet extends Object int inNum; /輸入接點數int hideNum;/隱含接點數 int outNum; /輸出接點數 double c;/重心 double d;/距離(歪) int epochs; double x; /輸入向量 double x1;/隱含接點狀態值 double x2
9、;/輸出接點狀態值 double o1; double o2; double w;/隱含接點權值 double w1;/輸出接點權值 double rate_w; /權值學習率(輸入層-隱含層) double rate_w1;/權值學習率 (隱含層-輸出層) double rate_b1;/隱含層閥值學習率 double rate_b2;/輸出層閥值學習率 double b1;/隱含接點閥值
10、60;Double b2;/輸出接點閥值 double pp; double qq;double yd;double e; double in_rate;/輸入歸一化比例系數 public RbfNet(int inNum,int hideNum,int outNum,double p) in_rate=1.0;/輸入歸一化系數 /* double pmax=0.0; for
11、0;(int isamp=0;isamp<p.length;isamp+) for (int i=0;i<inNum;i+) if (Math.abs(pisamp)>pmax) pmax=Math.abs(pisamp); /end for isamp in_rate=pmax; for (int isamp=0;isamp<p.length;isamp+) for (int
12、i=0;i<inNum;i+) pisamp=pisamp/in_rate; /end for isamp3. 文本聚類文檔聚類可以作為多文檔自動文稿等自然語言處理應用的預處理步驟。其實現算法有Apriori算法等。 Apriori算法的基本思想是:首先找出所有的頻集,這些項集出現的頻繁性至少和預定義的最小支持度一樣。然后由頻集產生強關聯規則,這些規則必須滿足最小支持度和最小可信度。然后使用第1步找到的頻集產生期望的規則,產生只包含集合的項的所有規則,其中每一條規則的右部只有一項,這里采用的是中規則的定義。一旦這些規則被生成,那么只有那些大于用戶給
13、定的最小可信度的規則才被留下來。為了生成所有頻集,使用了遞歸的方法。其代碼如下:package apr;import java.io.BufferedWriter;import java.io.FileWriter;import java.util.*;public class Apriori private double minsup = 0.6;/ 最小支持度 private double minconf = 0.2;/ 最小置信度 / 注意使用IdentityHashMap,否則由于關聯規則產生存在鍵值相同的會出現覆蓋 private IdentityHashMap ruleMap =
14、new IdentityHashMap(); private String transSet = "abc", "abc", "acde", "bcdf", "abcd", "abcdf" ;/ 事務集合,可以根據需要從構造函數里傳入 private int itemCounts = 0;/ 候選1項目集大小,即字母的個數 private TreeSet frequencySet = new TreeSet40;/ 頻繁項集數組,0:代表1頻繁集. private TreeS
15、et maxFrequency = new TreeSet();/ 最大頻繁集 private TreeSet candidate = new TreeSet();/ 1候選集 private TreeSet candidateSet = new TreeSet40;/ 候選集數組 private int frequencyIndex; public Apriori() maxFrequency = new TreeSet(); itemCounts = counts();/ 初始化1候選集的大小 / 初始化其他兩個 for (int i = 0; i < itemCounts; i+)
16、 frequencySeti = new TreeSet(); candidateSeti = new TreeSet(); candidateSet0 = candidate; public Apriori(String transSet) this.transSet = transSet; maxFrequency = new TreeSet(); itemCounts = counts();/ 初始化1候選集的大小 / 初始化其他兩個 for (int i = 0; i < itemCounts; i+) frequencySeti = new TreeSet(); candida
17、teSeti = new TreeSet(); candidateSet0 = candidate; public int counts() String temp1 = null; char temp2 = 'a' / 遍歷所有事務集String 加入集合,set自動去重了 for (int i = 0; i < transSet.length; i+) temp1 = transSeti; for (int j = 0; j < temp1.length(); j+) temp2 = temp1.charAt(j); candidate.add(String.v
18、alueOf(temp2); return candidate.size(); public void item1_gen() String temp1 = "" double m = 0; Iterator temp = candidateSet0.iterator(); while (temp.hasNext() temp1 = (String) temp.next(); m = count_sup(temp1); / 符合條件的加入 1候選集 if (m >= minsup * transSet.length) frequencySet0.add(temp1);
19、 public double count_sup(String x) int temp = 0; for (int i = 0; i < transSet.length; i+) for (int j = 0; j < x.length(); j+) if (transSeti.indexOf(x.charAt(j) = -1) break; else if (j = (x.length() - 1) temp+; return temp; public void canditate_gen(int k) String y = "", z = "&qu
20、ot;, m = "" char c1 = 'a', c2 = 'a' Iterator temp1 = frequencySetk - 2.iterator(); Iterator temp2 = frequencySet0.iterator(); TreeSet h = new TreeSet(); while (temp1.hasNext() y = (String) temp1.next(); c1 = y.charAt(y.length() - 1); while (temp2.hasNext() z = (String) temp
21、2.next(); c2 = z.charAt(0); if (c1 >= c2) continue; else m = y + z; h.add(m); temp2 = frequencySet0.iterator(); candidateSetk - 1 = h; / k候選集=>k頻繁集 public void frequent_gen(int k) String s1 = "" Iterator ix = candidateSetk - 1.iterator(); while (ix.hasNext() s1 = (String) ix.next();
22、if (count_sup(s1) >= (minsup * transSet.length) frequencySetk - 1.add(s1); public boolean is_frequent_empty(int k) if (frequencySetk - 1.isEmpty() return true; else return false; public boolean included(String s1, String s2) for (int i = 0; i < s1.length(); i+) if (s2.indexOf(s1.charAt(i) = -1
23、) return false; else if (i = s1.length() - 1) return true; return true; public void maxfrequent_gen() int i, j; Iterator iterator, iterator1, iterator2; String temp = "", temp1 = "", temp2 = "" for (i = 1; i < frequencyIndex; i+) maxFrequency.addAll(frequencySeti); /
24、 for (i = 0; i < frequencyIndex; i+) / iterator1 = frequencySeti.iterator(); / while (iterator1.hasNext() / temp1 = (String) iterator1.next(); / for (j = i + 1; j < frequencyIndex; j+) / iterator2 = frequencySetj.iterator(); / while (iterator2.hasNext() / temp2 = (String) iterator2.next(); / i
25、f (included(temp1, temp2) / maxFrequency.remove(temp1); / / / / public void print_maxfrequent() Iterator iterator = maxFrequency.iterator(); System.out.print("產生規則頻繁項集:"); while (iterator.hasNext() System.out.print(toDigit(String) iterator.next() + "t"); System.out.println(); pub
26、lic void rulePrint() String x, y; double temp = 0; Set hs = ruleMap.keySet(); Iterator iterator = hs.iterator(); StringBuffer sb = new StringBuffer(); System.out.println("關聯規則:"); while (iterator.hasNext() x = (String) iterator.next(); y = (String) ruleMap.get(x); temp = (count_sup(x + y)
27、/ count_sup(x); /x = toDigit(x); /y = toDigit(y); System.out.println(x + (x.length() < 5 ? "t" : "") + "->" + y + "t" + temp); sb.append(" " + x + (x.length() < 5 ? "t" : "") + "->" + y + "t" + temp
28、 + "tn"); BufferedWriter bw = null; try FileWriter fw = new FileWriter("Asr.txt"); bw = new BufferedWriter(fw); bw.write("最小支持度 minsup = " + minsup); bw.newLine(); bw.write("最小置信度 minconf = " + minconf); bw.newLine(); bw.write("產生關聯規則如下: "); bw.newLi
29、ne(); bw.write(sb.toString(); / bw.newLine(); if (bw != null) bw.close(); catch (Exception e) e.printStackTrace(); public void subGen(String s) String x = "", y = "" for (int i = 1; i < (1 << s.length() - 1; i+) for (int j = 0; j < s.length(); j+) if (1 << j) &a
30、mp; i) != 0) x += s.charAt(j); for (int j = 0; j < s.length(); j+) if (1 << j) & (i) != 0) y += s.charAt(j); if (count_sup(x + y) / count_sup(x) >= minconf) ruleMap.put(x, y); x = "" y = "" public void ruleGen() String s; Iterator iterator = maxFrequency.iterator(
31、); while (iterator.hasNext() s = (String) iterator.next(); subGen(s); / for test public void print1() Iterator temp = candidateSet0.iterator(); while (temp.hasNext() System.out.println(temp.next(); / for test public void print2() Iterator temp = frequencySet0.iterator(); while (temp.hasNext() System
32、.out.println(String) temp.next(); / for test public void print3() canditate_gen(1); frequent_gen(2); Iterator temp = candidateSet1.iterator(); Iterator temp1 = frequencySet1.iterator(); while (temp.hasNext() System.out.println("候選" + (String) temp.next(); while (temp1.hasNext() System.out.
33、println("頻繁" + (String) temp1.next(); public void print_canditate() for (int i = 0; i < frequencySet0.size(); i+) Iterator ix = candidateSeti.iterator(); Iterator iy = frequencySeti.iterator(); System.out.print("候選集" + (i + 1) + ":"); while (ix.hasNext() System.out.print(String) ix.next() + "t"); /System.out.print(toDigit(String) ix.next() + "t"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店商場知識培訓課件
- 2025年兒童節活動方案策劃
- 2025年畢業工作方案
- 我的設計才華-個人競聘簡歷
- 護理學導論與跨文化理論
- 202x工作總結暨新年計劃模板2
- 物業主任述職報告
- 法律法規與標準知識
- 個性化課程總結匯報
- 浙江省普通高校2025屆高三4月調研測試物理試題試卷含解析
- 火警火災處理標準流程
- TCCIAT 0043-2022 建筑工程滲漏治理技術規程
- 初中美術七年級下冊《第4課扮靚生活的花卉紋樣》課件
- 土建、裝飾、維修改造等零星工程施工組織方案設計技術標范文
- 宮頸癌病歷書寫模板
- summary-writing-概要寫作-優質課件
- 芭蕾基訓課程課時教案
- T∕CIC 049-2021 水泥窯用固體替代燃料
- 部編版高中語文必修下冊第八單元《單元導讀》教學設計
- 高桿照明燈檢修維護規程
- 科室急救備用藥品領用補充工作流程
評論
0/150
提交評論