Как преобразовать словарь Aspell в простой список слов?
Я хочу получить список всех слов из словаря Aspell. Я скачал aspell и aspell польский словарь, а затем распаковал его, используя:
preunzip pl.cwl
я получил pl.wl
:
...
hippie
hippies
hippiesowski/bXxYc
hippika/MNn
hippis/NOqsT
hippisiara/MnN
hippiska/mMN
hippisowski/bXxYc
...
но они появляются с суффиксом как /bXxYc
или же /MNn
, Эти суффиксы определены в pl_affix.dat
, который выглядит как
...
SFX n Y 5
SFX n a 0 [^ij]a
SFX n ja yj [^aeijoóuy]ja
SFX n a 0 [aeijoóuy]ja
SFX n ia ij [^drt]ia
SFX n ia yj [drt]ia
...
Это связано с склонением и сопряжением. Как я могу добавить в первый список все формы (со всеми соответствующими суффиксами, как определено в .dat
файл)?
Кстати: мне нужен этот список для проверки орфографии jazzy
,
2 ответа
Дайте это попробовать:
aspell -d pl dump master | aspell -l pl expand > my.dict
Отредактировано, чтобы соответствовать исправлениям в комментарии.
Для некоторых языков, например итальянского, расширения недостаточно, и вам придется выполнить дополнительную обработку, чтобы получить список простых слов.
Эту команду я использую для получения списка слов на итальянском языке (обратите внимание, что ее выполнение займет некоторое время):
aspell -d it dump master | aspell -l it expand | sed "s/\w*'//g;s/ \+/\n/g" |
awk '{ print tolower($0) }' | uniq > wordlist.txt
Разрыв трубопровода
Расширение Аспелла:
-
aspell -d it dump master | aspell -l it expand > list1
a
ab
abaco Quell'Abaco quell'Abaco quell'abaco Quest'Abaco quest'Abaco quest'abaco D'Abaco d'Abaco d'abaco Coll'Abaco coll'Abaco coll'abaco Sull'Abaco sull'Abaco sull'abaco Nell'Abaco nell'Abaco nell'abaco Dall'Abaco dall'Abaco dall'abaco Dell'Abaco dell'Abaco dell'abaco All'Abaco all'Abaco all'abaco L'Abaco l'Abaco l'abaco Bell'Abaco bell'Abaco bell'abaco Brav'Abaco brav'Abaco brav'abaco abachi
Abacuc
...
Удалите все символы до апострофа (включены):
-
sed "s/\w*'//g" list1 > list2
a
ab
abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco Abaco Abaco abaco abachi
Abacuc
...
Разрыв линий на пробелах:
-
sed "s/ \+/\n/g" list2 > list3
a
ab
abaco
Abaco
...
Все содержимое строчными буквами, чтобы использоватьuniq
без сортировки:
-
awk '{ print tolower($0) }' list3 > list4
a
ab
abaco
abaco
...
Удалить дубликаты:
-
uniq list4 > list5
a
ab
abaco
abachi
...