Skip to content

Latest commit

 

History

History
87 lines (47 loc) · 9.73 KB

opt_log.md

File metadata and controls

87 lines (47 loc) · 9.73 KB

Пробуем составить раскладку для Jian.

Jian состоит из 2х половинок по 23 клавиши, значит всего у нас 46 клавиш.

Количество клавиш задается при компиляции флагом -DTASTENZAHL=46

Вот все опции для компиляции opt которые советует автор, плюс мультитрединг:

g++ -std=c++11 -O2 -DNDEBUG -DTASTENZAHL=46 -DMIT_THREADS -DENGLISH -static-libgcc -static-libstdc++ opt.cc -o opt

-std=c++11 , -O2, -DNDEBUG, -DMIT_THREADS, -static-libgcc, -static-libstdc++ и -o - это служебные флаги, не относящиеся непосредственно к opt, а общие для всех C++ программ.

-DTASTENZAHL=46 - это флаг самой программы, задающий количество кнопок. В прилагаемом хендбуке программы, не описаны специфичные флаги самой программы.

Поэтому остается под вопросом назначение флага -DENGLISH . Есть такой термин "Денглиш" даже в википедии. Означает смесь немецкого и английского, в нашем случае, вероятно, это смешивание английского и немецкого языка в одной раскладке с применением принципов фонетики. Наверное, сейчас лучше отказаться от этого флага. Попробуем обойтись без фонетики и создать хотя-бы моноязычную раскладку. А вопрос про флаг -Denglish нужно задать автору, и в дальнейшем адаптировать под русский язык или же написать свой флаг -RUNGLISH.

Таким образом, получаем следующую команду для компиляции под любую ос:

g++ -std=c++11 -O2 -DNDEBUG -DTASTENZAHL=46 -DMIT_THREADS -static-libgcc -static-libstdc++ opt.cc -o opt

Но пока оставим 35 клавиш как в программе по умолчанию, так как у нас еще не адаптирован конфиг под Jian:

g++ -std=c++11 -O2 -DNDEBUG -DTASTENZAHL=35 -DMIT_THREADS -static-libgcc -static-libstdc++ opt.cc -o opt

Итак, программу скомпилировали. Теперь нам нужет текст на русском весом ~1мб, как советует автор. Я создал тестовый текстовый файл из рандомных околокомпьютерных книг вырезав из него все английские символы. Размер сделал чуть меньше 1 мб. rutext.txt

Чтож, теперь выполним первичную разбивку, т.к. автор советует сначала разбить файл на биграммы-триграммы, а уже потом запускать непосредственно рассчеты. Должно сгенерится 4 файла: односимвольная частотность, биграммы, триграммы и целые слова.

opt rutext.txt

После первого осмотра сгенерированного файла частот одиночных символов пришлось все переделывать, так как в выборку попали экзотические символы типа градусов, а также маркеры списка. После того, как я удалил их и снова открыл одиночную выборку, то обратил внимание, что большие буквы во-первых не все присутствуют в паре к малым, а во-вторых их сильно меньше. Принял решение сразу в тексте их превратить в маленькие и переделать выборку еще раз. В конфиге вроде бы можно указать игнорируемые символы (не помню, не уверен), и вроде как можно игнорить верхний регистр(вот здесь вроде упоминались какие-то трюки но только для биграмм). Решил, что лучше сразу позаботится об этом.

Теперь получилась выборка из 74-х символов: 33 буквы, 10 цифр и знаки препинания. Но обнаружил, что в выборке кроме одиночного тире, присутствует еще и длинное (—),причем это не перенос в тексте а такое-же тире. Осталось 73 символа с пробелом без Enter. Вырезал и его и подправил пробелы. Таким образом, первоначальная выборка тоже требует внимания.

Вообще, по хорошему, для русской раскладки для выборки надо оставить только сам русский алфавит. Как это лучше сделать я пока не знаю, поэтому оставляю все так.

Для непосредственно рассчета раскладки нужно задать оператору opt опции. (C

opt -2 rutext.txt -i 10000 - учтутся только одиночные сочетания и биграммы. Чтобы обработать ~1mb-корпус требуется 10000 итерраций согласно рекомендациям автора (-i 10000).

На этом месте пришлось обратно компилировать программу на стандартные для программы 35 клавиш, так как у меня не адаптирован конфигфайл под Jian.

Кроме того я скачал текст на немецком, deutchmann.txt

Теперь:

opt -2 deutchmann.txt -i 20000 - выдает вот такую раскладку:

opt -2 ein.txt -i 20000

Ну, уже какой-то результат на дефолтном конфиге. Теперь прочекаем остальные флаги:

Флаги для ТЕХ и текскта с переносами я скипую пока, потому-что проще найти текст без переносов, а формулы мы не используем в обычной жизни. Тогда будет проще раскладку для формул сделать кому надо.

opt -2 text.txt - учтитываются только одиночные сочетания и биграммы.

opt -3 text.txt - учтитываются одиночные сочетания, биграммы и триграммы.

Опции для рассчета двузычной фонетической раскладки я скипаю, потому-что не вижу в ней смысла.

По умолчанию каждаяследующая более оптимальная раскладка заменяет предыдущую менее оптимальную. Если вы используете опцию -m для определения порога, будут напечатаны все локально оптимальные раскладки клавиатуры с общим усилием ниже этого порога. Опция может быть полезна, но я сейчас не буду на нее отвлекаться.

Количество используемых потоков можно указать с помощью опции -t. По умолчанию используется один поток. Количество повторений, указанных с помощью -i, понимается для каждого потока. То есть, если вы используете несколько потоков, вы можете уменьшить это число пропорционально.

opt -2 ein.txt -i 20000 -t 4

Используя опцию -b, за которой следует число от нуля до 100, вы можете получить более подробное описание наиболее часто встречающихся биграмм без чередования рук. Кроме того, частота повторений одного и того же пальца и ударов соседних пальцев будет детализирована для каждого пальца и для каждой пары пальцев. Кроме того, частота Однопальцевых сочетаний и Ударов соседних пальцев будет детализирована для каждого пальца и для каждой пары пальцев соответственно. При использовании опции -b во второй раз (за которой следует число) дополнительно выводятся shift-биграммы, при использовании ее в третий раз дополнительно добавляются триграммы. Может быть полезна акккордеонистам.