向nltk添加新的词干

时间:2018-08-18 06:05:26

标签: python nlp nltk text-mining stemming

我有这个符合预期的python函数。是否可以将逻辑另存为NLP词干分析器? 如果是,则需要做哪些更改?

$('.start_time').each(function(v, l) {
   $(this).find('.set_start_time').val($(this).val());
});

我希望用户导入类似这样的内容...

import itertools, re
def dropdup(mytuple):
    newtup=list()
    for i in mytuple:
        i = i[:-3] if i.endswith('bai') else i
        for r in (("tha", "ta"), ("i", "e")):
            i = i.replace(*r)
            i = re.sub(r'(\w)\1+',r'\1', i)
        newtup.append(''.join(i for i, _ in itertools.groupby(i)))
    return tuple(newtup)

dropdup(('savithabai', 'samiiir', 'aaaabaa'))
('saveta', 'samer', 'aba')

还有更多规则要添加到逻辑中。我只想知道这是否是有效的(pythonic)想法。

2 个答案:

答案 0 :(得分:1)

显然,您要做的就是从StemmerI类继承。

答案 1 :(得分:1)

首先见https://www.python-course.eu/python3_inheritance.php

创建文件mytools.py

import itertools, re
from nltk.stem import StemmerI

class MyStemmer(StemmerI):
    def stem(self, token):
        itoken = token[:-3] if token.endswith('bai') else token
        for r in (("tha", "ta"), ("i", "e")):
            token = token.replace(*r)
            token = re.sub(r'(\w)\1+',r'\1', token)
        return ''.join(i for i, _ in itertools.groupby(token))

用法:

>>> from mystemmer import MyStemmer
>>> s = MyStemmer()
>>> s.stem('savithabai')
'savetabae'