什么是词干化处理

时间:2021-11-09 02:22:27

词干化处理:

在NLP中,我们对一句话或一个文档分词之后,一般要进行词干化处理。词干化处理就是把一些名词的复数去掉,动词的不同时态去掉等等类似的处理。

对于切词得到的英文单词要进行词干化处理,主要包括将名词的复数变为单数和将动词的其他形态变为基本形态。对动词的词干化可以使用 Porter 算法[5]。

举个例子说明:用的python中的    from nltk.stem.snowball import SnowballStemmer

def tokenize_and_stem(self,text):
        # first tokenize by sentence, then by word to ensure that punctuation is caught as it's own token
        tokens = [word for sent in nltk.sent_tokenize(text) for word in nltk.word_tokenize(sent)]
        print tokens
        filtered_tokens = []
        # filter out any tokens not containing letters (e.g., numeric tokens, raw punctuation)
        for token in tokens:
            if re.search('[a-zA-Z]', token):
                filtered_tokens.append(token)
        stems = [stemmer.stem(t) for t in filtered_tokens]
        print stems

结果:

['hello', ',', 'what', 'are', 'you', 'doing', 'now', ',', 'i', 'want', 'to', 'go', 'to', 'school', ',', 'by', 'some', 'fruits']
[u'hello', u'what', u'are', u'you', u'do', u'now', 'i', u'want', 'to', 'go', 'to', u'school', 'by', u'some', u'fruit']

从上面对比可以看出:doing——>do fruits——>fruit 逗号也去掉了