走进 spaCy:开启自然语言处理的新篇章
spaCy 是一个用于自然语言处理(NLP)的开源库,旨在帮助开发者和研究人员高效地创建处理大量文本的应用程序。它提供了一组用于解析和理解文本的语言处理管道,并支持多种语言。以下是 spaCy 的一些关键特性和使用介绍:
关键特性
Tokenization (分词): 将文本分割成单词、标点符号等有意义的单元。
Part-of-speech tagging (词性标注): 识别并标记每个词的语法角色,如名词、动词、形容词等。
Named entity recognition (命名实体识别, NER): 自动识别文本中的命名实体,如人名、组织名、地点、日期等。
Dependency parsing (依存句法分析): 分析句子中词语之间的关系,比如主语、宾语等。
Lemmatization (词形还原): 将单词的不同形态还原为基本形式(词根)。
Word vectors and similarity (词向量和相似度): 提供预训练的词向量模型来计算词汇间的语义相似度。
Text classification (文本分类): 支持构建自定义文本分类器。
Rule-based matching (基于规则的匹配): 使用 Matcher API 来查找符合特定模式的子串。
Training and updating models (训练和更新模型): 允许用户训练新的或更新现有的语言模型。
官方文档: https://spacy.io/usage
安装
本体安装
为了使用spaCy, 我们需要执行如下命令:
pip install spacy
下载语言模型
spaCy 的语言模型需要单独下载,例如,要下载英文模型,可以使用以下命令:
python -m spacy download en_core_web_sm
如果想要下载更多模型, 请进入https://spacy.io/usage进行查看
QuickStart
接下来是一个简单的示例来快速入门spacy
import spacy
# 加载英文语言模型
nlp = spacy.load("en_core_web_sm")
# 处理一段文本
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
# 迭代 doc 对象以获取 token 的信息
for token in doc:
print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_,
token.shape_, token.is_alpha, token.is_stop)
# 获取命名实体
for ent in doc.ents:
print(ent.text, ent.start_char, ent.end_char, ent.label_)
基本步骤为:
使用
spacy.load()
加载语言模型, 该步骤返回一个类加载语言模型后处理文本, 将步骤1中的类继续初始化即可(记得要将处理的文本放在里面)
返回信息并处理
分词
分词官方文档: https://spacy.io/usage/linguistic-features#tokenization
使用spacy进行分词相当简单:
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for token in doc:
print(token.text)