พื้นฐาน spaCy

การประมวลผลภาษาธรรมชาติด้วย spaCy

Azadeh Mobasher

Principal Data Scientist

NLP pipeline ของ spaCy

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("Here's my spaCy pipeline.")
  • นำเข้า spaCy
  • ใช้ spacy.load() เพื่อคืนค่า nlp ซึ่งเป็นคลาส Language
    • ออบเจ็กต์ Language คือ pipeline ประมวลผลข้อความ
  • ใช้ nlp() กับข้อความใดก็ได้ เพื่อรับคอนเทนเนอร์ Doc
การประมวลผลภาษาธรรมชาติด้วย spaCy

NLP pipeline ของ spaCy

 

spaCy ดำเนินขั้นตอนการประมวลผลข้อความผ่านคลาส Language:

spaCy Language pipeline

การประมวลผลภาษาธรรมชาติด้วย spaCy

ออบเจ็กต์คอนเทนเนอร์ใน spaCy

  • spaCy มีโครงสร้างข้อมูลหลายแบบสำหรับแทนข้อความ:

 

ชื่อ คำอธิบาย
Doc คอนเทนเนอร์สำหรับเข้าถึง annotation ทางภาษาของข้อความ
Span ส่วนย่อยที่ตัดมาจากออบเจ็กต์ Doc
Token token แต่ละตัว เช่น คำ เครื่องหมายวรรคตอน ช่องว่าง เป็นต้น
การประมวลผลภาษาธรรมชาติด้วย spaCy

ส่วนประกอบของ pipeline

  • pipeline ประมวลผลภาษาของ spaCy ขึ้นอยู่กับโมเดลที่โหลดและความสามารถของโมเดลนั้น

 

Component ชื่อ คำอธิบาย
Tokenizer Tokenizer แบ่งข้อความเป็น token และสร้างออบเจ็กต์ Doc
Tagger Tagger กำหนด part-of-speech tag
Lemmatizer Lemmatizer ลดคำให้เป็นรูปฐาน
EntityRecognizer NER ตรวจจับและติดป้ายกำกับ named entity
การประมวลผลภาษาธรรมชาติด้วย spaCy

ส่วนประกอบของ pipeline

 

  • แต่ละ component มีฟีเจอร์เฉพาะสำหรับประมวลผลข้อความ

    • Language
    • DependencyParser
    • Sentencizer
การประมวลผลภาษาธรรมชาติด้วย spaCy

Tokenization

  • เป็นขั้นตอนแรกเสมอ
  • ขั้นตอนอื่นทั้งหมดต้องการ token
  • token อาจเป็นคำ ตัวเลข หรือเครื่องหมายวรรคตอน
import spacy
nlp = spacy.load("en_core_web_sm")

doc = nlp("Tokenization splits a sentence into its tokens.")

print([token.text for token in doc])
['Tokenization', 'splits', 'a', 'sentence', 'into', 'its', 'tokens', '.']
การประมวลผลภาษาธรรมชาติด้วย spaCy

การแบ่งประโยค

  • ซับซ้อนกว่า tokenization
  • เป็นส่วนหนึ่งของ component DependencyParser
import spacy
nlp = spacy.load("en_core_web_sm")

text = "We are learning NLP. This course introduces spaCy."
doc = nlp(text)

for sent in doc.sents: print(sent.text)
We are learning NLP.
This course introduces spaCy.
การประมวลผลภาษาธรรมชาติด้วย spaCy

Lemmatization

  • lemma คือรูปฐานของ token
  • lemma ของ eats และ ate คือ eat
  • ช่วยเพิ่มความแม่นยำของโมเดลภาษา
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("We are seeing her after one year.")

print([(token.text, token.lemma_) for token in doc])
[('We', 'we'), ('are', 'be'), ('seeing', 'see'), ('her', 'she'), 
('after', 'after'), ('one', 'one'), ('year', 'year'), ('.', '.')]
การประมวลผลภาษาธรรมชาติด้วย spaCy

มาฝึกกันเถอะ!

การประมวลผลภาษาธรรมชาติด้วย spaCy

Preparing Video For Download...