diff --git a/coursework/part2/.gitignore b/coursework/part2/.gitignore index c368d45..3a39c5d 100644 --- a/coursework/part2/.gitignore +++ b/coursework/part2/.gitignore @@ -1,2 +1,3 @@ .stack-work/ -*~ \ No newline at end of file +*~ +!task_part2.txt \ No newline at end of file diff --git a/coursework/part2/task_part2.txt b/coursework/part2/task_part2.txt new file mode 100644 index 0000000..7591d17 --- /dev/null +++ b/coursework/part2/task_part2.txt @@ -0,0 +1,56 @@ +Часть 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-грамм созданных на двух разных +текстах. Тексты для второй модели выбрать самостоятельно. Пользователь +задает начальное слово (или пару) и глубину М сообщений, которыми +обмениваются модели. Ответ модели основывается на последнем слове из +предложения оппонента (если последнее слово отсутствует в словаре, то +предпоследнее и т.д. пока не будет найдено подходящее слово или не +закончится предложение оппонента) + +Автор текстов: +Чехов, Антон Павлович \ No newline at end of file