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.), либо все паттерны целиком.
