harbour-books/tools/StatisticsGenerator
Slava Monich cd357843cb Squashed 'fbreader/fbreader/' content from commit 7abc80d
git-subtree-dir: fbreader/fbreader
git-subtree-split: 7abc80d12fab06b05ea1fe68a0e73ea5e9486463
2015-05-26 23:59:24 +03:00
..
data Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
localPatterns Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
patterns/base Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
createAllPatterns.sh Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
createPatterns.sh Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
detector.cpp Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
generator.cpp Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
Makefile Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
pattern.cpp Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
readme.txt Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
rtfInputStreamTest.cpp Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00
testCriteria.sh Squashed 'fbreader/fbreader/' content from commit 7abc80d 2015-05-26 23:59:24 +03:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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