3

我正在搜索可以与 Sphinx 搜索一起使用的斯洛文尼亚语词干算法。

我想要实现的是例如在搜索“jabolka”时,我还想要包含“jabolko”、“jabolki”、“jabolk”等的文档的结果。

我找到了一些关于斯洛文尼亚词干分析器存在的参考资料,但我找不到在哪里下载它,它甚至没有在任何地方出售......

我遇到的另一个选项是wordforms在 Sphinx 源配置(http://sphinxsearch.com/docs/manual-0.9.9.html#conf-wordforms)中使用选项,但是构建我自己的字典太难了,所以我'我想知道是否已经有任何可公开访问的词典?


如果斯洛文尼亚语词干分析器不可用,有人可以建议一些其他方法来实现类似的搜索结果吗?

4

3 回答 3

4

我设法通过以下步骤编译了斯洛文尼亚语词干分析器:

  1. 下载http://snowball.tartarus.org/dist/snowball_code.tgz(雪球源代码)并解压
  2. 从http://snowball.tartarus.org/archives/snowball-discuss/0725.html下载斯洛文尼亚算法,并将其保存到文件夹 /algorithms/slovene 中步骤 1 的解压项目。文件名必须是stem_ISO_8859_2.sbl
  3. 算法采用 ISO 编码,所以我将其转换为 UTF8 并将其保存为stem_Unicode.sbl(您必须为斯洛文尼亚特殊字符(如ČŠŽĆ)找到 utf 字符代码)
  4. 编辑 /libstemmer 文件夹中的两个 .txt 文件并添加斯洛文尼亚语条目:

    slovene         UTF_8,ISO_8859_2        slovene,sl,slv
    
  5. 编辑 /GNUmakefile 并添加 slovene(一次用于 utf 语言列表,一次用于 ISO_8859_2_algorithms)
  6. 转到文件夹 /libstemmer 并运行:

    ./mkmodules.pl modules.h src_c modules.txt ../mkinc.mak
    ./mkmodules.pl modules_utf8.h src_c  modules_utf8.txt ../mkinc_utf8.mak
    

    这将生成稍后编译所需的文件。

  7. 运行make(从解压文件的根目录)
  8. 如果在编译过程中没有错误,你应该有 /src_c 文件夹和斯洛文尼亚词干分析器的代码(在其他人旁边)

    stem_UTF_8_slovene.c
    stem_ISO_8859_2_slovene.c
    ...
    
  9. 解压最新的 sphinx 并将所有文件从你的雪球项目复制到 sphinx /libstemmer_c 文件夹(不包括libstemmer.oGNUmakefile

  10. 编译狮身人面像:

    touch NEWS README AUTHORS ChangeLog
    autoreconf --force --install
    ./configure --with-libstemmer
    make
    make install
    
  11. 如果一切顺利,你应该让斯洛文尼亚词干分析器用于 sphinx 工作,你只需要在你的 sphinx 索引配置中启用它(在我的 Debian 上,它位于 /usr/local/etc/sphinx.conf 中):

    charset_type = utf-8
    morphology = libstemmer_slovene
    

希望这对某人有所帮助,我以前没有使用autoconf的经验,所以我花了一段时间才弄清楚这一点。

这个斯洛文尼亚语词干分析器没有在http://snowball.tartarus.org上正式发布,但从我的测试来看,它对我的​​项目来说已经足够好了。

于 2012-03-05T14:04:53.143 回答
1

我不确定这是否会满足您的要求,但我 在 Sphinx 文档中看到了对名为spelldump的工具的引用:

spelldump 是 Sphinx 包中的辅助工具之一。

它用于提取使用 ispell 或 MySpell 格式的字典文件的内容,这有助于为 wordforms 构建单词列表 - 所有可能的形式都是为您预先构建的。

http://sphinxsearch.com/docs/current.html#ref-spelldump

它需要“使用 ispell 或 MySpell 的字典文件” - 我找到了对斯洛文尼亚 ispell 字典文件的引用,这可能是合适的。

于 2012-01-11T17:34:20.440 回答
0

我还试图为斯洛文尼亚语寻找词干分析器,但没有遇到任何现有的解决方案。

我使用从未实现的Snowball版本作为灵感,在 Ruby 中构建了自己的词干分析器。

它在 Github 上作为hajkr/slovene-stemmer可用。它远非完美,但它适用于大多数情况。

于 2021-01-03T09:13:14.893 回答