Проверьте, является ли слово реальным - PullRequest
0 голосов
/ 04 февраля 2012

Я разрабатываю приложение для Windows Phone, которое требует, чтобы пользователи вводили правильные слова, которые были бы в стандартном английском словаре. Однако я немного запутался в том, как проверить, что слово реально. Кто-нибудь знает хороший словарный API для взаимодействия, или мне нужно будет добавить список слов в мое приложение в виде текстового файла?

1 Ответ

2 голосов
/ 04 февраля 2012

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


Относительно того, как вы реализуете эту функцию, если вы не можете использовать сторонний продукт, проблема с английским языком заключается в любом другом языке :-) Я имею в виду, что это не обязательно было согласовано с самого начала, и оно имеет «поднял» слова из десятков других языков.

Следовательно, нет действительно приличных правил , которые могли бы сказать вам, является ли слово действительным.

Вам потребуется поддерживать словарь, и, учитывая причудливые углы языка, вам, вероятно, придется ограничить его общими словами (и, если пробел является проблемой, короткими). ​​


И, кстати, если вы делаете переход на самописный подход на основе словаря, вы можете воспользоваться небольшим трюком, который я выучил много лет назад.

Вы можете закодировать каждое слово как:

  • количество символов (байт), общее с последним; и
  • новый финал.

Итак, список слов

HERE            would encode as    THIS
-------------                      ----
sanctimonious                      0,sanctimonious
sanction                           6,on
sanguine                           3,guine
trivial                            0,trivial

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

Для ускорения поиска вы можете также сохранить в памяти таблицу из 26 записей, в которой хранятся начальные смещения для слов, начинающихся с a, b, c, ..., z. Слова с этими смещениями всегда будут автоматически иметь 0 в качестве первого байта, поскольку они не имеют общих букв с предыдущим словом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...