在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'>)
有人建议在其他地方使用PyLucene随附的
PythonSet
,但是事实证明这不是Set
的实例,并且不能与StopFilter
一起使用。如何给
StopFilter
一整套新的停用词? 最佳答案
通过在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)