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 -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-биграммы, при использовании ее в третий раз дополнительно добавляются триграммы. Может быть полезна акккордеонистам.