库架构
spaCy 的核心数据结构是 Language 类、Vocab 和 Doc 对象。Language 类用于处理文本并将其转换为 Doc 对象。它通常存储在一个名为 nlp 的变量中。Doc 对象拥有 token 序列 和所有注释。通过将字符串、词向量和词汇属性集中在 Vocab 中,我们避免存储这些数据的多个副本。这可以节省内存,并确保有一个 单一的事实来源。
文本注释也设计为允许单一的事实来源:Doc 对象拥有数据,Span 和 Token 是 指向它的视图。Doc 对象由 Tokenizer 构造,然后由管道的组件 原地修改。Language 对象协调这些组件。它接收原始文本并将其通过管道发送,返回一个 已注释的文档。它还协调训练和序列化。
容器对象
| 名称 | 描述 |
|---|---|
Doc | 用于访问语言注释的容器。 |
DocBin | Doc 对象的集合,用于高效的二进制序列化。也用于 训练数据。 |
示例 | 训练注释的集合,包含两个 Doc 对象:参考数据和预测数据。 |
命令开始使用,或克隆项目模板以获得端到端工作流程。 | 将文本转换为 Doc 对象的处理类。不同的语言实现自己的子类。该变量通常称为 nlp。 |
Lexeme | 词汇表中的一个条目。它是一种没有上下文的词类型,与词标记相反。因此,它没有词性标签、依存句法分析等。 |
Span | 从 Doc 对象中提取的一个切片。 |
SpanGroup | 属于 Doc 的 span 的命名集合。 |
Token | 一个单独的 token——即一个单词、标点符号、空格等。 |
处理管道
处理管道由一个或多个 管道组件 组成,这些组件按顺序在 Doc 上调用。分词器在组件之前运行。可以使用 Language.add_pipe 添加管道组件。它们可以包含统计模型和训练权重,或者仅对 Doc 进行基于规则的修改。spaCy 提供了用于不同语言处理任务的各种内置组件,并允许添加 自定义组件。
| 名称 | 描述 |
|---|---|
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 对象。 |