Создание словаря Hunspell

Автор dziglo, 8 июля 2022, 20:52

0 Пользователи и 1 гость просматривают эту тему.

gabix

Кстати, у Вас там намешана кириллица и латиница. Из-за этого вполне могут быть проблемы. Лучше таки æ заменить на ӕ.

dziglo

Да, заменю. Это я здесь пример писал и латиницу применил (просто на компе раскладка с лат. æ), а в aff- и dic-файлах будет кириллическая æ.

dziglo

Добрый день.
Прошу помочь.
Почему-то приложения, проверяющие орфографию с помощью Hunspell (я использую Notepad++ и InDesign) не видят слова, полученные с помощью использования суффиксов/аффиксов. Видят они только те слова, которые есть в dic-файле (то есть без приращения префиксов и суффиксов).

Вот мои файлы aff, dic и файл с текстом (для теста):
три файла

Вроде бы все сделано правильно. Причем, если в aff-файле убрать группу суффиксов SFX s1, то слова в тестовом файле Hunspell начинает видеть. Почему так происходит.

И второй вопрос опять связан с апострофами. Применяю флаг префиксов
PFX a1 Y 1
PFX a1 ӕ ' ӕ
Проверяю с помощью программы ProofingToolGUI. Все норм:

mikekaganski

Цитата: dziglo от 23 августа 2022, 12:38И второй вопрос опять связан с апострофами. Применяю флаг префиксов
PFX a1 Y 1
PFX a1 ӕ ' ӕ
Проверяю с помощью программы ProofingToolGUI. Все норм

... и вопрос в чём?
С уважением,
Михаил Каганский

dziglo

Цитата: mikekaganski от 23 августа 2022, 12:48... и вопрос в чём?

В том, что Hunspell (точнее программы, использующие его, напр. Notepad++) распознают слова с апострофом как ошибочные.
Слово æвзаг норм (нет ошибки),
а 'взаг — ошибка.

mikekaganski

#35
По первому вопросу: обратите внимание на ответ #30. Сравните суффикс в строке 98 аффикс-файла, и суффикс в слове "цӕуӕг" в тестовом файле.

И ещё:
Цитата: man hynspell (5):Zero stripping or affix are indicated by zero.

Поэтому строка
ЦитироватьSFX s1 ын

должна быть

ЦитироватьSFX s1 ын 0
С уважением,
Михаил Каганский

mikekaganski

А по второму пункту - обратите внимание на настройку плагина DSpellCheck в Notepad++ (если, конечно, Вы его используете) - "Convert ' to '" на вкладке "Advanced". Оно преобразует символ перед проверкой.

Причём у меня не получается исправить заменой ' на ' в файле аффиксов - но отключение замены работает. Возможно, баг в плагине.
С уважением,
Михаил Каганский

dziglo

Цитата: mikekaganski от 23 августа 2022, 13:15должна быть

SFX s1 ын 0


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

mikekaganski

#38
Вот это у меня работает.

Кстати: Вы не забываете перезагрузить Notepad++ после изменения файлов? (На всякий случай - мало ли...)
С уважением,
Михаил Каганский

dziglo

Цитата: mikekaganski от 23 августа 2022, 14:50Вот это у меня работает.

Кстати: Вы не забываете перезагрузить Notepad++ после изменения файлов? (На всякий случай - мало ли...)

А что вы там сделали?
1)
SFX s1 ын
поменяли на
SFX s1 ын 0

2) латинскую æ поменяли на кириллическую ӕ

А еще что-нибудь поменяли?
Ваши файлы работают (понимают слова), я в своих файлах сделал эти две замены и все равно они не видят слова из тест-файла. (

mikekaganski

Ещё я убрал последнюю ӕ из

PFX a1 ӕ ' ӕ
Ну и учтите, что

Цитата: dziglo от 23 августа 2022, 18:15латинскую æ поменяли на кириллическую ӕ

производилось глобальной заменой, а не выборочно - более 150 замен ЕЯПП.

Очень удобно пользоваться утилитой типа WinMerge для поиска различий.
С уважением,
Михаил Каганский

dziglo

Цитата: mikekaganski от 24 августа 2022, 10:19производилось глобальной заменой, а не выборочно

Спасибо, получилось.

Цитата: mikekaganski от 24 августа 2022, 10:19Очень удобно пользоваться утилитой типа WinMerge для поиска различий.

Я установил плагин Notepad++ Compare. Вроде бы с такими же возможностями.

Пойду думать над апострофом.

mikekaganski

Цитата: dziglo от 24 августа 2022, 11:30Пойду думать над апострофом

Теоретически следовало бы использовать простой ASCII-апостроф ', и написать баг в DSpellCheck. Потому что иначе Вам нужно было бы учитывать как минимум две возможные формы апострофа в словаре (а может и больше) ... и в любом случае, без исправления бага, простая форма будет показана как ошибка.
С уважением,
Михаил Каганский

dziglo

Цитата: mikekaganski от 24 августа 2022, 11:57написать баг в

Но слово с апострофом не видит и Индизайн. Навряд ли дело в Notepad++.

mikekaganski

Абсолютно необязательно. Учитывая, что апостроф - не буквенный символ, вполне вероятно, что многие программы будут резать текст без правильного учёта таких символов, а hunspell будет получать такой обрезанный текст (без предшествующего апострофа) и правомерно не находить такую форму. Вы находитесь в зоне высочайшего риска нахождения множества однотипных багов в разных программах, похоже на то, как многие программы до сих пор не осознают, что code unit и code point - разные вещи (уже не говоря о наличии combined characters).
С уважением,
Михаил Каганский