spaCy 流水线

使用 spaCy 的自然语言处理

Azadeh Mobasher

Principal Data Scientist

spaCy 流水线

 

  • spaCy 先对文本分词,生成 Doc 对象
  • 然后 Doc 经过多个处理流水线步骤

 

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

doc = nlp(example_text)
使用 spaCy 的自然语言处理

spaCy 流水线

  • 流水线一系列管道,即对数据的处理单元
  • spaCyNER 流水线:
    • 分词
    • 识别命名实体
    • 分类命名实体  

spaCy 的 NER 流水线示例

print([ent.text for ent in doc.ents])
使用 spaCy 的自然语言处理

添加管道

 

  • sentencizerspaCy 的句子切分组件。
text = " ".join(["This is a test sentence."]*10000)

en_core_sm_nlp = spacy.load("en_core_web_sm") start_time = time.time() doc = en_core_sm_nlp(text)
print(f"Finished processing with en_core_web_sm model in {round((time.time() - start_time)/60.0 , 5)} minutes")
>>> Finished processing with en_core_web_sm model in 0.09332 minutes
使用 spaCy 的自然语言处理

添加管道

 

  • 创建空白模型并添加 sentencizer 管道:
blank_nlp = spacy.blank("en")

blank_nlp.add_pipe("sentencizer")
start_time = time.time() doc = blank_nlp(text) print(f"Finished processing with blank model in {round((time.time() - start_time)/60.0 , 5)} minutes")
>>> Finished processing with blank model in 0.00091 minutes
使用 spaCy 的自然语言处理

分析流水线组件

  • nlp.analyze_pipes() 用于分析 spaCy 流水线,确定:
    • 组件设置的属性
    • 训练期间组件产生的评分
    • 所有所需属性是否存在

 

  • pretty 设为 True 可打印表格,而非仅返回结构化数据。
import spacy

nlp = spacy.load("en_core_web_sm")
analysis = nlp.analyze_pipes(pretty=True)
使用 spaCy 的自然语言处理

分析流水线组件

analyze_pipes 方法的结果

使用 spaCy 的自然语言处理

Passons à la pratique !

使用 spaCy 的自然语言处理

Preparing Video For Download...