Здравствуйте! Подскажите пожалуйста решение моей проблемы. Я пытаюсь сделать так, что из текста, который считывается с файла, я получаю количество предложений. Это в моем коде работает. Но! я не понимаю как расширить программу, чтобы учесть, что точка не всегда обозначает окончание предложения. Точка также может использоваться в качестве сокращений, например и.о.(исполняющий обязаности). package ir_ub2 import java.io.BufferedReader import java.io.File import java.io.FileNotFoundException import java.io.FileReader import java.io.IOException import java.nio.file.ReadOnlyFileSystemException import java.util.ArrayList import java.util.Arrays import java.util.List public class TextCounts { public static void main(String[] args) throws IOException { // datei lesen FileReader fileName = new FileReader("C:\\Users\\Olga\\Desktop\\ub_2\\inputDE.txt") // wrap a BufferedReader around FileReader BufferedReader reader = new BufferedReader(fileName) int sentenceCount = 0 String line String terminalSymbol = ".?!" while ((line = reader.readLine()) != null) { // Continue reading until end of file is reached for (int i = 0 i < line.length() i++) { if (terminalSymbol.indexOf(line.charAt(i)) != -1) { // If the delimiters string contains the character sentenceCount++ } } } reader.close() System.out.println("The number of sentences is " + sentenceCount) } }
Ответ Рискуя навлечь на себя гнев всей ленты все таки напишу: А вы, друзья, как ни садитесь, Все в музыканты не годитесь Ну если серьезно, то не надо кустарщину, а надо решить задачу по правильному. Я вижу 2 возможных способа: Либо засунуть ваш текст в NLP сеть и обучить ее. Для начала можно взять OpenNLP и попробовать обучить ее. Взять Apache Lucene и попробовать SentenceTokenizer - который разобьет текст на предложения. Lucene, насколько я понимаю, поддерживает русский язык, есть кстати и внешние расширители Lucene для русской морфологии Как то так.