📅  最后修改于: 2023-12-03 15:19:36.197000             🧑  作者: Mango
在自然语言处理中,词干提取和词法化是非常重要的步骤。Python中有很多库可以用于这两个任务,本文将为你介绍最流行的几个库和它们的用法。
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', '.']
由于英语单词有时会有不同的词形,因此词法分析需要输入单词的词性。在上面的代码中,我们指定了单词的动词形式。
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进行词干提取。
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自然语言处理库进行词干提取和词法分析。无论你的应用场景如何,这些库都可以为你减轻许多负担。