使用 whoosh 创建自定义分析器

Creating custom analyzers using whoosh

我正在尝试使用 Whoosh 实现具有深度 NLP 管道的语义搜索引擎。目前,我只有词干分析器,但我需要为我的分析器添加词形还原和词尾标记。

 schema = Schema(id=ID(stored=True, unique=True), stem_text=TEXT(stored= True, analyzer=StemmingAnalyzer()))

我想知道如何将自定义分析器添加到我的架构中。

您可以编写自定义词形还原过滤器并集成到现有的 whoosh 分析器中。引用自 Whoosh docs:

Whoosh does not include any lemmatization functions, but if you have separate lemmatizing code you could write a custom whoosh.analysis.Filter to integrate it into a Whoosh analyzer.

您可以通过组合分词器和过滤器来创建分析器:

my_analyzer = RegexTokenizer() | LowercaseFilter() | StopFilter() | LemmatizationFilter()

或通过向现有分析器添加过滤器:

my_analyzer = StandardAnalyzer() | LemmatizationFilter()

您可以像这样定义过滤器:

def LemmatizationFilter(self, stream):
    for token in stream:
        yield token