Реализация мини-сумматора на Java - PullRequest
0 голосов
/ 14 марта 2012

Я работаю над созданием небольшой утилиты суммирования на Java.Я использую Stanford Log-linear Line-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, но есть также много дополнительных строк.Пожалуйста, помогите!

1 Ответ

1 голос
/ 14 марта 2012

Вам необходимо сбросить StringBuilder для каждой новой строки, которую вы хотите записать в файл.В настоящее время для каждой строки вы пишете текущую добавленную строку, а все предыдущие добавленные строки в StringBuilder записываются в ваш файл, когда score > 1.

...