【问题标题】:Slovenian stemmer for SphinxSphinx 的斯洛文尼亚语词干分析器
【发布时间】:2012-02-01 14:20:12
【问题描述】:

我正在搜索可用于 Sphinx 搜索的斯洛文尼亚语词干算法。

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

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

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


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

【问题讨论】:

  • 我在tartarus snowball mail archive 找到了斯洛文尼亚语词干分析器。它是雪球格式,但似乎不完整。我也不知道如何将它与 Sphinx 一起使用。

标签: php search full-text-search sphinx stemming


【解决方案1】:

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

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

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

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

它需要“使用 ispell 或 MySpell 的字典文件” - 我找到了 a reference to a Slovenian ispell dictionary file,这可能是合适的。

【讨论】:

  • 所提供链接上的所有资源链接都已失效
【解决方案2】:

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

  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 并添加斯洛文尼亚语(一次用于 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 工作配备 slovene stemmer,您只需在 sphinx 索引配置中启用它(在我的 Debian 上,它位于 /usr/local/etc/sphinx.conf 中):

    charset_type = utf-8
    morphology = libstemmer_slovene
    

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      相关资源
      最近更新 更多