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