ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:20.30KB ,
资源ID:7403513      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7403513.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(HITS算法的二部图实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

HITS算法的二部图实现.docx

1、HITS算法的二部图实现package extrcting;import java.io.*;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;public class HITS /public ArrayList facet ; public HashMapString, ArrayList graphFacet;/没有必要采用hashset,因为反正都得遍历 public HashMapString, ArrayList graphEm

2、o; public HashMap authScore; /每个节点的中心度 public HashMap centerScore; /每个节点的权威度 public HashMap edgeGraph; /边得信息,暂时没用上 public HashMap wordLex; / 词表,记录词语出现的次数 public HashSet Lexicon; public HashMap facetScoreA; public HashMap facetScoreC; public HashMap emoScoreA; public HashMap emoScoreC; public final S

3、tring data=20110317; public Integer nounCount=0; public Integer emoCount=0; public Integer nounCountEmo=0; public Integer emoCountEmo=0; public int rowNumber;/所有行 public int rowNumberEmo=0;/所有含有情感词的行 public HITS() throws IOException /构造函数 BufferedReader reader = new BufferedReader(new InputStreamRea

4、der(new FileInputStream(Lexicon.txt); String words=; rowNumber=0; Lexicon = new HashSet(5000); authScore= new HashMap(10000); /每个节点的中心度 centerScore = new HashMap (10000); graphFacet = new HashMapString, ArrayList(); graphEmo = new HashMapString, ArrayList(); wordLex = new HashMap(); facetScoreA = ne

5、w HashMap(5000); facetScoreC = new HashMap(5000); emoScoreA = new HashMap(5000); emoScoreC = new HashMap(5000); while(words=reader.readLine()!=null) Lexicon.add(words+/n); extract();/ doHITS();/ finalScore(); / double averageNoun = nounCount/(double)rowNumber;/ double averageEmo = emoCount/(double)r

6、owNumber;/ double averageNounEmo = nounCountEmo/(double)rowNumberEmo;/ double averageEmoEmo = emoCountEmo/(double)rowNumberEmo;/ System.out.println(名词个数+nounCount);/ System.out.println(情感词个数+emoCount);/ System.out.println(平均名词个数+averageNoun);/ System.out.println(平均情感词个数+averageEmo);/ System.out.prin

7、tln(所有行数+rowNumber);/ System.out.println(有情感的行数+rowNumberEmo);/ System.out.println(情感句平均名词个数+averageNounEmo);/ System.out.println(情感句平均情感词个数+averageEmoEmo); public void doHITS() throws IOException int iterOver=0; /代表迭代结束 final int iterTime = 1000; /迭代次数 int count =0; /计数,迭代次数 / File log = new File(E

8、:HITSlog);/日志主要是查看盐的相关信息的/ if(log.exists()/ / log.delete();/ / log.createNewFile();/ FileWriter write = new FileWriter(log);/ BufferedWriter bw = new BufferedWriter(write); int codeNumber = authScore.size(); /while(iterOver!=1) while(iterOver!=1&countiterTime)/迭代 double authMax=.0; double centerMax=

9、.0;/新的归一化算法 double authSum =.0; double centerSum =.0;/用于归一化 HashMap authScoreLast= new HashMap(authScore); /做实验表明,必须new,不new存的是地址 HashMap centerScoreLast = new HashMap(centerScore); System.out.println(第+count+迭代+节点数+codeNumber+个); Iterator iteratorFacet =graphFacet.keySet().iterator();/对属性部分遍历 while

10、(iteratorFacet.hasNext() String sFacet =; sFacet = (String) iteratorFacet.next(); ArrayList iterEmoArray = new ArrayList(graphFacet.get(sFacet); Double authScoreArray=.0; Double centerScoreArray =.0; for(int i=0;iauthMax)/新归一化 authMax = authScoreArray; if(centerScoreArraycenterMax) centerMax = cente

11、rScoreArray; Iterator iteratorEmo =graphEmo.keySet().iterator();/对情感部分遍历 while(iteratorEmo.hasNext() String sEmo =; sEmo = (String) iteratorEmo.next(); ArrayList iterFacetArray = new ArrayList(graphEmo.get(sEmo); Double authScoreArray=.0; Double centerScoreArray =.0; for(int i=0;iauthMax)/新归一化 authM

12、ax = authScoreArray; if(centerScoreArraycenterMax) centerMax = centerScoreArray; /* * 归一化机制 */ Iterator iteratorAuthNorm = authScore.keySet().iterator(); while(iteratorAuthNorm.hasNext() String itFacet= (String)iteratorAuthNorm.next();/ Double authScoreNorm = authScore.get(itFacet)/authSum; Double a

13、uthScoreNorm = authScore.get(itFacet)/authMax; /新归一化 authScore.put(itFacet, authScoreNorm); Iterator iteratorCenterNorm = centerScore.keySet().iterator(); while(iteratorCenterNorm.hasNext() String itEmo = (String)iteratorCenterNorm.next();/ Double centerScoreNorm = centerScore.get(itEmo)/centerSum;

14、Double centerScoreNorm = centerScore.get(itEmo)/centerMax;/新归一化 centerScore.put(itEmo, centerScoreNorm); /* * 归一化机制 */ Iterator iteratorAuth = authScore.keySet().iterator();/遍历中心度 int countJudge=0; while(iteratorAuth.hasNext() String word=; word = (String)iteratorAuth.next(); if(authScore.get(word)-

15、authScoreLast.get(word)-0.00001) &(centerScore.get(word)-centerScoreLast.get(word)-0.00001) countJudge+; /System.out.println(authScore); /System.out.println(authScoreLast); /System.out.println(查看迭代终止的另一个条件countjudge+countJudge); if(countJudge=authScore.size() iterOver=1; count+; /* * 迭代结束后的赋值阶段,最终得分

16、阶段 */ System.out.println(graphFacet); System.out.println(graphEmo); public void finalScore() Iterator iteFacet = graphFacet.keySet().iterator();/把得分乘以出现的次数 while(iteFacet.hasNext() String facet=; facet = (String)iteFacet.next(); double scoreFA=.0; double scoreFC=.0; double timeF = Math.log10(wordLex

17、.get(facet); scoreFA = authScore.get(facet)*timeF; facetScoreA.put(facet, scoreFA); scoreFC = centerScore.get(facet)*timeF; facetScoreC.put(facet, scoreFC); Iterator iteEmo = graphEmo.keySet().iterator(); while(iteEmo.hasNext() String emo =; emo =(String)iteEmo.next(); double scoreEA=.0; double scor

18、eEC=.0; double timeE= Math.log10(wordLex.get(emo); scoreEA = authScore.get(emo)*timeE; emoScoreA.put(emo, scoreEA); scoreEC = authScore.get(emo)*timeE; emoScoreC.put(emo, scoreEC); public void extract() throws IOException System.out.println(开始抽取); String inputDataPath = E:日本地震_2corpus_sum_splitsum_s

19、plit+data;/ String inputDataPath = E:日本地震_2corpus_sum_splitsum_splitSum; File inputFile = new File(inputDataPath); FileReader read = new FileReader(inputFile); BufferedReader re = new BufferedReader(read); String row =; while(row= re.readLine()!=null) int emoSig=0; int emoEmoCountRow=0; int emoNounC

20、ountRow=0; System.out.println(处理第+rowNumber+行); /System.out.println(row); ArrayList sentenceInfo = new ArrayList50; /一句话的信息,每一个Arraylist为子句的信息,就是用,分格出来的字句 for(int i=0;i50;i+) sentenceInfoi= new ArrayList(); int count=0; int continueNoun=0;/记录名词后面是否有其他词,如果有的话,就不考虑“的”的问题了。 String words = new String100; words = row.split( ); for(int i=0; i11183)/ / System.out.println(wordsi);/ System.out.println(row);/ System.out.println(count);/ Sy

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1