СИСТЕМА И СПОСОБ ВВОДА WuBi
WuBi INPUT SYSTEM AND METHOD

Область техники
Изобретение относится к способу ввода, в частности к способу ввода Wubi, и к соответствующей системе.
Уровень техники
Способ ввода Wubizixing, известный также как способ ввода модели пяти штриховых символов и часто называемый просто способом Wubi или Wubi Xing, - это способ ввода китайских иероглифов для кодирования в соответствии с их структурой, изобретенный профессором Ванг Йонгмином (Wang Yongmin). Это один из наиболее распространенных способов ввода китайских иероглифов, используемый в настоящее время в Китае и некоторых странах Юго-Восточной Азии.
Ниже описан основной принцип способа Wubi. Все китайские иероглифы состоят из штрихов или ключей. Для ввода китайских иероглифов от них отделяются некоторые часто используемые базовые элементы, называемые компонентами символов. Компонентом может быть ключ китайского иероглифа, часть ключа или даже штрих. После своего отделения, компоненты классифицируются на основе определенного правила. Затем компоненты назначаются клавишам клавиатуры согласно научным принципам и служат в качестве базовых элементов для ввода китайских иероглифов. В способе ввода Wubi существует 130 разновидностей базовых компонентов. С учетом изменений форм некоторых базовых компонентов всего имеется 200 их разновидностей. Эти компоненты назначаются 25 клавишам, за исключением клавиши "Z". Когда требуется ввести китайский иероглиф, нажимаются клавиши, соответствующие компонентам на клавиатуре, в порядке, в котором эти компоненты записывались бы вручную при создании кода Wubi. Система осуществляет поиск требуемого иероглифа в библиотеке китайских иероглифов способа ввода Wubi в соответствии с кодом Wubi, созданным на основе введенных компонентов.
Способ ввода Wubi позволяет быстро находить ожидаемое пользователем слово, так как характеризуется низкой долей совпадающих кодов. Если пользователь знаком с этим способом, скорость ввода может существенно увеличиться. Пользователю необходимо умело разделять слова, и обычно для быстрого определения нужного слова требуется нажатие трех-четырех клавиш Wubi. Неопытный пользователь может получать только большое число слов-кандидатов с помощью одноклавишного или двухклавишного кода (n-клавишный код - это код Wubi, предусматривающий нажатие n клавиш) и находить нужное слово путем отбора. При этом скорость ввода снижается.
Сущность изобретения
С учетом изложенного выше необходимо реализовать систему и способ ввода Wubi, обеспечивающие повышение скорости ввода пользователя для решения присущей обычному способу ввода Wubi проблемы, которая состоит в высокой доле совпадающих кодов при вводе одноклавишных или двухклавишных кодов, что влияет на скорость ввода.
Система ввода Wubi, предложенная в настоящем изобретении, содержит следующее:
библиотеку кэшированных слов для хранения информации по часто используемым словам, связанным с одноклавишными и двухклавишными кодами, и индексных данных этих слов;
библиотеку базовых слов для хранения информации по словам, связанным со всеми кодами Wubi, и индексных данных этих слов;
модуль извлечения слов для извлечения по меньшей мере одного слова из библиотеки кэшированных слов согласно индексным данным в этой библиотеке, если введен одноклавишный или двухклавишный код, а также извлечения по меньшей мере одного слова из библиотеки базовых слов согласно индексным данным в библиотеке кэшированных слов, если введен трехклавишный или четырехклавишный код.
Предпочтительно, библиотека кэшированных слов содержит следующее:
область кэшированных индексов кодирования для хранения индексных данных часто используемых слов;
область хранения кэшированных слов для хранения информации по часто используемым словам, причем все часто используемые слова хранятся в порядке, соответствующем их индексам; в качестве индекса каждого часто используемого слова используются первые две клавиши его кода Wubi, и слова всех наборов часто используемых слов с одинаковыми первыми двумя клавишами кода Wubi хранятся в порядке убывания их частот.
Предпочтительно, библиотека базовых слов содержит следующее:
область базовых индексов кодирования для хранения индексных данных слов, связанных со всеми кодами Wubi;
область хранения базовых слов для хранения информации по словам, связанным со всеми кодами Wubi, причем все слова хранятся в порядке, соответствующем их индексам; в качестве индекса каждого слова используются первые три клавиши его кода Wubi, и слова всех наборов слов с одинаковыми первыми тремя клавишами кода Wubi хранятся в порядке убывания их частот.
Предпочтительно, модуль извлечения слов содержит следующее:
модуль вычисления индексов для получения индексных данных согласно введенному коду Wubi;
модуль вывода слов-кандидатов для получения и отображения по меньшей мере одного слова согласно индексным данным.
Предпочтительно, данный способ содержит также
модуль определения для определения на основе введенного одноклавишного или двухклавишного кода, имеется ли в библиотеке кэшированных слов ожидаемое пользователем слово.
Способ ввода Wubi, предложенный в настоящем изобретении, содержит следующие этапы:
прием введенного кода Wubi;
извлечение по меньшей мере одного слова из библиотеки кэшированных слов, если введен одноклавишный или двухклавишный код Wubi, причем в библиотеке кэшированных слов хранят информацию по часто используемым словам, связанным с одноклавишными и двухклавишными кодами, и индексные данные этих слов;
извлечение по меньшей мере одного слова из библиотеки базовых слов, если введен трехклавишный или четырехклавишный код Wubi, причем в библиотеке базовых слов хранят информацию по словам, связанным со всеми кодами Wubi, и индексные данные этих слов.
Предпочтительно, после извлечения по меньшей мере одного слова из библиотеки кэшированных слов предусмотрено выполнение следующих этапов:
определение, имеется ли в библиотеке кэшированных слов ожидаемое пользователем слово; при отсутствии такого слова извлечение его из библиотеки базовых слов.
Предпочтительно, при извлечении по меньшей мере одного слова из библиотеки кэшированных слов предусмотрено выполнение следующих этапов:
использование в качестве индекса каждого слова библиотеки кэшированных слов первых двух клавиш его кода Wubi; хранение слов в библиотеке кэшированных слов в порядке, соответствующем их индексам; хранение слов всех наборов слов с одинаковыми первыми двумя клавишами кода Wubi в библиотеке кэшированных слов в порядке убывания их частот; преобразование введенного кода Wubi в индексные данные; извлечение и отображение по меньшей мере одного слова в указанном выше порядке согласно индексным данным.
Предпочтительно, при извлечении по меньшей мере одного слова из библиотеки базовых слов предусмотрено выполнение следующих этапов:
использование в качестве индекса каждого слова библиотеки базовых слов первых трех клавиш его кода Wubi; хранение всех слов в библиотеке базовых слов в порядке, соответствующем их индексам; хранение слов всех наборов слов с одинаковыми первыми тремя клавишами кода Wubi в порядке убывания их частот;
если введен трехклавишный код Wubi, преобразование этого кода в индексные данные, получение по меньшей мере одного слова согласно индексным данным и отображение по меньшей мере одного слова в порядке убывания частот слов;
если введен четырехклавишный код Wubi, отделение слов, четвертая клавиша кода Wubi которых не соответствует четвертой клавише четырехклавишного кода, от слов, полученных на основе первых трех клавиш четырехклавишного кода; затем получение всех слов, связанных с четырехклавишным кодом, и их отображение в порядке убывания частот слов.
Предпочтительно, при извлечении по меньшей мере одного слова из библиотеки базовых слов предусмотрено выполнение следующих этапов:
если введен одноклавишный или двухклавишный код Wubi, преобразование этого кода в индексные данные, получение по меньшей мере одного слова согласно индексным данным и извлечение и отображение по меньшей мере одного слова в порядке хранения слов в библиотеке базовых слов.
Как видно из описанных выше технических решений, после добавления библиотеки кэшированных слов в ней можно выполнять поиск согласно введенному пользователем коду. Когда пользователь вводит одноклавишный или двухклавишный код, отображаются часто используемые слова, коэффициент успешного поиска ожидаемого пользователем слова увеличивается и скорость ввода способа ввода Wubi повышается без поиска большого числа слов.
Поскольку для извлечения соответствующих слов из библиотеки кэшированных слов обрабатывается одноклавишный или двухклавишный код, при вводе пользователем такого кода отображаются часто используемые слова, коэффициент успешного поиска ожидаемого пользователем слова увеличивается и скорость ввода способа ввода Wubi повышается без поиска большого числа слов.
Краткое описание чертежей
На фиг.1 показана структурная схема системы ввода Wubi, соответствующей первому варианту изобретения.
На фиг.2 представлена блок-схема способа ввода Wubi, соответствующего первому варианту изобретения.
На фиг.3 показана структурная схема системы ввода Wubi, соответствующей второму варианту изобретения.
На фиг.4 представлена блок-схема способа ввода Wubi, соответствующего второму варианту изобретения.
Подробное описание изобретения
Первый вариант
На фиг.1 показана структурная схема системы ввода Wubi, соответствующей первому варианту изобретения. В систему ввода Wubi входят следующие компоненты: модуль 100 извлечения слов, библиотека 200 базовых слов и библиотека 300 кэшированных слов. Библиотека 200 базовых слов служит для хранения связанной со словами информации и индексных данных всех кодов Wubi. Библиотека 300 кэшированных слов предназначена для хранения информации по часто используемым словам, связанным с одноклавишными и двухклавишными кодами, и индексных данных этих слов. При вводе одноклавишного или двухклавишного кода модуль 100 извлечения слов извлекает из библиотеки 300 кэшированных слов по меньшей мере одно слово согласно индексным данным в этой библиотеке. При вводе трехклавишного или четырехклавишного кода модуль 100 извлечения слов извлекает из библиотеки 200 базовых слов по меньшей мере одно слово согласно индексным данным в этой библиотеке.
Модуль 100 извлечения слов состоит из модуля 110 вычисления индексов и модуля 120 вывода слов-кандидатов. Модуль ПО вычисления индексов служит для преобразования кода Wubi в индексные данные согласно введенному пользователем коду. Например, модуль ПО вычисления индексов преобразует одноклавишный или двухклавишный код в индексные данные для извлечения по меньшей мере одного слова из библиотеки 300 кэшированных слов, а также преобразует трехклавишный или четырехклавишный код в индексные данные для извлечения по меньшей мере одного слова из библиотеки 200 базовых слов. Модуль 120 вывода слов-кандидатов предназначен для получения, согласно индексным данным, по меньшей мере одного слова и последующего отображения и вывода этого по меньшей мере одного слова.
Библиотека 200 базовых слов состоит из области 210 базовых индексов кодирования и области 220 хранения базовых слов. Область 210 базовых индексов кодирования служит для хранения индексных данных информации по словам всех кодов Wubi. Область 220 хранения базовых слов предназначена для хранения информации по словам всех кодов Wubi. Первые три клавиши кода Wubi каждого слова используются в качестве индекса. Все слова хранятся в порядке, соответствующем их индексам. Слова, первые три клавиши кода Wubi которых одинаковы, хранятся в порядке убывания их частот.
Библиотека 300 кэшированных слов состоит из области 310 кэшированных индексов кодирования и области 320 хранения кэшированных слов. Область 310 кэшированных индексов кодирования служит для хранения индексных данных часто используемых слов. Область 320 хранения кэшированных слов предназначена для хранения информации по часто используемым словам. Первые две клавиши кода Wubi часто используемых слов используются в качестве индекса, и часто используемые слова хранятся в порядке убывания их частот.
Согласно данному варианту, область 210 базовых индексов кодирования и область 310 кэшированных индексов кодирования представляют собой непрерывные массивы. Для каждого элемента массива требуется 4 байта. Начальная позиция слов, связанных с каждым кодом Wubi в области 220 хранения базовых слов или в области 320 хранения кэшированных слов, записывается в массив.
Индексные данные, представляющие собой начальную позицию слов, хранятся в массиве. Соответственно, индексные данные, хранящиеся в области 210 базовых индексов кодирования, представляют начальную позицию слов в области 220 хранения базовых слов, а индексные данные, хранящиеся в области 310 кэшированных индексов кодирования, представляют начальную позицию слов в области 320 хранения кэшированных слов.
В области 220 хранения базовых слов и в области 320 хранения кэшированных слов хранится информация по словам, в частности коды Wubi слов, текст в Юникоде, значения частот слов и другие дополнительные сведения. Каждый код Wubi слова сравнивается с введенным пользователем кодом, чтобы определить, соответствуют ли они друг другу. Текст в Юникоде используется для отображения слова. Частота всех слов может определяться по статистическим данным или обновляться в реальном времени во время использования. Частота слов указывает частоту использования каждого слова, поэтому слово с более высокой частотой с большей вероятностью будет соответствовать ожиданиям пользователя. (Юникод - это стандарт кодирования текста, в котором каждый знак представляется двумя байтами. Это используемый в настоящее время на практике многоязычный код набора символов фиксированной длины два байта.)
Способ ввода Wubi, проиллюстрированный на фиг.2, содержит следующие этапы.
На этапе S10 принимают введенный код Wubi. Компоненты назначаются 25 клавишам клавиатуры (от "a" до "у") в соответствии с установленным правилом способа ввода Wubi. Слово, образуемое компонентами, может быть получено согласно буквам, введенным с помощью клавиш. В предложенном способе обработки принимают любую комбинацию из 1-4 введенных пользователем букв от "a" до "у".
На этапе S20 определяют количество клавиш, использованных при вводе кода Wubi. Если код Wubi был введен с использованием одной или двух клавиш, выполняют этап S30. Если код Wubi был введен с использованием трех или четырех клавиш, выполняют этап S50.
На этапе S30 из библиотеки 300 кэшированных слов извлекают по меньшей мере одно слово, а затем отображают это по меньшей мере одно слово. На этом этапе обрабатывают введенные коды Wubi, соответствующие одноклавишному или двухклавишному коду. Поскольку библиотека 200 базовых слов содержит большое число слов и при вводе одноклавишного или двухклавишного кода доля совпадающих кодов выше, для сбора более часто используемых слов предусмотрена библиотека 300 кэшированных слов. Часто используемые слова индексируются по введенным данным кода Wubi, включающим одну или две клавиши.
2
Первые две клавиши кода Wubi каждого слова в библиотеке 300 кэшированных слов используют в качестве индекса для поиска в этой библиотеке, поэтому индексы области 310 кэшированных индексов кодирования имеют значения в диапазоне от "a" до "уу" и массив содержит 25+25=650 элементов.
Следовательно, создаются взаимосвязи между одноклавишными или двухклавишными кодами Wubi и нижними индексами массива области 310 кэшированных индексов кодирования. strCode - введенный пользователем код Wubi длиной от 1 до 4. Index - преобразованный нижний индекс массива. Тогда:
Index=(strCode[0]-′a′)*(25+1)+1.
Если (длина кода >=2), Index+=(strCode [1]-′a′)+1.
При использовании представленной выше формулы получаются следующие результаты.
Код Wubi: a Нижний индекс: 1
Код Wubi: aa Нижний индекс: 2
Код Wubi: ab Нижний индекс: 3
…
Код Wubi: у Нижний индекс: 625
Код Wubi: уa Нижний индекс: 626
…
Код Wubi: уу Нижний индекс: 650
Согласно приведенной выше формуле, нижний индекс массива в области 310 кэшированных индексов кодирования можно получить на основе кода Wubi. Затем определяют начальную позицию по меньшей мере одного связанного с этим кодом Wubi слова в области 320 хранения кэшированных слов.
Поскольку слова в области 320 хранения кэшированных слов индексируют по первым двум клавишам их кодов Wubi и размещают в порядке их частот, модуль 100 извлечения слов извлекает по меньшей мере одно слово из библиотеки 300 кэшированных слов следующим образом.
Когда пользователь вводит одноклавишный или двухклавишный код, начальная позиция по меньшей мере одного связанного слова определяется по нижнему индексу массива, соответствующему введенному коду. Затем извлекается и отображается по меньшей мере одно слово согласно порядку хранения слов.
Поддерживается 10 слов, связанных с кодом Wubi "aa", в частности  (соответствует коду Wubi "aa"),  (соответствует коду Wubi "aawt"),  (соответствует коду Wubi "aahw"),  (соответствует коду Wubi "aatk"),  (соответствует коду Wubi "aaog"),   (соответствует коду Wubi "aaan"),  (соответствует коду Wubi "aauq"),  (соответствует коду Wubi "aadg"),  (соответствует коду Wubi "aaww") и "I" (соответствует коду Wubi "aaa"), и эти 10 слов хранят в библиотеке 300 кэшированных слов в порядке убывания их частот. При необходимости извлечь эти слова их можно извлечь в указанном выше порядке от начальной позиции, где хранится слово
При вводе более чем трехклавишного кода Wubi модуль 100 извлечения слов не извлекает никаких слов из библиотеки 300 кэшированных слов.
Согласно привычкам ввода, пользователи Wubi редко просматривают более двух страниц, чтобы найти слово-кандидат. В настоящем изобретении предпочтительно существует максимум десять слов, связанных с индексом, соответствующим каждому коду Wubi, и эти десять слов хранятся в библиотеке 300 кэшированных слов. Таким образом, в библиотеке 300 кэшированных слов хранится не более 650*10=6500 слов.
На этапе S50 из библиотеки 200 базовых слов извлекают по меньшей мере одно слово и отображают это по меньшей мере одно слово. На данном этапе обрабатывают введенные коды Wubi, соответствующие трехклавишным или четырехклавишным кодам. Когда пользователь вводит трехклавишный или четырехклавишный код, доля совпадающих кодов слов низкая, поэтому библиотека 200 базовых слов может индексироваться непосредственно.
2
3
Первые три клавиши кода Wubi каждого слова в библиотеке 200 базовых слов используют в качестве индекса для поиска в этой библиотеке, поэтому индексы области 210 базовых индексов кодирования имеют значения в диапазоне от "a" до "ууу" и массив содержит 25+25+25=16275 элементов.
Следовательно, устанавливаются однозначные соответствия между нижними индексами элементов массива и кодами Wubi.
Например, соответствия между кодами Wubi и нижними индексами массива области 210 базовых индексов кодирования могут устанавливаться следующим образом.
strCode - введенный пользователем код Wubi длиной от 1 до 4. Index - преобразованный нижний индекс массива. Тогда:
Index=(strCode[0]-′a′)*(252+25+1)+1.
Если (длина кода >=2), Index+=(strCode[1]-′a′)*(25+1)+1.
Если (длина кода >=3), Index+=(strCode[2]-′a′)+1.
При использовании представленной выше формулы получаются следующие результаты.
Код Wubi: a Нижний индекс: 1
Код Wubi: aa Нижний индекс: 2
Код Wubi: aaa Нижний индекс: 3
Код Wubi: aab Нижний индекс: 4
Код Wubi: aac Нижний индекс: 5
Код Wubi: aad Нижний индекс: 6
…
Код Wubi: у Нижний индекс: 15625
Код Wubi: уa Нижний индекс: 15626
…
Код Wubi: уad Нижний индекс: 15630
…
Код Wubi: ууу Нижний индекс: 16275
Представленные выше результаты приведены в обычном словарном
порядке. Согласно перечисленным выше соответствиям, нижний индекс массива в области 210 базовых индексов кодирования можно получить на основе кода Wubi. Затем определяют начальную позицию по меньшей мере одного связанного с этим кодом Wubi слова в области 220 хранения базовых слов. (Это существующая технология.)
Модуль 100 извлечения слов извлекает по меньшей мере одно слово из библиотеки 200 базовых слов следующим образом.
Когда пользователь вводит трехклавишный код, слова, первые три клавиши кода Wubi которых одинаковы, размещаются в порядке убывания их частот и затем извлекаются и отображаются в этом порядке. Например, если при вводе кода Wubi "fnt" частота слова соответствующего коду Wubi "fntj", - 1000, частота слова  соответствующего коду Wubi "fnta", - 500 и частота слова соответствующего коду Wubi "fntn", - 200, то слова сохраняются в библиотеке 200 базовых слов в указанном выше порядке и при необходимости их извлечения извлекаются и отображаются в этом порядке.
Когда пользователь вводит четырехклавишный код, слова, четвертая клавиша кода Wubi которых не соответствует четвертой клавише введенного пользователем четырехклавишного кода, отделяются от слов, полученных на основе первых трех клавиш четырехклавишного кода, а оставшиеся одно или несколько слов являются словами, связанными с четырехклавишным кодом.
Второй вариант
Поскольку доля совпадающих кодов способа ввода Wubi низкая и после добавления библиотеки 300 кэшированных слов доля совпадающих кодов при вводе одноклавишного или двухклавишного кода до некоторой степени уменьшается, коэффициент успешного поиска слова увеличивается. Вообще, вероятность получения ожидаемого слова при вводе двухклавишного кода очень высокая, т.е. вероятность того, что потребуется извлечь ожидаемое слово из библиотеки 200 базовых слов, очень низкая. Таким образом, первый вариант настоящего изобретения в большинстве случаев позволяет быстро извлекать требуемое слово. Однако пользователь не может помнить, какие слова находятся в библиотеке 300 кэшированных слов, а какие - нет. Поэтому по-прежнему существует вероятность того, что после ввода двухклавишного кода пользователь не сможет найти нужное слово даже при переходе на последнюю страницу. Согласно способу обработки, соответствующему описанному выше варианту изобретения, если требуемое слово в библиотеке 300 кэшированных слов не обнаруживается, пользователь должен продолжить нажатие клавиш для формирования трехклавишного или четырехклавишного кода, чтобы извлечь требуемое слово из библиотеки 200 базовых слов, или он должен завершить процесс извлечения. Поэтому по сравнению с первым вариантом, в настоящем варианте добавлен модуль 400 определения. Как видно из фиг.3, после ввода пользователем одноклавишного или двухклавишного кода модуль 400 определения определяет, есть ли в библиотеке 300 кэшированных слов ожидаемое пользователем слово. Если после просмотра последней страницы библиотеки 300 кэшированных слов пользователь продолжает перемещаться по страницам, значит, в этой библиотеке нет ожидаемого им слова.
Соответственно, как видно из фиг.4, по сравнению с первым вариантом, в данном варианте между этапом S30 и этапом S50 добавлен этап S40. На этапе S40 определяют, есть ли в библиотеке 300 кэшированных слов ожидаемое пользователем слово. Если такого слова там нет, выполняют этап S50. Если такое слово есть, его выводят согласно команде пользователя, после чего процесс извлечения слова завершают.
Если при вводе пользователем одноклавишного или двухклавишного кода в библиотеке 300 кэшированных слов нет ожидаемого пользователем слова, возможно, это слово используется редко и пользователь может либо продолжить перемещение по страницам для поиска нужного слова, либо нажать третью или четвертую клавишу.
В случае продолжения перемещения по страницам для поиска требуемого слова необходимо перейти к библиотеке 200 базовых слов для извлечения нужного слова, так как число слов, хранящихся в библиотеке 300 кэшированных слов, ограничено. То есть на этапе S50 выполняют также обработку вводимых одноклавишных или двухклавишных кодов. Поскольку слова в библиотеке 200 базовых слов размещаются в определенном порядке и индексируются по первым трем клавишам их кодов Wubi, при вводе пользователем одноклавишного или двухклавишного кода начальную позицию слов, связанных с этим кодом, определяют по нижнему индексу массива, соответствующему данному коду, и по меньшей мере одно слово, связанное с данным одноклавишным или двухклавишным кодом, извлекают и отображают согласно порядку хранения слов. Например, если пользователь вводит двухклавишный код "aa", связанные с этим кодом слова извлекаются и отображаются в порядке их кодов Wubi: от "aaa", "aab" до "aaу".
Если в библиотеке кэшированных слов нет требуемого слова, то независимо от выбранного пользователем действия необходимо перейти к библиотеке 200 базовых слов, чтобы найти нужное слово. Если требуемое слово обнаруживается, оно выводится согласно команде пользователя и процесс извлечения слова завершается.
Приведенное выше описание отражает только предпочтительные варианты настоящего изобретения и, хотя является конкретным и подробным, не может рассматриваться как ограничивающее объем охраны данного изобретения. Любая модификация, эквивалентная замена или улучшение, сделанные в духе и согласно принципам настоящего изобретения, должны охватываться объемом охраны данного изобретения.