我正致力于在Java中创建一个小型摘要实用程序。我使用Stanford Log-linear Part-Of-Speech Tagger来查找句子中的词性。然后,我对特定标签进行评分,并为每个句子分数。然后,最后当我总结时,我只添加那些得分超过一定限度的行。这就是计划。
这是我为得分形容词制作的示例代码,然后根据大于1的分数生成摘要。
MaxentTagger tagger = new MaxentTagger("taggers/bidirectional-distsim-wsj-0-18.tagger");
BufferedReader reader = new BufferedReader( new FileReader ("C:\\Summarizer\\src\\summarizer\\testing\\testingtext.txt"));
String line = null;
int score = 0;
StringBuilder stringBuilder = new StringBuilder();
File tempFile = new File("C:\\Summarizer\\src\\summarizer\\testing\\tempFile.txt");
Writer writerForTempFile = new BufferedWriter(new FileWriter(tempFile));
String ls = System.getProperty("line.separator");
while( ( line = reader.readLine() ) != null )
{
stringBuilder.append( line );
stringBuilder.append( ls );
String tagged = tagger.tagString(line);
Pattern tagFinder = Pattern.compile("/JJ");
Matcher tagMatcher = tagFinder.matcher(tagged);
while(tagMatcher.find())
{
score++;
}
if(score > 1)
writerForTempFile.write(stringBuilder.toString());
score = 0;
}
reader.close();
writerForTempFile.close();
但显然,我在某个地方出错了。它确实将所需的行写入tempFile
,但也有许多额外的行。请帮助!
答案 0 :(得分:1)
您需要为要写入文件的每个新行重置StringBuilder。目前,对于每行,您编写当前附加的行,并且在score > 1
时,StringBuilder中的所有先前附加行都将写入您的文件。