saveDictionary в особенностях реализации

This commit is contained in:
2024-12-10 11:23:20 +03:00
parent a497908ed0
commit ca62ba2dc3

View File

@@ -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}