harbour-books/tools/StatisticsGenerator/readme.txt
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

81 lines
9.9 KiB
Text
Raw Blame History

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