返回信息流【 以下文字转载自 SoftDesign 讨论区 】
发信人: coolwc (小包), 信区: SoftDesign
标 题: 支持通配符的英文字典
发信站: 北邮人论坛 (Mon Apr 5 14:05:30 2010), 站内
======================
功能
======================
根据模式字符串找出所有符合的英文单词(当然不仅限英文单词,跟构建词典时用的数据有关) 例如
a*b
a*b :
->abomb
->absorb
->adlib
->adsorb
->adverb
->alb
->aplomb
->arab
->atombomb
=======================
基本算法
=======================
首先将模式字符串分解为前缀字符串和后缀字符串,
用前缀字符串去跑trie树,得到所有匹配的结果,
从每个结果的结尾抽取长度为length(后缀字符串)的字符与后缀字符串进行比较,
如果不相同则舍弃,如果相同则对结果和模式字符串进行通配符匹配。
总的来说:前缀trie树剪枝-->后缀字符串比较剪枝-->通配符匹配
=======================
第三方库
=======================
trie树使用dawgdic库,通配符匹配使用wildcards库
======================
使用方法
======================
首先checkout第三方库
mkdir libs
cd libs
mkdir lib-32-thirdparty
cd lib-32-thirdparty
svn co http://silwings.gicp.net/repos/libs/lib-32-thirdparty/dawgdic
svn co http://silwings.gicp.net/repos/libs/lib-32-thirdparty/wildcards
cd ../../
svn co http://silwings.gicp.net/repos/wcdict
cd wcdict
make
./wcdict wcdict.dic
=====================
词典构建
=====================
二进制词典使用dawgdic-build构建
chmod u+x ../libs/lib-32-thirdparty/dawgdic/tools/dawgdic-build
../libs/lib-32-thirdparty/dawgdic/tools/dawgdic-build -g <输入文件> xxxx.dic
输入文件格式为按行存放的词条(英文单词或中文)
这是一条镜像帖。来源:北邮人论坛 / cpp / #37475同步于 2010/4/5
CPP机器人发帖
支持通配符的英文字典 (转载)
coolwc
2010/4/5镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。