首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hunspell/Aspell数据转换为人类可读的词形变化列表

Hunspell/Aspell数据转换为人类可读的词形变化列表
EN

Stack Overflow用户
提问于 2013-07-24 18:17:47
回答 1查看 395关注 0票数 4

有没有一种简单的方法可以从Hunspell/Aspell字典数据文件中生成人类可读的词形变化列表?

例如,我想生成以下输出(针对不同的语言):

..。

书,书

书,书,预订,预订

..。

走,走

..。

我查看了Hunspell/Aspell文档,但找不到可以做到这一点的API调用。

EN

回答 1

Stack Overflow用户

发布于 2015-01-19 02:59:04

有一个命令行可以做到的方法,但是它的输出格式不是你想要的那样。如果需要,您也可以手动执行此操作,不过只需使用regex编写一些简单的脚本即可。

每组词缀的格式为

代码语言:javascript
复制
TYPE TAG REMOVE REPLACE MATCH

这样,当TAG.dic文件中给定单词中/后面的内容相匹配时,您可以执行以下操作(假设您已经去掉了/...中的单词):

如果( $word =~ /$match$/) $word =~ s/$remove$/$replace/;

注意与行尾/单词匹配的$。如果是前缀,则使用^进行调整。

有三点需要注意:

  1. 直接从.aff文件获取$match在几乎所有情况下都等同于标准正则表达式。有一些小的变化,如果匹配类似于[abc-gh],你最好将它改为(a|b|c|-|g|h)[abcgh-] (hunspell不使用连字符作为元字符),否则它将被解释为[abcdefgh] (标准正则表达式)。对于否定的字符类,您的选择是手动将-移动到表达式的末尾(例如,将[^a-df]移动到[^adf-]或在后面使用负外观。
  2. 如果$replace为0,则应将其更改为空字符串。
  3. 如果您的结果以/...结尾,则需要重新处理它,因为它有一个双重后缀。

注意。根据我的粗略计算,我正在编写的词典可能有超过5000万个单词正在形成(如果超过1亿个单词,我也不会感到惊讶)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17831145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档