/*
*每个点的中心度是各个点的权威度之和
*每个点的权威度是各个点的中心度之和
*/
{
authScoreArray=authScoreArray+centerScoreLast.get(iterFacetArray.get(i));
authSum=authSum+centerScoreLast.get(iterFacetArray.get(i));
centerScoreArray=centerScoreArray+authScoreLast.get(iterFacetArray.get(i));
authScoreLast.get(iterFacetArray.get(i));
}
authScore.put(sEmo,authScoreArray);
centerScore.put(sEmo,centerScoreArray);
if(authScoreArray>authMax)//新归一化
{
authMax=authScoreArray;
}
if(centerScoreArray>centerMax)
{
centerMax=centerScoreArray;
}
}
/*
*归一化机制
*/
IteratoriteratorAuthNorm=authScore.keySet().iterator();
while(iteratorAuthNorm.hasNext())
{
StringitFacet=(String)iteratorAuthNorm.next();
//DoubleauthScoreNorm=authScore.get(itFacet)/authSum;
DoubleauthScoreNorm=authScore.get(itFacet)/authMax;//新归一化
authScore.put(itFacet,authScoreNorm);
}
IteratoriteratorCenterNorm=centerScore.keySet().iterator();
while(iteratorCenterNorm.hasNext())
{
StringitEmo=(String)iteratorCenterNorm.next();
//DoublecenterScoreNorm=centerScore.get(itEmo)/centerSum;
DoublecenterScoreNorm=centerScore.get(itEmo)/centerMax;//新归一化
centerScore.put(itEmo,centerScoreNorm);
}
/*
*归一化机制
*/
IteratoriteratorAuth=authScore.keySet().iterator();//遍历中心度
intcountJudge=0;
while(iteratorAuth.hasNext())
{
Stringword="";
word=(String)iteratorAuth.next();
if(((authScore.get(word)-authScoreLast.get(word)<0.00001)&&
(authScore.get(word)-authScoreLast.get(word)>-0.00001))
&&((centerScore.get(word)-centerScoreLast.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++;
}
/*
*迭代结束后的赋值阶段,最终得分阶段
*/
System.out.println(graphFacet);
System.out.println(graphEmo);
}
publicvoidfinalScore()
{
IteratoriteFacet=graphFacet.keySet().iterator();//把得分乘以出现的次数
while(iteFacet.hasNext())
{
Stringfacet="";
facet=(String)iteFacet.next();
doublescoreFA=.0;
doublescoreFC=.0;
doubletimeF=Math.log10(wordLex.get(facet));
scoreFA=authScore.get(facet)*timeF;
facetScoreA.put(facet,scoreFA);
scoreFC=centerScore.get(facet)*timeF;
facetScoreC.put(facet,scoreFC);
}
IteratoriteEmo=graphEmo.keySet().iterator();
while(iteEmo.hasNext())
{
Stringemo="";
emo=(String)iteEmo.next();
doublescoreEA=.0;
doublescoreEC=.0;
doubletimeE=Math.log10(wordLex.get(emo));
scoreEA=authScore.get(emo)*timeE;
emoScoreA.put(emo,scoreEA);
scoreEC=authScore.get(emo)*timeE;
emoScoreC.put(emo,scoreEC);
}
}
publicvoidextract()throwsIOException
{
System.out.println("开始抽取");
StringinputDataPath="E:
\\日本地震_2\\corpus_sum_split\\sum_split"+data;
//StringinputDataPath="E:
\\日本地震_2\\corpus_sum_split\\sum_splitSum";
FileinputFile=newFile(inputDataPath);
FileReaderread=newFileReader(inputFile);
BufferedReaderre=newBufferedReader(read);
Stringrow="";
while((row=re.readLine())!
=null)
{
intemoSig=0;
intemoEmoCountRow=0;
intemoNounCountRow=0;
System.out.println("处理第"+rowNumber+"行");
//System.out.println(row);
ArrayList[]sentenceInfo=newArrayList[50];
//一句话的信息,每一个Arraylist为子句的信息,就是用,分格出来的字句
for(inti=0;i<50;i++)
{
sentenceInfo[i]=newArrayList();
}
intcount=0;
intcontinueNoun=0;//记录名词后面是否有其他词,如果有的话,就不考虑“的”的问题了。
String[]words=newString[100];
words=row.split("");
for(inti=0;i/*
*for循环的作用是遍历每一个词,加入到句子信息中
*/
{
if(words[i].indexOf("/nl")!
=-1||words[i].indexOf("/nr")!
=-1
||words[i].indexOf("/nrf")!
=-1||words[i].indexOf("/nrj")!
=-1
||words[i].indexOf("/nr1")!
=-1||words[i].indexOf("/nr2")!
=-1
||words[i].indexOf("/nsf")!
=-1||words[i].indexOf("/ns")!
=-1
||words[i].indexOf("/nt")!
=-1||words[i].indexOf("/nz")!
=-1
||words[i].indexOf("/n")!
=-1)
/*
*ng不要,是两次神马的
*/
{
if(words[i]!
=null)
//System.out.println(words[i]);
{
if(words[i].substring(0,words[i].indexOf("/")).matches("[\u4e00-\u9fa5]+")
||words[i].substring(0,words[i].indexOf("/")).matches("[a-zA-Z]+")
||words[i].substring(0,words[i].indexOf("/")).matches("[0-9]+"))
{
//if(rowNumber>11183)
//{
//System.out.println(words[i]);
//System.out.println(row);
//System.out.println(count);
//Sy