Добавил про main

This commit is contained in:
2024-12-10 12:19:02 +03:00
parent 56b2555e15
commit 4b3baff74f

View File

@@ -523,6 +523,37 @@ dialogStep dict prevPhrase =
in putStrLn ("(" ++ key ++ ") " ++ unwords p) >> return p
\end{lstlisting}
\subsubsection{Функция Main}
Код функции \texttt{main} представлен в листинге~\ref{lst:main2}.
Функция \texttt{main} обрабатывает пользовательский ввод и с помощью функций \texttt{splitText} и \texttt{buildDictionary} строит две модели N-грамм на файлах указанных пользователем. Предлагает пользователю ввести слово или пару слов, на которые потом генерируется ответ с помощью функции \texttt{processInput}. Также запускает диалог между созданными моделями N-грамм с помощью функции \texttt{twoModelsDialog}. Словари с N-граммами моделей сохраняются в файлы \texttt{dict.txt} и \texttt{dict2.txt} с помощью функции \texttt{saveDictionary}.
\begin{lstlisting}[caption={Код функции main}, label={lst:main2}]
main :: IO ()
main =
putStrLn "Введите имя файла:" >>
getLine >>= \fileName ->
readFile fileName >>= \content ->
let sentences = splitText content in
let dict = buildDictionary sentences in
saveDictionary "dict.txt" dict >>
putStrLn "Введите слово или пару слов для генерации фразы:" >>
getLine >>= \input ->
processInput dict input >>
putStrLn "Введите имя второго файла:" >>
getLine >>= \fileName2 ->
readFile fileName2 >>= \content2 ->
let dict2 = buildDictionary (splitText content2) in
saveDictionary "dict2.txt" dict2 >>
putStrLn "Введите начальное слово или пару слов для старта диалога:" >>
getLine >>= \input2 ->
putStrLn "Введите количество сообщений от каждой модели:" >>
getLine >>= \ms ->
let m = read ms :: Int in
twoModelsDialog dict dict2 input2 m
\end{lstlisting}
\newpage