Вопрос

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

Предложение - это сборник слов, разделенных пробелом, который заканчивается в. или же ! или же ? Однако это также предложение:

Greetings, earthlings..

То, как я обратился к этой программе, состоит в том, чтобы сканировать текстовый файл по одному символу за раз с помощью getChar (). Мне запрещено работать со всем текстовым файлом в памяти, это должен быть один символ или слово за раз.

Вот моя дилемма: используя getChar (), я могу узнать, что такое текущий персонаж. Я просто продолжаю использовать getChar () в цикле, пока он не найдет символ EOF. Но, если в конце есть несколько периодов, это все еще одно предложение. Это означает, что мне нужно знать, каким был последний персонаж до того, что я анализирую, и тот, который после этого. Благодаря моему мышлению, это означало бы еще один вызов GetChar (), но это создаст проблемы, когда я пойду на сканирование в следующем персонаже (теперь он пропустил персонажа).

Есть ли у кого -нибудь предложение относительно того, как я могу определить, что вышеупомянутое предложение действительно является предложением?

Спасибо, и если вам нужны разъяснения или что -нибудь еще, дайте мне знать.

Это было полезно?

Решение

Вам просто нужно реализовать очень простое Государственный аппарат. Анкет После того, как вы нашли конец предложения, вы останетесь в этом состоянии, пока не найдете начало нового предложения (обычно это был бы небелый космический символ, отличный от терминатора, такого как.! Или?).

Другие советы

Вам нужна расширяемая грамматика. Посмотрите, например, при регулярных выражениях и попытайтесь построить его.

Как правило, человеческий язык разнообразен и нелегко проанализировать, особенно если у вас есть разговорная речь для анализа или разных языков. На некоторых языках может даже не ясно, какое различие между словом и предложением является.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top