概述

库架构

spaCy 的核心数据结构是 Language 类、VocabDoc 对象。Language 类用于处理文本并将其转换为 Doc 对象。它通常存储在一个名为 nlp 的变量中。Doc 对象拥有 token 序列 和所有注释。通过将字符串、词向量和词汇属性集中在 Vocab 中,我们避免存储这些数据的多个副本。这可以节省内存,并确保有一个 单一的事实来源

文本注释也设计为允许单一的事实来源:Doc 对象拥有数据,SpanToken指向它的视图Doc 对象由 Tokenizer 构造,然后由管道的组件 原地修改Language 对象协调这些组件。它接收原始文本并将其通过管道发送,返回一个 已注释的文档。它还协调训练和序列化。

Library architecture {w:1080, h:1254}

容器对象

名称描述
Doc用于访问语言注释的容器。
DocBinDoc 对象的集合,用于高效的二进制序列化。也用于 训练数据
示例训练注释的集合,包含两个 Doc 对象:参考数据和预测数据。
命令开始使用,或克隆项目模板以获得端到端工作流程。将文本转换为 Doc 对象的处理类。不同的语言实现自己的子类。该变量通常称为 nlp
Lexeme词汇表中的一个条目。它是一种没有上下文的词类型,与词标记相反。因此,它没有词性标签、依存句法分析等。
SpanDoc 对象中提取的一个切片。
SpanGroup属于 Doc 的 span 的命名集合。
Token一个单独的 token——即一个单词、标点符号、空格等。

处理管道

处理管道由一个或多个 管道组件 组成,这些组件按顺序在 Doc 上调用。分词器在组件之前运行。可以使用 Language.add_pipe 添加管道组件。它们可以包含统计模型和训练权重,或者仅对 Doc 进行基于规则的修改。spaCy 提供了用于不同语言处理任务的各种内置组件,并允许添加 自定义组件

The processing pipeline
名称描述
AttributeRuler使用匹配器规则设置 token 属性。
DependencyParser预测句法依存关系。
EditTreeLemmatizer预测单词的基本形式。
EntityLinker将命名实体消歧到知识库中的节点。
EntityRecognizer预测命名实体,例如人或产品。
EntityRuler使用基于 token 的规则或精确短语匹配将实体 span 添加到 Doc 中。
Lemmatizer使用规则和查找表确定单词的基本形式。
Morphologizer预测形态特征和粗粒度的词性标签。
SentenceRecognizer预测句子边界。
Sentencizer实现基于规则的句子边界检测,不需要依存句法分析。
句法分析器预测词性标签。
TextCategorizer预测整个文档的类别或标签。
Tok2Vec应用“token-to-vector”模型并设置其输出。
Tokenizer分割原始文本并从单词中创建 Doc 对象。
TrainablePipe所有可训练管道组件都继承的类。
Transformer使用 transformer 模型并设置其输出。
其他函数自动将某些内容应用于 Doc,例如合并 token 的 span。

匹配器

匹配器帮助您根据描述您正在查找的序列的匹配模式,从 Doc 对象中查找和提取信息。匹配器在一个 Doc 上运行,并为您提供对匹配 token 的访问权限 在上下文中

名称描述
DependencyMatcher使用 Semgrex 运算符 基于依存树匹配 token 序列。
Matcher基于模式规则匹配 token 序列,类似于正则表达式。
PhraseMatcher基于短语匹配 token 序列。

其他类

名称描述
Corpus用于管理用于训练和评估数据的注释语料库的类。
KnowledgeBase用于实体链接的数据存储和检索的抽象基类。
InMemoryLookupKB在内存中存储所有数据的 KnowledgeBase 的实现。
候选将文本提及与包含在 KnowledgeBase 中的特定实体关联的对象。
查找表用于方便访问大型查找表和字典的容器。
形态分析形态分析。
形态学存储形态分析并将它们映射到和从哈希值。
Scorer计算评估分数。
StringStore将字符串映射到和从哈希值。
Vectors按字符串键控的向量数据的容器。
Vocab共享词汇表,用于存储字符串并为您提供对 Lexeme 对象。