gpt4 book ai didi

Django+干草堆+嗖嗖: how to deal with language inflection

转载 作者:行者123 更新时间:2023-12-02 07:51:14 26 4
gpt4 key购买 nike

欧洲的许多语言都是屈折的。这意味着一个单词可以在文本中以多种形式书写。例如,波兰语“komputer”中的“计算机”一词有多种形式:“komputera”、“komputerowi”、“komputerem”、“komputery”等。

我应该如何正确使用 django+haystack+whoosh 来处理语言变形?

每当我搜索任何形式的“komputer”、“komputera”、“komputerowi”时,我的意思都是相同的 ->“komputer”。

在 NLP 中,有一种基于词干提取(切割后缀)或将形式转换为基本形式(“komputerowi”=>“komputer”)的基本方法。有一些图书馆可以提供帮助。

我的第一个想法是准备一些特殊的模板过滤器,它将给定变量中的每个可识别单词转换为具有基本形式而不是形式的文本。然后我可以在 django+haystack 的搜索索引模板中使用它。如果搜索查询也将在 whoosh 引擎中进行评估之前进行转换,这应该会很好。参见示例:

haystack search index template:
{{some_indexed_text|convert_to_base_form_filter}}

text to index: "Nie ma komputera" => "Nie ma komputer" <- this is really indexed
search query: "komputery" => "komputer" <-- this will match

但我不认为这是这个问题的“优雅”解决方案,其他一些功能也不起作用 - 比如提出拼写错误的建议。

那么 - 我应该如何解决这个问题?也许我应该使用除了嗖嗖之外的其他搜索引擎?

最佳答案

我有一个非常相似的问题,所以我希望我能提供帮助。

默认情况下,Whoosh 仅针对英语进行词干提取。
要为另一种语言实现词干提取,首先看一下内部:

/your_path_to_whoosh/whoosh/lang/analysis.py

这是 StemmingAnalyzer (默认分析器)已定义并且是一个很好的起点。 stem函数,从 porter.py 导入, 是另一个重要的地方。

所以,这三个步骤是:
  • 实现您自己的词干提取函数,将 porter.py 中的词干函数和任何语法和语言引用资料作为引用,以获取正确的规则。
  • 实现你自己的分析器作为引用StemmingAnalyzer里面 analysis.py .该文件有大量文档,因此您浏览它应该没有问题。你会看到 StemmingAnalyzer基本上是 Tokenizer 的链接使用正则表达式匹配单词、小写过滤器和基本上调用上述词干函数的词干过滤器。你会看到 StemFilter将词干函数作为参数,因此您不必重新实现过滤器。
  • 在模式创建时传递您全新的分析器功能,请参见此处:http://files.whoosh.ca/whoosh/docs/latest/schema.html#creating-a-schema

  • 我希望这有帮助!

    关于Django+干草堆+嗖嗖: how to deal with language inflection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688432/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com