0

私はJavaで小さな要約ユーティリティを作成することに取り組んでいます。スタンフォードの対数線形品詞タガーを使用して、文の品詞を検索しています。次に、特定のタグをスコアリングし、各文にスコアを付けます。そして、最後に要約すると、スコアが一定の制限を超えている行のみを追加します。それが計画です。

これは、形容詞をスコアリングし、たとえば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が、余分な行もたくさんあります。親切に助けてください!

4

1 に答える 1

1

ファイルに書きたい新しい行ごとにStringBuilderをリセットする必要があります。現在、すべての行について、現在追加されている行を書き込み、StringBuilderで以前に追加されたすべての行は、。のときにファイルに書き込まれますscore > 1

于 2012-03-14T11:48:02.350 に答える