spaCyのパイプライン

spaCyで学ぶNatural Language Processing

Azadeh Mobasher

Principal Data Scientist

spaCyのパイプライン

 

  • spaCyはまずテキストをトークン化し、Docオブジェクトを生成
  • Docは複数の段階からなる処理パイプラインで順次処理される

 

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

doc = nlp(example_text)
spaCyで学ぶNatural Language Processing

spaCyのパイプライン

  • パイプラインパイプ(処理)連なり、すなわちデータに作用する段階
  • spaCyNERパイプライン:
    • トークン化
    • 固有表現の抽出
    • 固有表現の分類  

NER用spaCyパイプラインの例

print([ent.text for ent in doc.ents])
spaCyで学ぶNatural Language Processing

パイプの追加

 

  • sentencizer: 文分割用のspaCyパイプラインコンポーネント
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で学ぶNatural Language Processing

パイプの追加

 

  • 空のモデルを作成し、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で学ぶNatural Language Processing

パイプライン構成要素の分析

  • nlp.analyze_pipes()spaCyのパイプラインを分析し、次を確認:
    • 各コンポーネントが設定する属性
    • 学習中に出力するスコア
    • 必須属性がすべて存在するか

 

  • prettyTrueにすると、構造化データの返却に加え、表として出力
import spacy

nlp = spacy.load("en_core_web_sm")
analysis = nlp.analyze_pipes(pretty=True)
spaCyで学ぶNatural Language Processing

パイプライン構成要素の分析

analyze_pipesメソッドの結果

spaCyで学ぶNatural Language Processing

Passons à la pratique !

spaCyで学ぶNatural Language Processing

Preparing Video For Download...