[ID CC-CC2021] Короткие слова для грепа, для разных языков

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Здравствуйте.
Давно пользуюсь grep для присвоения атрибута No Break коротким словам в тексте, чтобы они никогда не висели в конце строки. Пересматривая тексты, параллельно формирую свой небольшой словарь коротких слов на разных языках, чтобы потом их использовать в других проектах.
Но любой словарь неполон, каждый раз приходится дополнять словари, это раздражает.
Кроме того, мне нельзя grep'ом выделять все слова длиной до 3 букв, только по заранее определенному списку слов, все остальное я просматриваю вручную после автоматики.

Вопрос: можно ли где-то посмотреть список всех коротких слов определенного языка, например, длиной до 3 букв? Возможно, где-то есть такие ресурсы, беглое гугление ничего не дало. Это позволило бы мне выбрать подходящие слова, скопировать в свой словарь и забыть об этой проблеме.
Для английского я пока обхожусь вот такой строкой
is|a|it|an|of|to|as|an|the|and|or|by
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Для примера, как это работает, вдруг кому пригодится:
  • если в проекте можно использовать греп-стиль, то:
    • создаем стиль символа с произвольным именем и основным атрибутом символа No Break;
    • в стиле абзаца создаем вложенный греп-стиль, параметр Apply Style - выбираем наш созданный стиль символа, параметр To text - вставляем вот такой греп
    • (?i)(?<= )(is|a|it|an|of|to|as|an|the|and|or|by)( |\. |, )+
  • если нельзя использовать греп-стиль, то через Ctrl+F просто проходимся по документу этим же грепом:
    • Find What - вставляем строку грепа
    • Change to: пустая строка
    • Change format: или выбираем свежесозданный стиль символа с атрибутом No Break, или ставим галочку No Break во вкладке Basic character format
 

Dmitrij M

15 лет на форуме
Сообщения
11 046
Реакции
5 944
Я сделал в sZam 5 наборы для нескольких языков.
Рекомендую покупку у автора.
 

kstati

иɯɐɯɔʞ
10 лет на форуме
Сообщения
1 138
Реакции
512
А смысл?
Можно же искать один-три словарных символа на границе слова с пробелом после.
Исключение дефиса в начале исключит отголоски 1-го, 21-й и т. п.
Код:
(?<!-)\b\w{1,3}\b\s
 
Последнее редактирование:
  • Спасибо
Реакции: Serbel

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Я сделал в sZam 5 наборы для нескольких языков.
Рекомендую покупку у автора.
А в этом скрипте есть готовые наборы слов?
Нужны наборы слов, сам скрипт не требуется, при необходимости пишу все необходимое сам
Вроде того, но здесь как-то многовато мусорных слов типа ki, ea, которые никогда не попадаются в нормальных текстах. Однако, спасибо за ссылку, некоторые двухбуквенные слова для английского можно почерпнуть
А смысл?
Можно же искать один-три словарных символа на границе слова с пробелом после.
Игнорирование дефиса в начале исключит отголоски
Код:
(?<!-)\b\w{1,3}\b\s
Нельзя применять атрибут ко всему подряд, только по правилу белого списка - только указанные слова; тексты тоже очень разные, и языков много (27 языков, в основном европейские)
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Идея: есть вариант раздербанить какой-то словарь спеллчекинга для OpenOffice, например. Вдруг там есть такие списки. Может, кто пробовал?
 

kstati

иɯɐɯɔʞ
10 лет на форуме
Сообщения
1 138
Реакции
512
Нельзя применять атрибут ко всему подряд, только по правилу белого списка - только указанные слова; тексты тоже очень разные, и языков много (27 языков, в основном европейские)
Сами себе создаёте проблемы. Дерзайте. Проще идти от черного списка исключений.
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Сами себе создаёте проблемы. Дерзайте. Проще идти от черного списка исключений.
Приходится работать в ограниченных рамках, поэтому подходит только вайтлист.

По теме: таки да, словари OpenOffice содержат все распространенные слова языка. А уж распарсить такой словарь и достать из него только слова от 1 до 3 букв, думаю, не составит труда - словарь выглядит как обычный текст.
Edit: поделюсь итогами, когда сделаю список на примере какого-то одного языка
 
Последнее редактирование:

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Языков у меня 27, придется играться со словарями.

Предварительные результаты - русский словарь разобрался скриптом, выдает почти 500 слов длиной до 3 букв. Мусора много, но терпимо, можно перебрать, если делать набор слов для частого использования на дальнюю перспективу.
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Итак, вот такой метод работает:
  1. Качаем словарь нужного языка из репозитория Апача, скачанный файл имеет расширение .oxt;
  2. Любым архиватором вытаскиваем из него файл .dic;
  3. Пропускаем полученный словарь через скрипт внизу (язык AutoIt, понадобится скачать пакет языка)
  4. Удаляем мусорные слова, формируем списки.
Скрипт выделяет только слова длиной до 3 символов включительно, без служебных тегов словаря и в нижнем регистре.


Код:
$FilePath = FileOpenDialog("Выберите словарь OpenOffice для извлечения коротких слов", @ScriptDir, "Файлы словарей OpenOffice (*.dic)")
If $FilePath = "" then Exit

$h = FileOpen($FilePath, 0)
$hO = FileOpen("parsed.txt", 2)

While 1
    $Line = FileReadLine($h)
    If $Line = "" then ExitLoop
    If StringLen($Line) < 4 and StringIsLower($Line) and Not StringInStr($Line, "/") then FileWriteLine($hO, $Line);
WEnd

FileClose($h)
FileClose($hO)
 
Последнее редактирование:

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
OpenOffice идет лесом, словари Hunspell есть и в самом индизе, причем коллекция намного полнее.
Искать здесь:
C:\Program Files\Adobe\Adobe InDesign CC 2019\Resources\Dictionaries\LILO\Linguistics\Providers\Plugins2\AdobeHunspellPlugin\Dictionaries
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
не замечал чтобы в английской литературе кто-то прибивал короткие слова
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
По процедуре, в рамках которой работаю я, короткие слова нужно переносить, если выравнивание не по ширине