diff --git a/coursework/report/report.tex b/coursework/report/report.tex index f0bf2db..9e1608d 100644 --- a/coursework/report/report.tex +++ b/coursework/report/report.tex @@ -415,6 +415,30 @@ buildDictionary sentences = in Map.map nub combined \end{lstlisting} +\subsection{Функция saveDictionary} +Функция \texttt{saveDictionary}, код которой представлен в листинге~\ref{lst:saveDictionary}, сохраняет словарь с N-граммами в текстовый файл. Она принимает на вход путь до файла и сам словарь, явно ничего не возвращает, но перезаписывает содержимое файла. Для получения текстового представления списков вместо стандартной функции \texttt{show}, используется \texttt{ushow} из библиотеки \texttt{unescaping-print}~\cite{unescaping-print}. \texttt{ushow} отображает кириллицу напрямую, без экранирования, в отличии от стандартной функции \texttt{show}. + +\begin{lstlisting}[caption={Функция saveDictionary для сохранения словаря N-грамм в файл.}, label={lst:saveDictionary}] +saveDictionary :: FilePath -> Map String [String] -> IO () +saveDictionary filePath dict = withFile filePath WriteMode $ \h -> + mapM_ (\(k,v) -> hPutStrLn h $ ushow k ++ ": " ++ ushow v) (Map.toList dict) +\end{lstlisting} + +Пример первых десяти строк содержимого итогового файла представлен ниже: + +\begin{verbatim} +"а тебе": ["мы"] +"а только": ["опьянела"] +"а третировала": ["его"] +"а тут": ["еще"] +"а ты": ["хорошая","рыжик","каштанка"] +"а учитель": ["удивлялся"] +"а хавронья": ["ивановна"] +"а хозяин": ["становился"] +"а чемодан": ["покачивался"] +"а через": ["месяц"] +"а ято": ["мечтал"] +\end{verbatim} \subsubsection{Функция generatePhrase} @@ -497,7 +521,7 @@ twoModelsDialog dict1 dict2 start m = \vspace{-1.5cm} \begin{thebibliography}{0} - \bibitem{JuicyPixels} + \bibitem{unescaping-print} Hackage -- unescaping-print: Tiny package providing unescaping versions of show and print, URL: \url{https://hackage.haskell.org/package/unescaping-print}, Дата обращения: 09.12.2024. \end{thebibliography} \end{document} \ No newline at end of file