1

在 PyLucene 中,有一个称为过滤器的过滤器StopFilter,它根据给定的停用词过滤令牌。示例调用如下:

result = StopFilter(True, result, StopAnalyzer.ENGLISH_STOP_WORDS_SET)

替换停用词集的参数似乎应该很容易,但这实际上有点挑战性:

>>> StopAnalyzer.ENGLISH_STOP_WORDS_SET

<Set: [but, be, with, such, then, for, no, will, not, are, and, their, if, this, on, into, a, or, there, in, that, they, was, is, it, an, the, as, at, these, by, to, of]>

这是一个Set,无法实现:

>>> Set()

NotImplementedError: ('instantiating java class', <type 'Set'>)

有人建议在别处使用PythonSetPyLucene 附带的 a ,但事实证明这不是 a 的实例,Set不能与 a 一起使用StopFilter

如何给出一StopFilter组新的停用词?

4

1 回答 1

1

我通过 pylucene 开发列表上的这个线程在写这个问题的过程中发现了这个问题的答案:

http://mail-archives.apache.org/mod_mbox/lucene-pylucene-dev/201202.mbox/thread

您可以StopFilter使用自定义列表定义一个,如下所示:

mystops = HashSet(Arrays.asList(['a','b','c']))
result = StopFilter(True, result, mystops)
于 2013-02-07T21:20:05.830 回答