FarNet.RightWords: Spell-checker and thesaurus

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

Latest post of the previous page:

Попробовал, как сам предлагал. Если WordPattern содержит группы, то эти группы
просто удаляются. Выражение для нашей задачи проверки с & может быть таким:

Code: Select all

[\p{Lu}\p{Ll}](?:\p{Ll}|(&))+
Может, и проще можно, но мне пока это не надо.

Мне нравится вариант, что все в *одной* настройке. Это позволит при желании
относительно легко переключать выражения (комментарии-то в выражении разрешены,
можно просто комментариями и переключать, а все шаблоны будут там под рукой,
по одному на строку, одна строка раскомментирована).

Это не идеальный вариант, наверное. Но соотношение простоты и практичности,
по-моему, хорошее. Выложить прямо сразу не выйдет из-за разборок с FarNet ->
3.5 (готово, но сыро, обкатываю).
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

То-есть, паттерн, скажем, в текущий момент для проверки языковых файлов .lng может выглядеть так:

Code: Select all

# Default
# [\p{Lu}\p{Ll}]\p{Ll}+

# With ampersands
[\p{Lu}\p{Ll}](?:\p{Ll}|(&))+
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by HaRT »

Если уж на то пошло, то может лучше безымянные группы всё-таки оставлять, а вот именованные (или даже именованные по предопределённому шаблону) — выкидывать? А то ведь пользователи замучаются каждый раз “?:” добавлять; я уж молчу о тех случаях, когда нужны back references.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

back references? А реальный пример можно?

А вот про "?:" - это очень хорошо, что пользователь теперь обязан добавлять, это производительности помогает, чтобы лишние для дела группы не генерились и не ели время. Пусть лучше на это пользователь ворчит, чем на лаги при расцветке.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

1.0.10
Не забудьте обновить FarNet до 4.5.0.
Разные мелочи, но главное - поддержка проверки слов со "встроенным шумом" типа символов "&" в .lng файлах.
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by HaRT »

NightRoman wrote:это производительности помогает, чтобы лишние для дела группы не генерились и не ели время. Пусть лучше на это пользователь ворчит, чем на лаги при расцветке.
Откуда такая информация? Есть измерения, подтверждающие заметную разницу при обработке выражений с группами и без? Я-то привык считать, что подобные вещи требуют время только во время компиляции регэкспа. Впрочем, если они у Вас там на каждый чих перекомпилируются, то возможно; только вот решать такую проблему надо иначе.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

HaRT
Откуда такая информация?
Знание .NET кода, в том числе ядра (ILSpy рулит). И здравый смысл. Теперь мы работаем с группами, раньше нет. Чем меньше групп у нас будет в результате, тем лучше.

Есть измерения, подтверждающие заметную разницу при обработке выражений с группами и без?
У меня нет. Если придется померять и я не забуду, что был интерес, приведу результаты, само-собой.
Я-то привык считать, что подобные вещи требуют время только во время компиляции регэкспа.
Просто считать или уже померяно? Имею моральное право спросить, однако :)
Впрочем, если они у Вас там на каждый чих перекомпилируются, то возможно; только вот решать такую проблему надо иначе.
Здравое рассуждение. Но они у нас не на каждый чих перекомпилируются, все с этим в порядке.

EDIT: убрал замечание про не ленивую коллекцию, оно неверно или неточно: само свойство Groups ленивое, но если хоть раз обратились к нему, то генерится вся коллекция групп целиком.
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by HaRT »

NightRoman wrote:Чем меньше групп у нас будет в результате, тем лучше.
Пока что больше похоже на экономию на спичках.
NightRoman wrote:Если придется померять и я не забуду, что был интерес, приведу результаты, само-собой.
Я считаю, что до объективных измерений (или хотя бы субъективных наблюдений) оптимизировать такие вещи на уровне интерфейса настроек — сильно преждевременно.
NightRoman wrote:Просто считать или уже померяно?
Самолично не измерял, но имею представление, как работает разбор регулярных выражений — в результате компиляции выражения строится конечный автомат, который потом молотит входные строки (в типовом случае — за линейное по их длине время). И я никак не могу представить, как бы на быстродействие могли повлиять группы, на которые в выражении нет ссылок.
NightRoman wrote:они у нас не на каждый чих перекомпилируются, все с этим в порядке.
Это не может не радовать.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

