欧洲的许多语言都是屈折的。这意味着一个单词可以在文本中以多种形式书写。例如,波兰语“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
但我不认为这是这个问题的“优雅”解决方案,其他一些功能也不起作用 - 比如提出拼写错误的建议。
那么 - 我应该如何解决这个问题?也许我应该使用除了嗖嗖之外的其他搜索引擎?