-
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; ky, sy, kz и sz аналогично.
|xyz|--------------|kxkykz|--------------------|kxkykz|---------------------||| Только для частот kxkykz и kxkysz нам нужны частоты триграмм.
|Xyz|--------------|sxkxkykz|------------------|sxkxky, kxkykz|--------------||| Для других ключевых триграмм и сдвиговых диграмм
|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
, вы можете распечатать все ненулевые усилия, степень перепутываемости и предпочтения.
Программа использует простой алгоритм, который начинается со случайной раскладки. Раскладка постепенно улучшается путем многократной перестановки символов. Если перестановки больше не ведут к улучшению показателей раскладки, алгоритм завершается.
Результатом этой процедуры является локально оптимальная раскладка клавиатуры. Локально оптимальная раскладка клавиатуры может быть далека от оптимальной из-за заданных опций рассчета. По этой причине описанная выше процедура повторяется снова и снова с использованием случайных раскладок в качестве отправной точки. Количество повторений можно указать с помощью опции -i
. Без этой опции оптимизатор продолжает работать, пока вы не прекратите его. Сколько повторений необходимо задавать, зависит от схемы рассчета и, возможно, от величины и состава корпуса. Согласно моим наблюдениям (автора), при использовании настроек по умолчанию 10000 является разумным значением, при условии, что вы используете опцию -2
. При использовани опции -3
требуется больше повторений для удовлетворительного результата.
По умолчанию каждаяследующая более оптимальная раскладка заменяет предыдущую менее оптимальную. Если вы используете опцию -m
для определения порога, будут напечатаны все локально оптимальные раскладки клавиатуры с общим усилием ниже этого порога.
Используя опцию -s
, вы можете указать положительное целое число, которое служит начальным числом для генератора случайных чисел. Это может быть полезно для получения воспроизводимых прогонов. По умолчанию это случайное число.
Количество используемых потоков можно указать с помощью опции -t
. По умолчанию используется один поток. Количество повторений, указанных с помощью -i
, понимается для каждого потока. То есть, если вы используете несколько потоков, вы можете уменьшить это число пропорционально.
Введем следующие термины: Чередование рук
(Hand alternations
) - это биграммы, клавиши которых набираются разными руками. Двойной удар
(Double strokes
) это биграмма, в которой одна и та же клавиша нажимается дважды. Однопальцевые сочетания
(Same finger repetitions
) - это биграммы, в которых разные клавиши нажимаются одним и тем же пальцем. Удары соседних пальцев
(Adjacent finger strokes') - это биграммы, для которых клавиши набираются смежными пальцами одной и той же руки.
Внутренние смещения (
Inward motions) это такие биграммы, у которых первая клавиша нажимается пальцем, расположенным дальше наружу на той же руке, что и палец, нажимающий вторую клавишу (самый внешний палец это мизинец, а самый внутренний это большой). Для
Внешних смещений (
outward motions`) порядок противоположен. Префикс «Shift-» обозначает специальные диаграммы, для которых первая клавиша - клавиша shift, а вторая клавиша - символьная клавиша.
Вот результат для раскладки «Aus der Neo-Welt», рассчитанной со смешанным немецко-английским корпусом:
Aus der Neo-Welt 382.859 total effort 187.075 positional effort left right
-------------------1.029 same finger rp 6.976 shift same finger top 5.7 11.8
kuü.ä vgcljf------71.404 hand alternat. 24.118 shift hand alter. mid 36.4 32.1
hieao dtrnsß--------1.796 inward/outward 25.117 inward or outward bot 5.2 8.9
xyö,q bpwmz---------9.262 adjacent22.116 shift adjacent sum 47.2 52.8
--------------------8.4 11.2 14.0 13.7 --.- --.- 17.6 10.8 14.3 10.1 Sh 2.9 1.2
Слева вверху напечатано название раскладки или ее порядковый номер. Далее общий effort и позиционный effort. Слева отображена раскладка. Далее указаны частоты клавишных биграмм в процентном соотношении: Однопальцевые сочетания
, Чередование рук
или Удары соседних пальцев
, и соотношение Внутренних смещений
и Внешних смещений
. В колонне правее отображены частоты в процентном соотношении для shift-биграмм с Однопальцевыми сочетаниями
, Чередованием рук
или Ударами соседних пальцев
. В крайней правой колонке распределение нажатий клавиш подробно описано для верхнего, среднего и нижнего ряда и двух рук. Линия внизу показывает, как нажатия клавиш распределяются между пальцами (начиная с левого мизинца до правого мизинца) и клавишами shift. --.-
пишется, когда пробел на большом пальце, но не ясно каком (как на стандартных клавиатурах). По этой причине невозможно указать частоты отдельно для каждого большого пальца. Нажатия клавиш для неопределенного большого пальца учитываются в общем и позиционном effort, но игнорируются для остальной части вывода.
При использовании опции -3
выводятся две дополнительные строки:
4.765 no hand altern. 44.851 two hand altern.
3.582 seesaw-----------6.403 indir same finger
Первая выдает частоты триграмм, набираемых одной рукой и с чередованием рук. Вторая выдает частоты триграмм, которые состоят из одного внутреннего и одного внешнего смещения (независимо от их порядка), и частота триграмм с двумя чередованиями рук, для которых первая и последняя клавиши разные, но набраны одним и тем же пальцем (косвенное повторение одного и того же пальца).
Используя опцию -b
, за которой следует число от нуля до 100, вы можете получить более подробное описание наиболее часто встречающихся биграмм без чередования рук. Кроме того, частота повторений одного и того же пальца и ударов соседних пальцев будет детализирована для каждого пальца и для каждой пары пальцев. Кроме того, частота Однопальцевых сочетаний
и Ударов соседних пальцев
будет детализирована для каждого пальца и для каждой пары пальцев соответственно. При использовании опции -b
во второй раз (за которой следует число) дополнительно выводятся shift-биграммы, при использовании ее в третий раз дополнительно добавляются триграммы.
Использование опции -k
уменьшает вывод до одной строки для раскладки клавиатуры. Опция '-m` указывает общий effort, ниже которого печатаются все локально оптимальные раскладки. Без этой опции будет отображаться только лучшая на данный момент раскладка.
Используя опцию -w
, вы можете указать файл, содержащий список слов. Файл должен быть с кодировкой UTF-8 и каждая строка должна содержать частоту слова, за которой следует слово, отделенное пробелом. Для данной раскладки слова разбиваются на последовательности букв, которые набираются одной рукой. Частоты этих одноручных последовательностей собираются и суммируются по всем словам, а затем выводятся в соответствии с их частотой. По умолчанию отображается столько одноручных последовательностей, что их совокупная частота составляет 95% от всех одноручных последовательностей. Вы можете изменить это ограничение, используя опцию -H
.
Используя опцию -r
, вы можете указать файл, содержащий раскладки клавиатуры, которые будут оцениваться и отображаться без выполнения оптимизации. Кроме того, используя опцию -V
, вы можете изменять эти раскладки. Для каждой раскладки в файле, генерируются все раскладки, которые отличаются от заданной не более чем на количество клавиш, заданных опцией -V
. Если раскладка клавиатуры в файле указывает символ заглавной буквы, то положение этой буквы не будет изменяться. Рекомендуется использовать опцию -m
для уменьшения вывода до лучших из сгенерированных вариантов, так как в противном случае количество сгенерированных макетов быстро станет неуправляемым.