pylucene的自定义标记器,它仅基于下划线标记文本(保留空格)

2024-10-02 16:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是pylucene的新手,我正在尝试构建一个自定义的分析器,它只根据下划线标记文本,也就是说,它应该保留空白。 示例:“Hi\u this is_awesome”应标记为[“Hi”,“this is”,“awesome”]标记。在

从各种代码示例中我了解到,我需要重写CustomTokenizer的incrementToken方法,并编写一个CustomAnalyzer,其中TokenStream需要使用CustomTokenizer后跟一个小写filter来实现相同的效果。在

我在实现incrementToken方法和连接点(通常情况下,分析程序如何使用标记器依赖于依赖于令牌流的TokenFilter)时遇到了问题,因为pylucene上几乎没有可用的文档。在


Tags: 方法代码标记文本分析器示例ishi
1条回答
网友
1楼 · 发布于 2024-10-02 16:31:41

通过创建一个新的tokenzier,它将除下划线之外的每个字符都视为生成的令牌的一部分(基本上,下划线变成了分隔符),从而使它最终工作

class UnderscoreSeparatorTokenizer(PythonCharTokenizer):
  def __init__(self, input):
    PythonCharTokenizer.__init__(self, input)

  def isTokenChar(self, c):
    return c != "_"

class UnderscoreSeparatorAnalyzer(PythonAnalyzer):
  def __init__(self, version):
    PythonAnalyzer.__init__(self, version)

  def tokenStream(self, fieldName, reader):
    tokenizer = UnderscoreSeparatorTokenizer(reader)
    tokenStream = LowerCaseFilter(tokenizer)
    return tokenStream

相关问题 更多 >