使用 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
我正在尝试使用 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