我正在尝试使用Whoosh实现具有深度NLP管道的语义搜索引擎。目前,我只有干扰分析仪,但我需要为我的分析仪添加lemmatizing和pos标记。
schema = Schema(id=ID(stored=True, unique=True), stem_text=TEXT(stored= True, analyzer=StemmingAnalyzer()))
我想知道如何在我的架构中添加自定义分析器。
答案 0 :(得分:1)
您可以编写自定义的词形还原过滤器并集成到现有的飞行员分析器中。引自Whoosh docs:
飞快移动不包含任何词形还原功能,但如果你有 单独的lemmatizing代码,你可以写一个自定义
whoosh.analysis.Filter
将其整合到Whoosh分析仪中。
您可以通过将标记生成器与过滤器组合来创建分析器:
my_analyzer = RegexTokenizer() | LowercaseFilter() | StopFilter() | LemmatizationFilter()
或通过向现有分析器添加过滤器:
my_analyzer = StandardAnalyzer() | LemmatizationFilter()
您可以定义类似的过滤器:
def LemmatizationFilter(self, stream):
for token in stream:
yield token