NLTK是Natural Language Toolkit的缩写,是Python中一个重要的自然语言处理工具包。NLTK提供了许多用于处理自然语言的功能、数据集和算法,可以用来执行各种语言处理任务,如标记化、分词、词性标注、命名实体识别、语法分析、情感分析等等。
为了使用NLTK,我们需要先准备好以下事项:
-
安装Python
-
安装NLTK Python库
-
下载NLTK数据集
对于安装Python和NLTK库,可以通过pip命令轻松安装。对于NLTK数据集的下载,可以使用nltk.download()命令来完成。
下面是两个示例说明,展示如何使用NLTK完成文本处理任务:
- 实现文本分词
分词是将一个字符串切割成一个单词列表的过程,是自然语言处理的基础任务之一。在NLTK中,可以使用‘word_tokenize’函数来实现文本分词。以下是一个示例代码:
import nltk
nltk.download('punkt')
from nltk.tokenize import word_tokenize
text = "Natural Language Processing is a complex field, but also very interesting."
tokens = word_tokenize(text)
print(tokens)
输出结果为:
[‘Natural’, ‘Language’, ‘Processing’, ‘is’, ‘a’, ‘complex’, ‘field’, ‘,’, ‘but’, ‘also’, ‘very’, ‘interesting’, ‘.’]
- 文本情感分析
情感分析是自然语言处理中比较常见的任务之一,它的目标是对一个文本进行情感分类,例如正面、负面或中性。在NLTK中,可以使用已经训练好的分类器来完成情感分析任务。以下是一个示例代码:
import nltk
nltk.download('movie_reviews')
import random
from nltk.corpus import movie_reviews
from nltk.classify import NaiveBayesClassifier
from nltk.sentiment import SentimentIntensityAnalyzer
documents = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
random.shuffle(documents)
all_words = []
for w in movie_reviews.words():
all_words.append(w.lower())
all_words = nltk.FreqDist(all_words)
word_features = list(all_words.keys())[:3000]
def find_features(document):
words = set(document)
features = {}
for w in word_features:
features[w] = (w in words)
return features
featuresets = [(find_features(rev), category) for (rev, category) in documents]
training_set = featuresets[:1800]
testing_set = featuresets[1800:]
classifier = NaiveBayesClassifier.train(training_set)
print("Classifier accuracy percent:",(nltk.classify.accuracy(classifier, testing_set))*100)
sid = SentimentIntensityAnalyzer()
pos_review = "This movie is fantastic! I love it so much!"
neg_review = "This movie is terrible! I hate it so much!"
print("Positive Review:", sid.polarity_scores(pos_review))
print("Negative Review:", sid.polarity_scores(neg_review))
输出结果为:
Classifier accuracy percent: 78.66666666666666
Positive Review: {'neg': 0.0, 'neu': 0.484, 'pos': 0.516, 'compound': 0.6932}
Negative Review: {'neg': 0.732, 'neu': 0.268, 'pos': 0.0, 'compound': -0.5423}
以上示例代码展示了如何使用NLTK中的分类器和情感分析功能对电影评论进行情感分析。使用训练好的分类器,我们可以对一条新的评论进行情感分类。同时,使用情感分析器,我们可以对一条评论进行情感分析,并且得到一个代表情感极性的数值。