счетчик предложений из файла

Я пытаюсь сделать простую программу, которая подсчитывает слова, определенные строки и предложения. У меня есть счетчик слов, и у меня есть счетчик, который подсчитывает определенные строки, но я не могу понять, как подсчитывать предложения, поскольку, по сути, если я считаю все десятичные знаки, что, если есть более одного ".".

пока это мой код..

int count = 0;
// while there is something in the file, keep reading and counting
while (inputFile.hasNext()) {
   String token = inputFile.next();
   count++;
}

int letters = 0;
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
    String nextToken = scanner.next();
    if (nextToken.equalsIgnoreCase("for"))
    {
    letters++;
    }

}

person David Zapata    schedule 17.10.2014    source источник
comment
Каждый раз, когда вы сталкиваетесь с точкой, вы проверяете символы по обе стороны от нее или, по крайней мере, следующий за ней символ. Если это пробел, то это, скорее всего, точка, обозначающая конец предложения. Если есть число, то это десятичная точка и часть числа. Вам придется использовать некоторые шаблоны регулярных выражений, но ничего слишком сложного. Вы также должны решить, хотите ли вы учитывать плохих машинисток, которые могут написать предложение, и каким образом. Вот так...   -  person MarsAtomic    schedule 18.10.2014
comment
Что вы имеете в виду под тем, что, если их больше одного.? Можете ли вы привести пример ввода, который может вызвать эту проблему? (Я знаю, что, я думаю, вызовет проблему, но я хотел лучше понять, что вы пытались сказать.)   -  person ajb    schedule 18.10.2014
comment
Сегодня, когда я был в Сент-Луисе, я встретил г-на Пола Карлсона, руководителя операций в США компании J. Crew. Итак, вы, вероятно, не все сделаете правильно, но вам нужно придумать, какие точки вы будете считать окончанием предложения, а какие нет.   -  person ajb    schedule 18.10.2014


Ответы (1)


Здесь есть несколько ответов - парсер простых предложений Java с использованием StringTokenizer, regex, BreakIterator, чего угодно, но реальная история такова: определение предложений — нетривиальная задача, если вы действительно хотите их найти. Просто подумайте о настоящем длинном предложении, используя кавычки и числа вместе.

Вы можете попробовать несколько библиотек, от Sentence Parser до более сложных NLP, таких как lingpipe, weka и ворота. (см. http://www.quora.com/What-are-the-best-Java-open-source-NLP-toolkits)

Все зависит от того, насколько глубоко вы хотите в этом разобраться.

person Leo    schedule 17.10.2014