使用spaCy的NLP – 如何开始自然语言处理
在当今数据驱动的世界中,每天都会生成大量非结构化文本数据。为了帮助处理所有这些数据,自然语言处理(NLP)作为一项变革性技术应运而生。
NLP是人工智能的一个子领域。它专注于使机器能够理解、解释和生成人类语言。
在本教程中,我们将探讨NLP的基本概念,并研究spaCy的特定实现。这将展示其彻底改变各个行业的巨大潜力。
在开始spaCy之前,让我们快速了解一下自然语言处理。
(更|多优质内|容:java567点c0m)
什么是自然语言处理?NLP涉及语言学、计算机科学和机器学习的交叉领域。其主要目标是弥合人类语言和机器理解之间的差距。
NLP涵盖广泛的任务,包括文本分类、命名实体识别(NER)、情感分析等。
文本分类这涉及根据文本内容将文本分类为预定义的类或类别。
这在情感分析、垃圾邮件检测、主题分类等方面都有应用。
命名实体识别(NER)这涉及从文本中识别和提取命名实体,例如名称、组织、位置和日期。
NER对于信息提取、问答系统和推荐引擎至关重要。
情感分析这涉及确定一段文本中表达的情绪或情绪,无论是积极的、消极的还是中性的。
情感分析广泛用于品牌监控、客户反馈分析和社交媒体监控。
自然语言处理的挑战尽管NLP取得了重大进步,但仍然存在一些挑战:
人类语言本质上是模棱两可的,这使得机器有时很难准确理解和解释含义。
不同的语言、方言、俚语和文化差异增加了NLP任务的复杂性,要求模型针对特定语言且具有适应性。
捕获上下文信息并理解文本的底层语义仍然是NLP算法的重大挑战。
NLP模型严重依赖训练数据,有偏见或低质量的数据可能会导致有偏见或不准确的预测,从而引发潜在的道德问题。
什么是spaCy?在自然语言处理(NLP)领域,spaCy已成为一个强大而高效的库,彻底改变了开发人员和研究人员处理文本数据的方式。
spaCy是一个开源Python库,专为词性标记、命名实体识别、依存解析等NLP任务而设计。
它的开发目标是提供工业强度的性能,同时仍然易于使用并集成到现有工作流程中。
spaCy基于最新研究并采用最先进的技术,使其成为初学者和经验丰富的NLP从业者的理想选择。
spaCy的主要特点语言注释spaCy提供了广泛的预训练模型,可以快速分析文本并提取各种语言特征。这些功能包括词性标签、命名实体、句法依赖、句子边界等等。
预训练模型在大型语料库上进行训练,具有很高的准确性,使开发人员能够专注于其特定的NLP任务,而不必担心从头开始训练模型。
标记化和句子分割标记化是NLP中的关键步骤,它将文本分解为单个单词或子词。spaCy的标记化算法非常高效且特定于语言,可实现准确且可定制的标记化。
spaCy还可以自动将文本分割成句子,从而可以轻松地在粒度级别上处理文本数据。
实体识别命名实体识别(NER)是识别和分类命名实体(例如人员、组织、位置、日期等)的任务。
spaCy的NER功能非常出色,为多种语言提供开箱即用的支持。它允许开发人员使用自己的标记数据训练自定义NER模型,从而实现特定领域的实体识别。
依存分析依存句法分析涉及通过确定单词之间的关系来分析句子的语法结构。
spaCy的依存解析基于高效的算法并实现了高精度。它提供了丰富的语法注释,包括每个词的词头、依存标签和子树结构。
这些信息对于信息提取、问答和情感分析等任务非常宝贵。
定制和可扩展性spaCy的主要优势之一是其灵活性和可扩展性。开发人员可以轻松定制和微调spaCy的模型,以适应特定领域或提高特定任务的性能。
该库还提供了一个简单的API,用于添加自定义组件,例如新的分词器、实体识别器或句法解析器,使其成为研究和开发的多功能工具。
性能和可扩展性spaCy以其卓越的性能和可扩展性而闻名。该库是用Cython实现的,Cython是一种编程语言,可将类似Python的代码编译为高效的C/C++模块。这使得spaCy能够极快地处理文本数据,使其适合大规模NLP应用程序和实时系统。
spaCy中的命名实体识别示例让我们尝试使用spaCy来实现NER。
我将使用GoogleColab。GoogleColab是一项托管的JupyterNotebook服务,无需设置即可使用,并提供对计算资源(包括GPU和TPU)的免费访问。
如果您愿意,您可以使用Kaggle或在您自己的计算机上运行它。由于spaCy是一个预先训练的模型,因此开始时不需要太多的计算能力。
但如果您正在处理机器学习问题,我建议您在计算机上安装Anaconda。
导航至colab.research.google点com并单击“新建笔记本”按钮。
Google协作控制台
在标题上,输入文件的名称。确保您的文件名以.pynb扩展名结尾。
更改文件名并创建代码块
单击“+代码”按钮创建代码块。
默认情况下,GoogleColab预装了一些机器工具和Python库。因此,我们不必担心安装和准备好我们的开发环境。
但它不随spacy库一起提供。
在代码块中运行以下命令来安装spacy库。
!pipinstall-Uspacy
安装spacy库的命令
安装spacy库
选择您想要的选项并继续。它们之间的主要区别在于训练的数据量。
小–en_core_web_sm
中–en_core_web_md
宽–en_core_web_lg
变压器–en_core_web_trf
我们的下一步是下载其中一个模型。添加代码块并从上面的列表中选择任何代码块并运行以下命令。我将下载大模型。
!python-mspacydownloaden_core_web_lg
下载预训练spacy模型的命令
下载预训练模型
添加代码块并运行以下命令来加载模型。
importspacy nlp=spacy.load("en_core_web_lg")
加载spacy模型
好吧。我们都准备好了。
让我们尝试从句子中分割实体。添加代码块并运行以下代码块:
doc=nlp("AppleislookingatbuyingU.K.startupfor$1billion") forentindoc.ents: print(ent.text,ent.start_char,ent.end_char,ent.label_)
查找并打印给定文本中的实体
在上面的代码中,我们要求spaCy模型从“Appleis考虑以10亿美元收购英国初创公司”这句话中查找实体。
然后,我们迭代每个实体,并显示实体、句子中的开始和结束字符索引以及实体标签。
您应该看到以下输出:
命名实体识别示例1来自spaCy
上面的输出描述了“Apple”是一个实体,它出现在给定句子中的索引0到索引5之间,并且它是一个组织(ORG)。
如果您对索引感到困惑,请记住它从0开始。我们给定输入文本中的前5个字符是“Apple”。所以,它是从0到5。
同样,它将“英国”视为一个实体,并将其描述为地缘政治实体(GPE)。它将“10亿美元”标记为货币(MONEY)实体。
这次我们尝试一个不同的句子。
“印度总理纳伦德拉·莫迪在华盛顿特区会见了美国总统乔·拜登”。
让我们看看它找到了什么实体。添加代码块并运行以下代码:
doc=nlp("PrimeMinisterofIndiaNarendraModimetUSPresidentJoeBidenatWashingtonDC") forentindoc.ents: print(ent.text,ent.start_char,ent.end_char,ent.label_)
从不同的句子中查找实体
命名实体识别示例2来自spaCy
太棒了,不是吗?
它将“印度”、“美国”和“华盛顿特区”确定为地缘政治实体(GPE)。它还将“纳伦德拉·莫迪”和“乔·拜登”识别为个人实体(PERSON)。
尝试输入不同的句子并进行尝试。我相信您会对它识别实体的能力感到惊讶。
结论在本教程中,我们通过使用spaCy库的简单实现了解了NLP。
自然语言处理在改变我们与机器交互和分析大量文本数据的方式方面拥有巨大的潜力。spaCy因其强大的功能、易用性和卓越的性能而成为许多NLP从业者的首选库。
(更|多优质内|容:java567点c0m)