mirror of
https://github.com/Oreolek/Togataltu.git
synced 2024-04-27 22:59:40 +03:00
63 lines
5.9 KiB
TeX
63 lines
5.9 KiB
TeX
\documentclass[a4paper,14pt]{extreport}
|
||
\input{01.Title}
|
||
\input{02.Theory}
|
||
|
||
\input{03.Algorithm}
|
||
|
||
\chapter{Реализация}
|
||
|
||
Модуль вызова системы включает в себя пользовательский интерфейс. Он отвечает за ввод и представление данных.
|
||
|
||
Главный класс Source (модуль source.rb) отвечает за основную логику.
|
||
|
||
Класс Translator (translator.rb) содержит функцию перевода слов. Логика программы не зависит от языка исходного текста, так как ударения указываются вручную, но словари готовы только для английского языка.
|
||
|
||
Класс Morphology сожержит функцию, которая вызывает библиотеку phpmorphy, чтобы получить все словоформы заданного слова. Библиотека phpmorphy распространяется по лицензии LGPL и использует словари Ispell, а также пытается угадать склонение слов.
|
||
|
||
Система рассчитана на работу с латинским алфавитом\footnote{На это настроен отлов гласных.} и использует кодировку UTF-8.
|
||
|
||
Система получает на входе текстовый документ и выдаёт переведённый текстовый документ.
|
||
|
||
\subsection{Формат словарей}
|
||
|
||
Словари имеют расширение \verb/.txt/.
|
||
|
||
Переводы слов идут сразу после слов. Перед переводами ставится ровно два пробела.
|
||
|
||
Количество переводов не ограничено, но выбирается только один. Это поведение может измениться в будущем.
|
||
|
||
\begin{verbatim}
|
||
cлово
|
||
перевод1
|
||
перевод2
|
||
...
|
||
\end{verbatim}
|
||
|
||
Для перевода может использоваться онлайн-сервис переводческой памяти \linebreak \underline{http://mymemory.translated.net.} Он собирает переводы слов по Интернету (используя Википедию, Google Translate и поиск по сайтам) и объединяет их в одну базу переводов. Сервис поддерживает 69\footnote{Считал вручную, мог ошибиться. Замечу, что в списке есть даже староанглийский.} языков. Собственная реализация была отложена ввиду низкого качества и огромной трудоёмкости.
|
||
|
||
Файл console.rb запускает консольный интерфейс. Информационные сообщения и вывод текста идут в окно терминала. Ввод текста пока что не реализован.
|
||
|
||
Файл main.rb запускает графический интерфейс, используя библиотеку wx\-Ruby. Информационные сообщения выводятся в специальном текстовом поле. Ввод текста осуществляется в левом текстовом поле; вывод появляется в правом.
|
||
|
||
Ударения указываются вручную. Это необходимо, так как поэты могут переставлять ударения по своей воле, и определить автоматически его не получится. Так как автоматического проставления ударения нет, то программа зависит от языка исходного текста только в ядре перевода. Опять же, ядро перевода поддерживает 69 языков -- то есть, программа может работать с 69 языками.
|
||
|
||
Язык вывода — только русский. Морфология вынесена в отдельный класс, но добавление нового языка потребует составления словаря либо модели.
|
||
|
||
|
||
\chapter{Что можно сделать}
|
||
|
||
Задача огромна, поэтому на многое у меня не хватило времени. Вот список того, что остаётся сделать.
|
||
|
||
\begin{itemize}
|
||
\item Словарь ударений либо усовершенствовать автоопределение.
|
||
\item Качественное ядро перевода (словарное либо вероятностное). Я достаточно плохо себе представляю этот пункт, поэтому не буду уточнять
|
||
\item Перебор нескольких вариантов перевода.
|
||
\item Память перевода (translated.net не в счёт) -- чтобы не переводить одни и те же строки (слова) дважды.
|
||
\item Переписать рифмовку так, чтобы она работала по строфам, а не по строкам.
|
||
\end{itemize}
|
||
|
||
Кстати, я бы не делал ставки на качество. Сложность одного алгоритма определения рифмы очень велика (а вызывается эта функция очень часто), а значит, программа будет работать ОЧЕНЬ долго. Заранее предопределённый ритм помогает решить, но не решает этой проблемы.
|
||
|
||
\bibliographystyle{utf8gost780u}
|
||
\bibliography{bibliography}
|
||
\end{document} |