如何将 aspell 词典转换为简单的单词列表?

如何将 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

答案1

尝试一下:

aspell -d pl dump master | aspell -l pl expand > my.dict

已编辑以匹配评论中的更正。

答案2

对于某些语言,例如意大利语,扩展是不够的,您将必须进行更多的处理才能获得简单单词的列表。

这是我用来获取意大利语单词列表的命令(请注意,执行它需要一些时间):

aspell -d it dump master | aspell -l it expand | sed "s/\w*'//g;s/ \+/\n/g" |
awk '{ print tolower($0) }' | uniq > wordlist.txt

打破管道

Aspell 扩展:

  • 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
...

相关内容