SpaCy Python NLP有什么好处吗?提供可以确定的七种方法

738 阅读4分钟
克诺德斯博客音频

阅读时间: 4 分钟

SpaCy是一个免费的、开源Python高级自然语言处理(NLP)

如果你在操作 大量的文本,你最终会想知道更多关于它的信息。例如,它是关于什么的?这些短语在上下文中暗示什么?谁在对谁做什么?哪些文本 其他文本一样

当然,spaCy可以解决上面所说的所有问题。

SpaCy的语言学特征

SpaCy是一个包罗万象的资源,用于NLP项目中的不同任务。例如,标记化、语义化、语篇标签(POS)、名称物质确认、依赖性分析、句子分割、词到矢量的变化,以及其他清洗和标准化文本的方法。

Is SpaCy Python NLP Any Good? Seven Ways You Can Be CertainIs SpaCy Python NLP Any Good? Seven Ways You Can Be Certain

SpaCy的安装

!pip install -U spacy
!pip install -U spacy-lookups-data
!python -m spacy download en_core_web_sm

一旦我们下载并安装了一个模型,我们将通过spacy.load()加载它。 spaCy有不同类型的预训练模型。此外,英语语言的默认模型是en_core_web_sm。

此外,NLP对象是spaCy模型的一个语言实例。而且,这将返回一个包含处理文本所需所有组件和数据的语言对象。

import spacy
nlp = spacy.load('en_core_web_sm')

SpaCy中的标记化

标记化是将文本分割成有意义的片段的任务,称为标记。标记化的输入是一个Unicode文本,输出是一个Doc对象。

此外,Doc是一个Token对象的序列。每个Doc由单个标记组成,我们可以对它们进行迭代。

doc = nlp('We are learning SpaCy library today')
for token in doc:
    print(token.text)

Is SpaCy Python NLP Any Good? Seven Ways You Can Be CertainIs SpaCy Python NLP Any Good? Seven Ways You Can Be Certain

语篇标签

语音部分标签是根据每个标记在句子中的用法为其分配一个POS 标签的过程。

doc = nlp('We are learning SpaCy library today')

Is SpaCy Python NLP Any Good? Seven Ways You Can Be CertainIs SpaCy Python NLP Any Good? Seven Ways You Can Be Certain

依赖性分析

依赖性解析是提取一个句子的依赖性解析的过程,以表示其语法结构。它定义了句首和其附属物之间的依存关系。

句子的头部没有依存关系,被称为句子的根。动词通常是句子的头。而且,词头与其他所有的词都有关系。

doc = nlp('We are learning SpaCy library today')

Is SpaCy Python NLP Any Good? Seven Ways You Can Be CertainIs SpaCy Python NLP Any Good? Seven Ways You Can Be Certain

词表化

与工作相关的标记化,词法是将单词减少到其基本形式,或起源形式的方法。这种减少的形式或词根被称为词法。

例如,organizes、organized和organizing都是organization的形式。在这里,organ是词根。

词组化是必要的,因为它有助于减少一个词的转折形式。这样,它们就可以作为一个单一的项目来分析。它还可以帮助你将文本规范化。

doc = nlp('We are learning SpaCy library today')
for token in doc:
print(token.text, token.lemma_)

Is SpaCy Python NLP Any Good? Seven Ways You Can Be CertainIs SpaCy Python NLP Any Good? Seven Ways You Can Be Certain

句子边界检测

句子分割是定位给定文本中句子的开始和结束的过程。这使您能够将文本划分为具有语言意义的单元。SpaCy使用依赖性解析来确定句子的边界。在SpaCy中提取句子时,使用的是sents属性。

doc = nlp('First Sentence. Second Sentence. Third Sentence.')
print(list(doc.sents))

Is SpaCy Python NLP Any Good? Seven Ways You Can Be CertainIs SpaCy Python NLP Any Good? Seven Ways You Can Be Certain

命名实体识别

命名实体识别(NER)是在非结构化文本中定位命名实体的过程。之后,将它们分类到预先定义的类别中。如人名、组织、地点、货币价值、百分比、时间表达等等。

为了改进关键词搜索,我们为一组文件填充标签。命名的实体可作为文件的ents属性。

doc = nlp('We are learning SpaCy library today')

相似性

相似性是通过比较词向量或 "词嵌入",即一个词的多维意义表示法来确定的。

正如你在例子中看到的,"狗"、"猫 "和 "香蕉 "这些词在英语中都很常见,所以它们是管道词汇的一部分,并带有一个向量。另一方面,"afskfsd "这个词就不那么常见了,也不属于词汇范围--所以它的向量表示由300个0的维度组成。

tokens = nlp("dog cat banana afskfsd")
for token in tokens: print(token.text, token.has_vector, token.vector_norm, token.is_oov)

结论

总之,spaCy是一个现代的、可靠的NLP框架,迅速成为用Python做NLP的标准。它的主要优势是速度准确性可扩展性

我们已经获得了对语言学注释的深入了解,如标记化(Tokenization)、语义化(Lemmatisation)、语篇标签(POS)、实体识别、依赖性分析、句子分割和相似性。

分享Knol。

相关信息