📜  Python词干和词法化(1)

📅  最后修改于: 2023-12-03 15:19:36.197000             🧑  作者: Mango

Python词干和词法化

在自然语言处理中,词干提取和词法化是非常重要的步骤。Python中有很多库可以用于这两个任务,本文将为你介绍最流行的几个库和它们的用法。

1. NLTK

NLTK是Python最流行的自然语言处理库之一。它有一个很好的词干提取器,也可以进行词法分析。以下是一个使用NLTK进行词干提取的例子:

import nltk
from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
word = "walking"
stemmed_word = stemmer.stem(word)
print(stemmed_word)

输出结果:

walk

以下是一个使用NLTK进行词法分析的例子:

from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer

lemmatizer = WordNetLemmatizer()
sentence = "He was running and eating at same time. He has bad habit of swimming after playing long hours in the Sun."
words = word_tokenize(sentence)
lemmatized_words = [lemmatizer.lemmatize(word, pos='v') for word in words]
print(lemmatized_words)

输出结果:

['He', 'be', 'run', 'and', 'eat', 'at', 'same', 'time', '.', 'He', 'have', 'bad', 'habit', 'of', 'swim', 'after', 'play', 'long', 'hour', 'in', 'the', 'Sun', '.']

由于英语单词有时会有不同的词形,因此词法分析需要输入单词的词性。在上面的代码中,我们指定了单词的动词形式。

2. spaCy

spaCy是另一个流行的自然语言处理库,它比NLTK更快且更易于使用。以下是使用spaCy进行词干提取和词性分析的例子:

import spacy

nlp = spacy.load('en_core_web_sm')
doc = nlp("I am trying to learn Natural Language Processing.")

# Stemming
stemmed_words = [token.lemma_ for token in doc]
print(stemmed_words)

# Lemmatizing
lemmatized_words = [token.lemma_ for token in doc]
print(lemmatized_words)

输出结果:

['i', 'be', 'try', 'to', 'learn', 'Natural', 'Language', 'Processing', '.']
['i', 'be', 'try', 'to', 'learn', 'Natural', 'Language', 'Processing', '.']

注意,这里我们使用的是词性分析的结果。还要注意,spaCy默认使用Lemmatizing进行词干提取。

3. TextBlob

TextBlob是一个简单易用的自然语言处理库,它具有词干提取和词形还原功能。以下是一个使用TextBlob的例子:

from textblob import TextBlob

# Stemming
word = "walking"
stemmed_word = TextBlob(word).stem()
print(stemmed_word)

# Lemmatizing
sentence = "He was running and eating at same time. He has bad habit of swimming after playing long hours in the Sun."
lemmatized_words = [word.lemmatize("v") for word in TextBlob(sentence).words]
print(lemmatized_words)

输出结果:

walk
['He', 'be', 'run', 'and', 'eat', 'at', 'same', 'time', 'He', 'have', 'bad', 'habit', 'of', 'swim', 'after', 'play', 'long', 'hour', 'in', 'the', 'Sun']

TextBlob也使用与NLTK相同的Lemmatizing算法。

结论

这篇文章向你展示了如何使用三个常用的Python自然语言处理库进行词干提取和词法分析。无论你的应用场景如何,这些库都可以为你减轻许多负担。