Member 11485559 Ответов: 1

Отредактировано: добавление текстового предсказания/предложений в виртуальную клавиатуру


Я разработал экранную виртуальную клавиатуру. Я хочу добавить дополнительную функциональность добавления текстовых предложений с каждым словом, чтобы пользователь мог легко выбрать нужное ему слово, не набирая его целиком. Я хочу знать, как я должен достичь этой функциональности с помощью C#? Я разработал свою клавиатуру на Windows Form и хочу отображать предлагаемые слова в этой форме, чтобы пользователь мог их выбрать. Пожалуйста помочь.


P.S. Я не знаю, объясняет ли это мою проблему или мне нужно добавить больше деталей, прежде чем мой вопрос будет сообщен?

1 Ответов

Рейтинг:
12

Sascha Lefèvre

Вам, очевидно, понадобится словарь слов (словарь не в смысле класса). Я бы предложил OpenOffice-словари (лицензия LGPL):
https://wiki.openoffice.org/wiki/Dictionaries[^]

Чтобы иметь возможность показать те совпадающие слова, которые чаще всего встречаются в языке в верхней части списка предложений, вам также понадобятся данные о частотах слов. Лучший источник для этого, который я знаю, находится здесь:
http://corpora.informatik.uni-leipzig.de/download.html[^]
(Выдержка из условий использования: коммерческое использование данных требует предварительного письменного согласия Департамента обработки естественного языка Лейпцигского университета.)

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

Тогда вам придется:
- Загрузите эти слова и подсчитайте их частоту.
- Реализовать алгоритм, который как можно быстрее ищет те слова, которые начинаются с уже введенной пользователем подстроки (см. "двоичный поиск").
- Сортируйте совпадающие слова по их частоте и отображайте их для выбора.


Member 11485559

Большое вам спасибо за ваш отклик и помощь. Это действительно помогло мне выполнить мою задачу. Спасибо.

Sascha Lefèvre

Пожалуйста! Спасибо за ваши отзывы и за то, что приняли мой ответ, рад, что смог помочь :)

Member 13267055

пожалуйста, пришлите мне код по адресу marc_habib_93@hotmail.com