-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Вопросы к автору:
For the files with -t in their name, only digrams and trigrams are accounted for that are in the interior of words and that do not contain hyphenation points.
opt deutsch.txt deutsch-t.txt deutsch-t.txt gemischt.txt
uses the frequency files for German that are shipping with the optimiser to create new frequency files in which digrams and trigrams at word boundaries or containing hyphenation points are only accounted with one third of their weight.
Чтобы использовать компьютер для разработки хорошей раскладки, необходимо указать, что именно планируется печатать. Раскладка генериуется на основе вашего текста, который вы самостоятельно предоставите программе как исходные данные. Таким образом, корпус - это коллекция текстов с репрезентативной выборкой того, что вы будете печатать.
Программа разбивает входной текст на блоки: буквенные частоты, частоты диграмм (последовательность из двух букв) и триграмм (последовательность из трех букв). Эти частоты хранятся в файлах с одинаковыми именами и имеют расширения 1, 2 и 3 соответственно. Диграммы и триграммы частично совпадают. Например, слово «bike» содержит диграммы «bi», «ik» и «ke», а также триграммы «bik» и «ike».
В архиве программы в качестве примера содержатся сгенерированные файлы с частотной выборкой немецкого и английского текста. For the files with -t in their name, only digrams and trigrams are accounted for that are in the interior of words and that do not contain hyphenation points.
Чтобы использовать собственную коллекцию текстов, выполните следующие действия:
- Сохраните весь ваш текст в одном файле с кодировкой UTF-8 и расширением txt, например: meinkorpus.txt.
- Убедитесь, что файл имеет кодировку UTF-8.
- Используйте команду opt для генерации частотных файлов: Например:
opt meinkorpus.txt
создает файлы с частотной выборкой meinkorpus.txt.1 (одиночные буквы и символы), meinkorpus.txt.2 (биграммы) и meinkorpus.txt.3 (триграммы) на основе текста из файла meinkorpus.txt, а также частотный список всех используемых слов meinkorpus.txt.wl. Данные файлы создаются в той же директории, что и исходный файл meinkorpus.txt.
Если вы вызываете оператор opt с двумя аргументами, программа предполагает, что первый аргумент обозначает файл, содержащий шаблоны переноса TEX в кодировке UTF-8 (* .pat.txt), а второй аргумент - файл с коллекцией текста. В этом случае программа создает файлы с частотной выборкой, в которых подсчитаны диграммы и триграммы без учета переносов. Например:
opt hyph-de-1996.pat.txt meinkorpus.txt
opt также может составлять выборку из нескольких текстовых файлов. Для этого вызовите более двух аргументов. Например:
opt deutsch.txt deutsch-t.txt deutsch-t.txt gemischt.txt
uses the frequency files for German that are shipping with the optimiser to create new frequency files in which digrams and trigrams at word boundaries or containing hyphenation points are only accounted with one third of their weight. Another possibility for combining and weightingfrequency files is option -G
, as described below.
Программе можно задать дополнительные опции обработки текста. Используйте опцию -2
чтобы программы сгенерировала раскладку с учетом только частотности употребления отдельных символов и диграмм. Используйте опцию -3
чтобы дополнительно учитывались частоты триграмм. Например:
opt -2 deutsch.txt
составит раскладку с использованием частотных выборок на основе файла deutsch.txt
без учета триграмм.
В случае, если файла с частотной выборкой для отдельных символов (в примере выше, deutsch.txt.1) не существует, программа пытается открыть файл с именем заданного аргумента (то есть deutsch.txt). Если это удается, этот файл рассматривается как корпус. Это позволяет пропустить промежуточный этап использования частотных файлов, однако чтение корпуса занимает больше времени. При запуске программы Вы можете указать префиксы -2
или -3
несколько раз. По умолчанию все файлы частотной выборки имеют одинаковый вес независимо от размера корпуса, использованного для их создания. Используя опцию -G
(по умолчанию значение 1), вы можете изменить вес частотных файлов. Например:
opt -2 deutsch.txt -G 3 -2 englisch.txt
при вводе этой команды удельный вес частотной выборки из english.txt в три раза превысит таковую из deutch.txt при составлении раскладки. Задание различных или даже разноязычных частотных файлов отдельно с помощью применения специальных опций требует несколько больших вычислительных усилий, чем использование одного суммированного корпуса. С другой стороны, преимущество этого подхода заключается в том, что оптимальная компоновка, определенная таким образом (при условии, что она вообще найдена), является оптимальной по Парето по отношению к отдельным корпусам. То есть дальше невозможно улучшить раскладку для любого из корпусов, не ухудшая ее для другого. Использование для анализа одного суммированного корпуса не даст данного преимущества.
Если при создании раскладки вместо использования подготовленных частотных файлов, вы читаете основной корпус-файл напрямую, (смотрите ключ -r
в Параграфе 5) то первоначальная раскладка формируется из первых символов файла.
Для расчета частот символов программа предполагает биномиальное распределение, а среднее и дисперсия распределения оцениваются по относительным частотам символов, найденных в корпусе. Для вычисления стандартного отклонения, триграммы и отсутствующие символы не учитываются.
Различия efforts одного стандартного отклонения или ниже, незначительны, то есть они могут быть легко вызваны только случайным выбором в тексте. Различия в три стандартных отклонения или больше можно считать реальными. Чтобы уменьшить стандартное отклонение, необходимо увеличить размер корпуса. Стандартное отклонение обратно пропорционально квадратному корню из размера корпуса. Например, чтобы уменьшить стандартное отклонение вдвое, вам нужен корпус в четыре раза больше. Статистическая погрешность-это не единственная неопределенность, связанная с корпусом.
Чтобы уменьшить стандартное отклонение, необходимо увеличить размер корпуса. Стандартное отклонение обратно пропорционально квадратному корню из корпуса. Например, чтобы уменьшить стандартное отклонение вдвое, вам нужен корпус в четыре раза больше. Статистическая ошибка - не единственная неопределенность, которая связана с корпусом. Например, тип текстов (тексты с длинными или короткими предложениями, со многими или с несколькими иностранными словами) вводится асистематически, что не видно в стандартном отклонении.
Если вы хотите вводить один символ, вводя последовательность из одного или нескольких других символов, вы можете осуществить это с помощью эрзаца, (см. Параграф 6.1). Нет необходимости изменять корпус или файлы с частотной выборкой. Однако, если вы хотите объединить несколько последовательностей символов в один массив, то эта простая процедура больше не работает, так как информация, сохраненная в частотном файле, недостаточна для поддержки суммарных замен. В этом случае необходимо заменить последовательность символов для генерации раскладки. Из этого измененного корпуса затем создаются новые частотные файлы.
Используя опцию -T
, из корпуса и файла с шаблонами переносов TEX, вы можете создать третий файл,, в котором все возможные точки переносов отмечены мягким дефисом: (-): UTF-8:(U+00AD).
Например:
opt -T hyph-en-gb.pat.txt input.txt result.txt
Чтобы составить раскладку клавиатуры, мы учитываем последовательность нажатий клавиш, необходимых, чтобы ввести корпус (тестовый набор?) с этой раскладкой. Также как в корпусе, мы ограничиваем нашу оценку парой критериев. Каждый из этих критериев дает вклад в effort. Сумма этих вкладов это общий effort (см Уравнение 2).
Таблица 1: Разложение диграмм на ключевые ди-_и_триграммы.
|диграммы|----|клавиши|-----|сочетания_ди_и_триграмм||| kx - это клавиша x; sx - это Shift; ky и sy аналогично.
|xy|--------------|kxky|---|kxky|-------------------------||| sxkx и syky считаются отдельными клавишами,
|Xy|--------------|sxkxky|---------|sxkxky, kxky, sxkx|------------||| так как они соответствуют заглавным буквам.
|xY|--------------|kxsyky|---------|kxsyky, syky, kxsy|------------||| kxky и kxsy - это обычные биграммы.
|XY|-------------|sxkxsyky|--------|sxkxsy, kxsyky, sxkx, kxsy, syky||| sxkxky и sxkxsy - это биграммы с зажатым Shift.
----------------------------------------------------------------||| kxsyky триграмма.
*** 3.1 Механические критерии.
Односимвольные клавишные efforts. У каждой клавиши свой effort. Этот индивидуальный effort умножается на частоту, с которой нажимается клавиша, то есть на частоту буквы, которая соответствует клавише. Сумма этих произведений представляет собой позиционный effort, (см. Уравнение (3)).
Efforts биграмм. Каждая последовательность двух клавиш имеет собственный effort, effort биграммы. Здесь мы называем последовательность из двух комбинаций клавиш, имея в виду пару символов. Чтобы избежать двусмысленности, мы иногда будем использовать термин "клавишная диграмма". Разница показана в таблице 1 путем разложения диграммы " xy " со всеми комбинациями символов верхнего и нижнего регистра. Это приводит к клавишным диграммам типа shift + символьная клавиша, частоты которых взяты из буквенных частот, efforts которых является частью позиционного effort. Кроме того, образуются обычные клавишные диграммы, состоящие из двух символьных клавиш, Shift_диграммы, и триграммы. Так что рассчет становится довольно сложным, (см. уравнение (6)).
Shift_биграммы состоят из клавиши Shift, связанной символьной клавиши и следующей клавиши. Для рассчета их efforts, efforts диграммы для клавиши shift и последней клавиши умножается на коэффициент, (см.уравнение (6)).
Efforts триграмм. Последовательность из трех нажатий клавиш дает effort триграммы. Только при использовании опции -3
учитываются все клавишные триграммы. В противном случае учитываются только клавишные триграммы, частота которых задана частотами диграмм, (см. таблицу 2 и уравнение (7)).
Загрузка пальца (или Finger load). Для каждого пальца указывается целевая частота, которая обозначает долю от общего числа нажатий клавиш, которые должен ввести палец. Если фактическая частота превышает целевую частоту, избыток возводят в квадрат и умножают на весовой коэффициент, чтобы добавить effort, (см. Уравнение (8)).
Фиксированные пальцы являются исключением: пальцы, ключевые стоксы которых не зависят от компоновки, но полностью определяются конфигурацией и корпусом. Фиксированные пальцы являются исключением: пальцы, нажатия клавиш которых не зависят от компоновки, но полностью определяются конфигурацией и корпусом.
Оценка, описанная до сих пор, сосредоточена на механике печати. Вероятно, частота, с которой происходит путаница одинаковых букв, зависит от взаимного расположения клавиш, к которым эти буквы относятся.
Таблица 2: разложение триграмм на клавишные триграммы.
kx - это клавиша x; sx - это shift; ky, sy, kz и sz аналогично. Только для частот kxkykz и kxkysz нам нужны частоты триграмм. Для других ключевых триграмм и сдвиговых диграмм частоты диграмм достаточны.
|триграммы|----|клавиши|------------------|клавишные триграммы||| kx - это клавиша x; sx - это shift;
|xyz|--------------|kxkykz|------------|kxkykz|---------------------||| ky, sy, kz и sz аналогично.
|Xyz|--------------|sxkxkykz|------------------|sxkxky, kxkykz|--------------||| Только для частот kxkykz и kxkysz
|xYz|--------------|kxsykykz|------------------|kxsyky, sykykz|-------------||| нам нужны частоты триграмм.
|XYz|--------------|sxkxsykykz|----------------|sxkxsy, kxsyky, sykykz|-------||| Для других ключевых триграмм
|xyZ|--------------|kxkyszkz|------------------|kxkysz, kyszkz|--------------||| и сдвиговых диграмм
|XyZ|--------------|sxkxkyszkz|----------------|sxkxky, kxkysz, kyszkz|-------||| частоты диграмм достаточны. |xYZ|--------------|kxsykyszkz|----------------|kxsyky, sykysz, kyszkz|-------|||
|XYZ|--------------|sxkxsykyszkz|--------------|sxkxsy, kxsyky, sykysz, kyszkz|||
В конфигурационном файле можно числом задать степень похожести символов. Это число умножается на "степень перепутываемости", чтобы получить effort(см. уравнение (9)). Степень перепутываемости зависит от двух клавиш, на которые назначены символы, и может быть задана в конфигурационном файле. По умолчанию все буквы считаются несходными.
Некоторые пользователи хотят, чтобы определенные символы находились в определенных местах раскладки клавиатуры. Предпочтения для сопоставления символов с клавишами могут быть определены в файле конфигурации, с числом, которое количественно определяет важность этого предпочтения. Каждое обозначенное в файле конфигурации предпочтение уменьшает effort на это число, (см. уравнение (9)).
Манипулирование файлами корпуса и частот открывает дополнительные возможности для воздействия на рассчет раскладки. Например, при публикации в списке рассылки Neo (раскладка) было заявлено, что процесс написания более важен в слоге, чем через границы слога. Если для оптимизации используются файлы с частотной выборкой, в которых подсчитываются только ди- и триграммы, которые не содержат переносов (см. Раздел 2), то их можно рассчитать приближенным образом (приблизительные, ассиметричные границы и переносы не совсем одно и то же). Для сравнения раскладок, поддерживающих разные наборы символов, есть возможность указать effort для символов, которые нельзя ввести с этой раскладкой. (Судя из контекста, речь о типографских символах, например, в раскладке может не быть знака переноса).
Используя опцию -A
, вы можете распечатать все ненулевые усилия, степень перепутываемости и предпочтения.
Программа использует простой алгоритм, который начинается со случайной раскладки клавиатуры.
zzzzzzzzzzzzzzzzzz
Оптимизатор использует простой алгоритм, который начинается со случайной раскладки клавиатуры. Это расположение улучшается постепенно путем многократного обмена символами. Если никакой своп не улучшает компоновку, то алгоритм завершается. Результатом этой процедуры является локально оптимальное раскладывание клавиатуры. Локально оптимальная раскладка клавиатуры может быть далека от оптимальной в смысле, заданном схемой оценки. По этой причине описанная выше процедура повторяется снова и снова с использованием различных случайных макетов в качестве отправной точки. Количество повторений можно указать с помощью опции-i. Без этой опции оптимизатор продолжает работать, пока вы не прекратите его. Сколько повторений вы должны учитывать, зависит от схемы оценки и, возможно, от корпуса. Согласно моим наблюдениям, при использовании настроек по умолчанию 10000 является разумным значением, при условии, что вы используете опцию-2. Использование option-3 имеет тенденцию требовать большего количества повторений. По умолчанию будет напечатана каждая локально оптимальная раскладка клавиатуры, которая лучше, чем любая встреченная ранее. Если вы используете опцию -m для определения порога, будут напечатаны все локально оптимальные раскладки клавиатуры с общим усилием ниже этого порога. Используя опцию -s, вы можете указать положительное целое число, которое послужит начальным числом для генератора случайных чисел. Это может быть полезно для получения воспроизводимых прогонов оптимизатора. По умолчанию семена выбираются случайным образом.