1. 简介
自然语言处理(Natural Language Processing,简称NLP)是一门研究如何使计算机“理解”人类语言的学科,它是人工智能领域中的重要分支。在Python中,有多种用于自然语言处理的库。
2. NLTK
2.1 简介
2.1 简介
NLTK(Natural Language Toolkit)是Python中最常用的自然语言处理库之一。它提供了各种各样的工具,可以用于文本分类、标记、解析,语料库等等。
2.2 安装
安装NLTK非常简单,只需要在命令行输入以下命令即可:
pip install nltk
2.3 常用功能
NLTK提供了很多常用的自然语言处理功能,下面列举了一些常用的:
2.3.1 分词
将文本划分为一个一个的词语,常用的方法有:
空格分词
基于词典的分词
基于规则的分词
使用NLTK进行分词非常简单,只需要使用nltk.tokenize包中的函数即可:
import nltk
text = "I love Natural Language Processing."
tokens = nltk.word_tokenize(text)
print(tokens)
# Output: ['I', 'love', 'Natural', 'Language', 'Processing', '.']
2.3.2 词性标注
词性标注是将每个词语赋予一个词性(Part of Speech,简称POS)标签,例如名词、动词、形容词等等。使用NLTK进行词性标注非常简单,只需要使用nltk.pos_tag函数即可:
import nltk
text = "I love Natural Language Processing."
tokens = nltk.word_tokenize(text)
tags = nltk.pos_tag(tokens)
print(tags)
# Output: [('I', 'PRP'), ('love', 'VBP'), ('Natural', 'JJ'), ('Language', 'NNP'), ('Processing', 'NNP'), ('.', '.')]
2.3.3 停用词过滤
停用词是指在一个文本中频率非常高但是没有什么意义的词语,例如“a”、“an”、“the”等等。在进行文本处理的过程中,通常会将这些停用词过滤掉。使用NLTK进行停用词过滤非常简单,只需要使用nltk.corpus包中的stopwords函数即可:
import nltk
from nltk.corpus import stopwords
text = "I love Natural Language Processing."
tokens = nltk.word_tokenize(text)
filtered_tokens = [token for token in tokens if token.lower() not in stopwords.words('english')]
print(filtered_tokens)
# Output: ['love', 'Natural', 'Language', 'Processing', '.']
3. spaCy
3.1 简介
spaCy是一个新兴的自然语言处理库,它非常快,并且具有非常好的文档和API文档。spaCy具有流线型的设计,可以非常容易地集成到工作流程中。
3.2 安装
安装spaCy非常简单,只需要在命令行输入以下命令即可:
pip install spacy
还需要下载模型,可以使用以下命令进行下载:
python -m spacy download en_core_web_sm
3.3 常用功能
spaCy提供了很多常用的自然语言处理功能,下面列举了一些常用的:
3.3.1 分词
使用spaCy进行分词非常简单,只需要使用nlp函数即可:
import spacy
nlp = spacy.load('en_core_web_sm')
text = "I love Natural Language Processing."
doc = nlp(text)
for token in doc:
print(token.text)
# Output:
# I
# love
# Natural
# Language
# Processing
# .
3.3.2 词性标注
使用spaCy进行词性标注非常简单,只需要使用pos_函数即可:
import spacy
nlp = spacy.load('en_core_web_sm')
text = "I love Natural Language Processing."
doc = nlp(text)
for token in doc:
print(token.text, token.pos_)
# Output:
# I PRON
# love VERB
# Natural ADJ
# Language PROPN
# Processing PROPN
# . PUNCT
3.3.3 命名实体识别
命名实体识别(Named Entity Recognition,简称NER)是将文本中的实体识别出来,并且分为不同的类别,例如人名、地名、组织机构名等等。使用spaCy进行命名实体识别非常简单,只需要使用ents函数即可:
import spacy
nlp = spacy.load('en_core_web_sm')
text = "Barack Obama was born in Hawaii."
doc = nlp(text)
for ent in doc.ents:
print(ent.text, ent.label_)
# Output:
# Barack Obama PERSON
# Hawaii GPE
4. TextBlob
4.1 简介
TextBlob是另一个常用的自然语言处理库,它提供了各种各样的文本处理功能,例如分词、词性标注、情感分析等等。
4.2 安装
安装TextBlob非常简单,只需要在命令行输入以下命令即可:
pip install textblob
4.3 常用功能
TextBlob提供了很多常用的自然语言处理功能,下面列举了一些常用的:
4.3.1 分词
使用TextBlob进行分词非常简单,只需要使用words函数即可:
from textblob import TextBlob
text = "I love Natural Language Processing."
blob = TextBlob(text)
for word in blob.words:
print(word)
# Output:
# I
# love
# Natural
# Language
# Processing
4.3.2 词性标注
使用TextBlob进行词性标注非常简单,只需要使用tags函数即可:
from textblob import TextBlob
text = "I love Natural Language Processing."
blob = TextBlob(text)
for word, tag in blob.tags:
print(word, tag)
# Output:
# I PRP
# love VBP
# Natural JJ
# Language NNP
# Processing NNP
4.3.3 情感分析
情感分析是分析文本情感的一种方法,常用的情感分析包括正面情感、负面情感和中性情感等等。使用TextBlob进行情感分析非常简单,只需要使用sentiment函数即可:
from textblob import TextBlob
text = "I love Natural Language Processing."
blob = TextBlob(text)
print(blob.sentiment)
# Output:
# Sentiment(polarity=0.5, subjectivity=0.6)
5. 总结
本文介绍了Python中常用的自然语言处理库NLTK、spaCy和TextBlob,分别介绍了它们的安装方法以及常用功能。在实际使用中,可以根据需求选择适合的库进行处理。