我正在搜索斯洛文尼亚语的词干算法,我可以使用Sphinx搜索。
我想要实现的是例如在搜索'jabolka'时,我也想要包含'jabolko','jabolki','jabolk'等文档的结果。
我找到了一些关于斯洛文尼亚词干的存在的参考资料,但我找不到下载的地方,甚至没有在任何地方出售......
我遇到的另一个选项是在Sphinx源配置(http://sphinxsearch.com/docs/manual-0.9.9.html#conf-wordforms)中使用选项wordforms
,但是构建我自己的字典会太困难,所以我想知道是否有任何可公开访问的字典字典已经可以使用了吗?
如果没有斯洛文尼亚的词干分析器,有人可以建议其他方法来实现类似的搜索结果吗?
答案 0 :(得分:4)
我设法按照以下步骤编译斯洛文尼亚语词干:
stem_ISO_8859_2.sbl
stem_Unicode.sbl
(您必须找到ČŠŽĆ等斯洛文尼亚特殊字符的utf字符代码)编辑/ libstemmer文件夹中的两个.txt文件并添加斯洛文尼亚语的条目:
slovene UTF_8,ISO_8859_2 slovene,sl,slv
转到文件夹/ libstemmer并运行:
./mkmodules.pl modules.h src_c modules.txt ../mkinc.mak
./mkmodules.pl modules_utf8.h src_c modules_utf8.txt ../mkinc_utf8.mak
这将生成稍后编译所需的文件。
make
(来自解压缩文件的根目录)如果在编译期间没有错误,你应该有/ src_c文件夹和代码中的斯洛文尼亚语词干(旁边是其他人)
stem_UTF_8_slovene.c
stem_ISO_8859_2_slovene.c
...
打开最新的sphinx并将所有雪球项目中的文件复制到sphinx / libstemmer_c文件夹(libstemmer.o
和GNUmakefile
除外)
编译sphinx:
touch NEWS README AUTHORS ChangeLog
autoreconf --force --install
./configure --with-libstemmer
make
make install
如果一切顺利的话,你应该为斯芬克斯工作使用slovene stemmer,你只需要在sphinx index configuratiun中启用它(在我的Debian上它在/usr/local/etc/sphinx.conf中):< / p>
charset_type = utf-8
morphology = libstemmer_slovene
希望这有助于某人,我之前没有使用 autoconf 的经验,所以我花了一段时间来解决这个问题。
这个单一的限制器没有在http://snowball.tartarus.org正式发布,但从我的测试来看,它对我的项目来说已经足够好了。
答案 1 :(得分:1)
我不确定这是否符合您的要求,但我在Sphinx文档中提到了一个名为 spelldump 的工具:
spelldump是Sphinx包中的辅助工具之一。
用于提取使用的字典文件的内容 ispell或MySpell格式,可以帮助构建单词列表 字形 - 所有可能的形式都是为您预先构建的。
它需要“使用ispell或MySpell的字典文件” - 我找到了a reference to a Slovenian ispell dictionary file,这可能是合适的。
祝你好运!答案 2 :(得分:0)
我还试图为斯洛文尼亚语寻找词干提取器,但没有找到任何现有的解决方案。
我使用从未实现的 Snowball 版本作为灵感,在 Ruby 中构建了自己的词干分析器。
它在 Github 上以 hajkr/slovene-stemmer 的形式提供。它远非完美,但适用于大多数情况。