HaRT
Смотри мое примечание в том ответе, кой в чем был неточен.

Критика (или соображения) принята и обдумана, спасибо. Теперь к делу, что именно не так, и как предлагается сделать лучше? И если есть предложения, то почему это будет лучше?
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by HaRT »

NightRoman wrote:что именно не так
В нынешней реализации у пользователя нет возможности в WordPattern использовать группы по прямому назначению (в нашем случае — при отсутствии замены — вроде только для back reference).
NightRoman wrote:как предлагается сделать лучше?
Два варианта:
1. Нумерованные группы оставлять, именованные — выкидывать.
2. Группы, именованные по предопределённому шаблону (например, “cut###”) выкидывать, все прочие оставлять.
NightRoman wrote:почему это будет лучше?
Потому что (а) снимет неоправданное ограничение, не уменьшив мощность механизма, и (б) не надо будет в каждой скобке писать “?:”.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

В нынешней реализации у пользователя нет возможности в WordPattern использовать группы по прямому назначению (в нашем случае — при отсутствии замены — вроде только для back reference).
Да. И это никому пока не мешает. Будет мешать (юз-кейсы?), будем думать. И вряд ли тут кого напугает ломка интерфейсов или регулярок, если это на пользу делу. Не та аудитория. И модуль-то молодой совсем, 2 недели, устаканивается пока.

Ну какие back reference? У нас не абстрактная задача парсинга, надо просто выделить куски, похожие на слова. Мы, что хотим проверять только слова, у которых первый и последний слог одинаковы (просто пример, когда back reference нужен)?
не надо будет в каждой скобке писать “?:”
А чем именованные группы лучше/проще, чем “?:”? Шило на мыло, имхо. Синтаксис именованных групп я вечно забываю. Поэтому, как для автора, мне это предложение особенно не по душе.

Агрументов за/против недостаточно (либо равновесие, либо хуже). Будут еще, или будут жалобы/предложения, будем смотреть, решать, и т.п.
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by HaRT »

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

С “?:” существенное отличие в том, что в нынешней реализации это надо писать в каждой круглой скобке, которую хочешь сохранить. А в предлагаемом мной подходе, наоборот, имя надо будет давать только тем группам, которые хочешь выкинуть (я исхожу из того, что их меньшинство).

А что касается “синтаксис вечно забываю” — так это очень довод очень сомнительной силы. Если бы применяли, не забывали бы — “use it or lose it”.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

(я исхожу из того, что их меньшинство).
По моему опыту (1 пример :), а у тебя?) это не так. У меня задействовано именно простейшим способом из возможных. .restext (аналог .lng) мне надо проверять. Дефолтный вариант вообще скобок не имеет.
Если бы применяли, не забывали бы — “use it or lose it”.
Именно! Эти именованные группы (мне) крайне редко нужны. Но регулярки я часто применяю. И уж capturing|not-capturing группы не забываю никак, это основы.
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by HaRT »

Во, мне только что пришло в голову, когда реально может понадобиться замена:
Проверяем HTML на каком-нибудь европейском языке с широким использованием диакритики (например, французском). Там запросто могут в изобилии встречаться Character entity references вроде “Á” и т.п. Для целей проверки будет необходимо заменять их на соответствующие Юникодные символы.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by NightRoman »

О, вот это юз-кейс (на практике будет мизер, наверное, но все равно). Но замену, когда попросят, будем все равно как-то по-другому, отдельной настройкой решать. Да и для этого примера я даже сомневаюсь, что регулярки - это удачное решение, может, иначе как-то будет и проще.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: FarNet.RightWords: Spell-checker and thesaurus

Post by John Doe »

Регулярки это универсальное решение.
Странно будет городить на ровном месте какие-то отдельные специфические настройки. Всё-таки фар маргинальный продукт.
Post Reply

Return to “Обсуждение плагинов”