cd357843cb
git-subtree-dir: fbreader/fbreader git-subtree-split: 7abc80d12fab06b05ea1fe68a0e73ea5e9486463
81 lines
9.9 KiB
Text
81 lines
9.9 KiB
Text
FBREADER - рабочий каталог программы.
|
||
|
||
СОДЕРЖАНИЕ КАТЛОГА
|
||
|
||
Директория FBREADER/tools/StatisticsGenerator/ содержит следующие файлы:
|
||
|
||
Makefile - сборочный make-файл для программ StatisticsGenerator, LanguageDetector, PatternGenerator в собираемых программах используются классы библиотеки ZLibrary
|
||
|
||
generator.cpp - c++ код программы StatisticsGenerator
|
||
detector.cpp - с++ код программы LanguageDetector
|
||
pattern.cpp - c++ код программы PatternGenerator
|
||
|
||
|
||
StatisticsGenerator - читает файл, переданый в аргументе, как тесктовый файл и генерирует статистику: 500 наиболее часто встечаемых байтовых последовательностей (длина последовательности 2 байта) - оба параметра можно изменить в исходном коде. Полученная статистика записывается в файл с тем же именем и расширением .stat в XML формате.
|
||
|
||
SYNOPSIS: ./StatisticsGenerator [FILE]
|
||
EXAMPLE: ./StatisticsGenerator myBook.txt
|
||
|
||
PatternGenerator - генерирует итоговую статистику с параметрами: длина последовательности 3, кол-во последовательностей 300 для всех файлов с расширением .txt в заданной директории. Параметры можно поменять в исхдном коде. Итоговая статистика учитывает 300 наиболее часто употребляемых последовательностей длины 3 на базе текста, составленного из всех текстовых файлов (.txt) данной директории. Результат сохраняется в файл с именем "pattern.stat" в текущий каталог. Статистика сохраняется в XML формате.
|
||
|
||
SYNOPSIS: ./PatternGenerator [DIRECTORY]
|
||
EXAMPLE: ./PatternGenerator EnglishBooks
|
||
|
||
LanguageDetector - определяет кодировку и язык тестового файла или файлов, имена которых передан в командную строку. Данные параметры определяются с помощью дектора библиотеки ZLibrary: ZLLanguageDetector на основе паттернов языков и кодировок текущей версии fbreader'а, лежащих в каталоге: FBREADER/zlibrary/core/data/languagePatterns.zip
|
||
|
||
SYNOPSIS: ./LanguageDetector [FILE]...
|
||
EXAMPLE: ./LanguageDetector myBook.txt OtherFile.txt
|
||
|
||
./patterns/base - каталог, в котором содержутся базовые тексты, на основе которых создаются паттерны. Тексты рассортированы по языкам. Каждые подкаталог помимо самих тескстовых файлов содержит конфигурационный файл "encodings" и файл-описание "description". Например, так выглядит директория ./patterns/base/english/:
|
||
|
||
1122.txt 158.txt 16449.txt 21325.txt 730.txt 7436.txt description encodings
|
||
|
||
Все текстовые файлы должны содержать текст на одном и том же языке, в одной и той же кодировке. Она указавыется в файле "encodings" и стоит на первой строчке.
|
||
|
||
Например, файл ./patterns/base/english/encodings выглядит так:
|
||
|
||
US-ASCII
|
||
UTF-8
|
||
UCS-2BE
|
||
UCS-2LE
|
||
|
||
Тексты должны быть очишенны от вспомогательных элментов разметки, таких как тэги, или комментарии, лицензии и описания на другом языке. Для сохранении информации о текстовых файлах в любом подкаталоге директории ./patterns/base/ есть файл "description". В нем записывается откуда текст был скачан и какие изменения были выполнены после скачивания.
|
||
|
||
File: 1122.txt
|
||
Title: Hamlet by William Shakespeare US-ASCII
|
||
URL: http://www.gutenberg.org/etext/1122
|
||
Encodings: US-ASCII
|
||
Actions: 219 strings with licence at the begining were deleted
|
||
and 21 strings with comments at the end.
|
||
|
||
createPatterns.sh - скрипт, создающий паттерны на основе заранее подготовленной директории.
|
||
|
||
SYNOPSIS: ./createPatterns [DIRECTORY] [LANGUAGE CODE]
|
||
SYNOPSIS: ./createPatterns EnglishBooks en
|
||
|
||
Директория должна содержать базовые текстовые файлы нужного нам языка и конфигурационный файл "encodings". В этот файл заноситься список кодировок, для которых мы хотим создать паттерны. (см. описание директории ./patterns/base/)
|
||
|
||
В результате работы скрипта в каталог ./patterns/ записываются файлы паттернов(статистик). Формат имени таких файлов состоит из кода языка, указанного в параметрах, символа '_' и кодировки. Для нашего примера программа создаст в директории ./patterns/ следующие файлы:
|
||
|
||
en_US-ASCII
|
||
en_UTF-8
|
||
en_UCS-2BE
|
||
en_UCS-2LE
|
||
|
||
Для корректной работы скрипта необходимо, чтобы программа PatternGenerator была собрана в данной директории.
|
||
|
||
createAllPatterns.sh - скрипт проходит по списку каталогов в ./patterns/base/ и для каждого запускает createPatterns.sh, в качестве двубуквенной кодировки берутся первые две буквы названия каталога. В некотрых случаях эти две буквы заменяются (см. скрипт). Созданные в каталоге ./patterns/ паттерны добавляются в основной архив паттернов fbreader'а - ./../../../zlibrary/core/data/languagePatterns.zip
|
||
|
||
SYNOPSIS: ./createAllPatterns
|
||
|
||
readme.txt - help файл
|
||
|
||
КАК ДОБАВЛЯТЬ НОВЫЕ ПАТТЕРНЫ
|
||
|
||
1. При добавлении новой кодировки для уже существующего языка необходимо дописать ее в конец файла "encodings" в соотвествующем подкаталоге в ./patterns/base/, предварительно убедившись, что имя этой кодировки входит в список кодировок доступных конвертору iconv. Далее существует два пути. Во-первых, можно сгенерировать все паттерны заново, и заодно автоматически записать их архив. Для этого надо просто запустить ./createAllPatterns.sh. Данный процесс может занять ощутимое время, так что логичнее было бы пойти по второму пути. Запустить ./createPatterns только для одной директории. Например, если правим английский язык, то вид команды будет следующим:
|
||
|
||
./createPatterns ./patterns/base/english en
|
||
|
||
Далее следует вручную добавить интересующий нас новый паттерн из каталога ./patterns/ в архив ./../../../zlibrary/core/data/languagePatterns.zip
|
||
|
||
2. Для добавления нового языка со всеми кодировками необходимо создать новый каталог в ./patterns/base/. Названием катлога лучше выбрать название языка, причем желательно, чтоб первые две буквы совпадали с его двубуквенной кодировкой. Если это не так, следует подкорректировать скрипт ./createAllPatterns. Следующий шаг - поиск достаточного колличества (от этого зависит качество распознования, в уже существующих языках это колличество: 1 - 3 Mb) текстовых файлов - желательно 5 - 6 текстов различных тематик. Все файлы для кооректной работы должны быт с расширением .txt. Далее необходимо убедиться, что все файлы в одной и той же кодировке, и если необходимо, перекодировать все в одну и ту же. Эта кодировка должна быть записана первой в файл "encodings", далее туда пишутся оставшиеся интересующие нас кодировки - одна кодировка в одной строке. Для вашего же удобства лучше создать файл "description". После того как каталог создан мы можем обработать либо только его (см пункт 1.), либо все паттерны целиком.
|