Hunspell - Как указать нечувствительность к регистру для проверки орфографии в файле dic или aff

Я создаю собственную реализацию механизма проверки орфографии, используя в качестве отправной точки набор hunspell dic/aff с открытым исходным кодом. После чрезмерного количества взломов, гугления и т. д. я скопировал набор флагов, который, появляется, приводит к поиску без учета регистра (например, проверка орфографии проходит как "слово", так и "слово", когда в dic-файле присутствует только слово). Проблема в том, что я понятия не имею, ПОЧЕМУ это работает, и я не могу найти ничего в Интернете или в файлах, указывающих, как рассматривается дело. Синтаксис в моем диске, который работает:

word/1   1

Без этих флагов обработка регистра будет строгой.

Я упускаю возможность реализовать «решение», которое не могу объяснить. Кто-нибудь знает, как указать обработку регистра в наборе dic/aff, чтобы я мог понять, что на самом деле происходит?


person wolfmason    schedule 23.11.2015    source источник


Ответы (1)


По умолчанию предполагается, что записи в .dic файлах нечувствительны к регистру, поэтому при наличии записи word все следующие строки должны быть возвращены с правильным написанием: word, Word, WORD.

Если вы хотите ограничить слова одним регистром, вам нужно определить флаг с учетом регистра в файле .aff:

KEEPCASE X

Где X — это однобуквенный или двухбуквенный флаг или число (в зависимости от настройки ФЛАГА)

Итак, если бы я хотел разрешить только John (но не john или JOHN), я мог бы поместить в свой .dicfile следующую запись:

John/X

Я не знаю, почему /1 допускает нечувствительные к регистру результаты, особенно потому, что эта строка имеет плохой формат (единственное, что должно следовать после пробелов, — это идентификатор поля и его информация, например, po:noun)

Вы сказали, что создаете собственный движок, поэтому проблема будет в вашем движке, а не в файлах .dic/.aff.

person user0721090601    schedule 05.03.2016
comment
если есть AF, то /1 соответствует первому правилу AF - person muescha; 01.08.2020