克诺德斯博客音频 |
阅读时间: 4 分钟
SpaCy是一个免费的、开源的Python高级自然语言处理(NLP)库。
如果你在操作 大量的文本,你最终会想知道更多关于它的信息。例如,它是关于什么的?这些短语在上下文中暗示什么?谁在对谁做什么?哪些文本与 其他文本一样?
当然,spaCy可以解决上面所说的所有问题。
SpaCy的语言学特征
SpaCy是一个包罗万象的资源,用于NLP项目中的不同任务。例如,标记化、语义化、语篇标签(POS)、名称物质确认、依赖性分析、句子分割、词到矢量的变化,以及其他清洗和标准化文本的方法。
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)
语篇标签
语音部分标签是根据每个标记在句子中的用法为其分配一个POS 标签的过程。
doc = nlp('We are learning SpaCy library today')
依赖性分析
依赖性解析是提取一个句子的依赖性解析的过程,以表示其语法结构。它定义了句首和其附属物之间的依存关系。
句子的头部没有依存关系,被称为句子的根。动词通常是句子的头。而且,词头与其他所有的词都有关系。
doc = nlp('We are learning SpaCy library today')
词表化
与工作相关的标记化,词法是将单词减少到其基本形式,或起源形式的方法。这种减少的形式或词根被称为词法。
例如,organizes、organized和organizing都是organization的形式。在这里,organ是词根。
词组化是必要的,因为它有助于减少一个词的转折形式。这样,它们就可以作为一个单一的项目来分析。它还可以帮助你将文本规范化。
doc = nlp('We are learning SpaCy library today')
for token in doc:
print(token.text, token.lemma_)
句子边界检测
句子分割是定位给定文本中句子的开始和结束的过程。这使您能够将文本划分为具有语言意义的单元。SpaCy使用依赖性解析来确定句子的边界。在SpaCy中提取句子时,使用的是sents属性。
doc = nlp('First Sentence. Second Sentence. Third Sentence.')
print(list(doc.sents))
命名实体识别
命名实体识别(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)、实体识别、依赖性分析、句子分割和相似性。