赞
踩
自然语言处理(Natural Language Processing,简称NLP)是一门研究人类语言与计算机之间交互的领域,旨在使计算机能够理解、解析、生成和处理人类语言。NLP结合了计算机科学、人工智能和语言学的知识,通过各种算法和技术来处理和分析文本数据。近年来,随着深度学习技术的发展,神经网络模型在自然语言处理(NLP)领域取得了重大的突破。其中,循环神经网络(RNN)、长短时记忆网络(LSTM)和Transformer等模型都发挥了关键作用。这些模型为NLP任务带来了更好的性能和效果,推动了NLP的发展和应用。
NLP主要知识结构如下图所示,图片来自网络。
NLP的应用非常广泛,涵盖了多个领域,如机器翻译、信息提取、文本分类、情感分析、自动摘要、问答系统、语音识别和语音合成等。以下是NLP常用的技术和方法:
在众多自然语言处理库中,spaCy库提供了超过73种语言的支持,并为25种语言提供了训练代码。该库提供了一系列简单易用的模型和函数接口,包括分词、词性标注等功能。用户还可以使用PyTorch、TensorFlow等框架在spaCy创建自定义模型,以满足特定需求。spaCy支持的语言模型见spaCy-models。
事实上,有一些自然语言处理开源库,例如HuggingFace的Transformers、PaddleNLP和NLTK,相较于spaCy来说更为专业且性能更好。然而,对于简单的应用而言,spaCy更为适合,因为它具有简单易用、功能全面,同时也提供了大量面向多语言预训练模型的优点。此外,随着以GPT-3为代表的语言大模型在自然语言处理领域取得了巨大的突破和成功,原本一些自然语言处理库在精度上实际不如语言大模型。然而,使用语言大模型需要庞大的推理资源,而在对精度要求不高的场景中,使用spaCy这类小巧的自然语言处理库依然是很合适的选择。
spaCy采用采用模块和语言模块一起安装的模式。spaCy的设计目标之一是模块化和可定制性。它允许用户仅安装必需的模块和语言数据,以减少安装的整体大小和减轻资源负担。如果使用spaCy的模型,需要通过pip安装模型所需的模型包来使用预训练模型。这是因为spaCy的模型包含了训练后的权重参数和其他必要的文件,这些文件在安装时被存储在特定位置,而不是以单个文件的形式存在。如果需要进行模型训练和gpu运行则需要选定对应的安装包。将模块和语言模块一起安装,可以简化spaCy的配置过程。用户无需单独下载和配置语言数据,也不需要手动指定要使用的语言模型。这样可以减少用户的工作量和安装过程中的潜在错误。但是可定制性就很弱了,所以spaCy适合精度要求不高的简单使用,工程应用选择其他大型自然语言处理库更加合适。
为了实现这一目标,spaCy提供了配置化的安装指令选择页面供用户使用。安装指令选择页面地址为spaCy-usage。下图展示了本文的安装配置项,本文采用了最简单的cpu推理模式。
spaCy安装完毕后,运行以下代码即可判断spaCy及相对应的语言模型是否安装成功。
# jupyter notebook环境去除warning |
|
import warnings |
|
warnings.filterwarnings("ignore") |
|
import spacy |
|
spacy.__version__ |
'3.6.0' |
import spacy |
|
# 加载已安装的中文模型 |
|
nlp = spacy.load('zh_core_web_sm') |
|
# 执行一些简单的NLP任务 |
|
doc = nlp("早上好!") |
|
for token in doc: |
|
# token.text表示标记的原始文本,token.pos_表示标记的词性(part-of-speech),token.dep_表示标记与其他标记之间的句法依存关系 |
|
print(token.text, token.pos_, token.dep_) |
早上 NOUN nmod:tmod |
|
好 VERB ROOT |
|
! PUNCT punct |
该部分内容和图片主要来自于spacy-101的总结。spaCy提供的主要函数模块分为以下模块,接下来分别对这些模块进行介绍。
名称 | 描述 |
---|---|
Tokenization | 将文本分割成单词、标点符号等。 |
Part-of-speech (POS) Tagging | 给标记分配词性,如动词或名词。 |
Dependency Parsing | 分配句法依存标签,描述个别标记之间的关系,如主语或宾语。 |
Lemmatization | 分配单词的基本形式。例如,“was”的基本形式是“be”,“rats”的基本形式是“rat”。 |
Sentence Boundary Detection (SBD) | 查找和分割单个句子。 |
Named Entity Recognition (NER) | 对命名的“现实世界”对象进行标记,如人物、公司或地点。 |
Entity Linking (EL) | 将文本实体与知识库中的唯一标识符进行消岐。 |
Similarity | 比较单词、文本片段和文档之间的相似程度。 |
Text Classification | 为整个文档或文档的部分分配类别或标签。 |
Rule-based Matching | 根据其文本和语言注释查找标记序列,类似于正则表达式。 |
Training | 更新和改进统计模型的预测能力。 |
Serialization | 将对象保存到文件或字节字符串中。 |
在处理过程中,spaCy首先对文本进行标记,即将其分段为单词、标点符号等Token。这是通过应用每种语言特有的规则来实现的。Token表示自然语言文本的最小单位。每个Token都代表着文本中的一个原子元素,通常是单词或标点符号。
import spacy |
|
nlp = spacy.load("zh_core_web_sm") |
|
# 使对文本进行一键处理 |
|
</ |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。