Files
functional-programming/coursework/part2/task_part2.txt

56 lines
3.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Часть 2
Написать синтаксический анализатор разбирающий текст и генератор
продолжения текста по введенному слову. Для этого выполнить следующие
задачи:
1. Прочитать текст из файла, указываемого пользователем. Синтаксически
проанализировать текст согласно правилам: слова состоят только из букв;
предложения состоят только из слов и разделены символами: .!?;:().
Разбить текст на предложения. Удалить все символы пунктуации и цифры
из слов и предложений.
2. Составить модель N-грамм. Использовать модель биграмм и триграмм.
По списку предложений составить словарь. Ключами являются: одно слово,
либо пара слов. Значениями в словаре является список всех уникальных
возможных продолжений триграммы (т.е. список пар слов или одиночных
слов). Словарь сохранить в файл .txt.
Пример текста и словаря на его основе:
Текст: [a b, c d e! b c d? e b c# a ^d. a f; f.]
Словарь:
[
"a": ["b", "d", "f", "b c"];
"b": ["c", "c d"];
"c": ["d", "a", "d e", "a d"];
"d": ["e"];
"e": ["b", "b c"];
"a b" : ["c"];
"b c" : ["d", "a"];
"c d": ["e"];
"e b" : ["c"];
"c a": ["d"];
"f": []
]
3. Реализовать взаимодействие с пользователем. Пользователь вводит одно
слово или пару слов. Программа возвращает строку случайной длины в
диапазоне от 2 до 15 слов, если задаваемого пользователем слова нет в
ключах словаря, выдавать соответствующее сообщение. Фраза составляется
путем добавления случайного слова (или пары) из списка значений текущего
слова-ключа (или пары-ключа), до тех пор, пока либо не будет сформировано
предложение нужной длины, либо не будет достигнут ключ, у которого нет
значений.
4. Организовать диалог двух моделей N-грамм созданных на двух разных
текстах. Тексты для второй модели выбрать самостоятельно. Пользователь
задает начальное слово (или пару) и глубину М сообщений, которыми
обмениваются модели. Ответ модели основывается на последнем слове из
предложения оппонента (если последнее слово отсутствует в словаре, то
предпоследнее и т.д. пока не будет найдено подходящее слово или не
закончится предложение оппонента)
Автор текстов:
Чехов, Антон Павлович