架构
spaCy中的核心数据结构是Doc和Vocab。Doc对象包括一系列tokens和它们的标注。Vocab对象拥有一组查找表,这些表可以在文档之间提供通用信息。通过将字符串、单词向量和词汇属性集中起来,我们避免了存储这些数据的多个副本。这样可以节省内存,并确保有一个单一真实的数据来源。
文本注释也被设计为允许单一的数据来源:Doc对象拥有数据,而Span和Token是指向它的视图。Doc对象由Tokenizer组成,可以通过接口里面的组件进行修改。Language对象协调这些组件。它接受未处理过的文本,把它交给处理管道处理,得到标注好的文本。它还编排了培训和序列化。
对象容器
Doc:用于访问语言注释的容器
Span:Doc对象的切片
Token:一个单独的标记——例如一个单词、标点符号、空格等
Lexeme:词汇表中的一个条目。它是一个没有上下文的单词类型,但是它不是一个单词标记。因此它没有词性标记、依赖解析等
处理管道
Language:一个文本处理管道。 通常你会为每次处理加载一次nlp,并在应用程序周围传递实例
Pipe:处理管道组件的基类
Tagger:在Doc对象上标注部分词性标记
DependencyParser:在Doc对象上标注句法依赖
EntityRecognizer:在Doc对象上标注命名实体,例如人物、产品等
TextCategorizer:为Doc对象分配类别或标签
Tokenizer:段文本,通过发现段边界创建Doc对象
Lemmatizer:确定单词的基本形式
Morphology:根据单词的词性和词性标记,分配语言特征,如引理,名词,动词时态等
Matcher:匹配相应的序列,基于模式规则,类似于正则表达式
PhraseMatcher:基于短语匹配相应的序列
其他类
Vocab:允许你查找Lexeme对象的词汇查找表
StringStore:字符串和hash值的映射
Vectrors:字符串转化为向量数据的容器类
GoldParse:训练标注的集合
GoldCorpus:一个标注好的语料库,使用json的格式。管理各种标注