การจดจำเอนทิตีที่มีชื่อในข้อความที่ถอดเสียง

Spoken Language Processing ด้วย Python

Daniel Bourke

Machine Learning Engineer/YouTube Creator

การติดตั้ง spaCy

# Install spaCy
$ pip install spacy
# Download spaCy language model
$ python -m spacy download en_core_web_sm
Spoken Language Processing ด้วย Python

การใช้งาน spaCy

import spacy

# Load spaCy language model nlp = spacy.load("en_core_web_sm")
# Create a spaCy doc
doc = nlp("I'd like to talk about a smartphone I ordered on July 31st from your 
Sydney store, my order number is 40939440. I spoke to Georgia about it last week.")
Spoken Language Processing ด้วย Python

โทเคนของ spaCy

# Show different tokens and positions
for token in doc:
  print(token.text, token.idx)
I 0
'd 1
like 4
to 9
talk 12
about 17
a 23
smartphone 25...
Spoken Language Processing ด้วย Python

ประโยคของ spaCy

# Show sentences in doc
for sentences in doc.sents:
  print(sentence)
I'd like to talk about a smartphone I ordered on July 31st from your Sydney store, 
my order number is 4093829.
I spoke to one of your customer service team, Georgia, yesterday.
Spoken Language Processing ด้วย Python

เอนทิตีที่มีชื่อของ spaCy

เอนทิตีที่มีชื่อในตัวของ spaCy:

  • PERSON บุคคล รวมถึงตัวละครสมมติ
  • ORG บริษัท หน่วยงาน สถาบัน เป็นต้น
  • GPE ประเทศ เมือง รัฐ
  • PRODUCT สิ่งของ ยานพาหนะ อาหาร เป็นต้น (ไม่รวมบริการ)
  • DATE วันหรือช่วงเวลาแบบระบุหรือสัมพัทธ์
  • TIME ช่วงเวลาที่สั้นกว่าหนึ่งวัน
  • MONEY มูลค่าทางการเงิน รวมถึงหน่วยเงิน
  • CARDINAL ตัวเลขที่ไม่จัดอยู่ในประเภทอื่น
Spoken Language Processing ด้วย Python

เอนทิตีที่มีชื่อของ spaCy

# Find named entities in doc
for entity in doc.ents:
  print(entity.text, entity.label_)
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Spoken Language Processing ด้วย Python

เอนทิตีที่มีชื่อแบบกำหนดเอง

# Import EntityRuler class
from spacy.pipeline import EntityRuler
# Check spaCy pipeline
print(nlp.pipeline)
[('tagger', <spacy.pipeline.pipes.Tagger at 0x1c3aa8a470>),
 ('parser', <spacy.pipeline.pipes.DependencyParser at 0x1c3bb60588>),
 ('ner', <spacy.pipeline.pipes.EntityRecognizer at 0x1c3bb605e8>)]
Spoken Language Processing ด้วย Python

การเปลี่ยนแปลง pipeline

# Create EntityRuler instance
ruler = EntityRuler(nlp)
# Add token pattern to ruler
ruler.add_patterns([{"label":"PRODUCT", "pattern": "smartphone"}])
# Add new rule to pipeline before ner
nlp.add_pipe(ruler, before="ner")
# Check updated pipeline
nlp.pipeline
Spoken Language Processing ด้วย Python

การเปลี่ยนแปลง pipeline

[('tagger', <spacy.pipeline.pipes.Tagger at 0x1c1f9c9b38>),
 ('parser', <spacy.pipeline.pipes.DependencyParser at 0x1c3c9cba08>),
 ('entity_ruler', <spacy.pipeline.entityruler.EntityRuler at 0x1c1d834b70>),
 ('ner', <spacy.pipeline.pipes.EntityRecognizer at 0x1c3c9cba68>)]
Spoken Language Processing ด้วย Python

ทดสอบ pipeline ใหม่

# Test new entity rule
for entity in doc.ents:
    print(entity.text, entity.label_)
smartphone PRODUCT
July 31st DATE
Sydney GPE
4093829 CARDINAL
one CARDINAL
Georgia GPE
yesterday DATE
Spoken Language Processing ด้วย Python

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

Spoken Language Processing ด้วย Python

Preparing Video For Download...