2012-03-14 2 views
0

私はJavaで小さな集計ユーティリティを作っています。私はStanford Log-linear Part-Of-Speech Taggerを使用して、文章内の品詞を見つけます。次に、特定のタグを採点し、各文にスコアを与えます。そして最後にまとめると、一定の限界を超えるスコアを持つ行だけを追加します。それが計画です。Javaでミニサマライザを実装する

は、ここで私はちょうど形容詞を得点した後、より大きなスコアに基づいて要約を生成するために働いてきたサンプルコードです、

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(); 

1を言うしかし、どうやら、私が間違ってどこかに行きますよ。それはtempFileに必要な行を書き出しますが、余分な行もたくさんあります。親切に助けてください!

答えて

1

ファイルに書き込む新しい行ごとにStringBuilderをリセットする必要があります。現時点では、すべての行について、現在付加されている行を記述し、score > 1の場合は、StringBuilder内のすべての追加行がファイルに書き込まれます。