spaCy เป็นหนึ่งในไลบรารีวิเคราะห์ข้อความที่ดีที่สุด เก่งในการสกัดข้อมูลขนาดใหญ่ และเร็วที่สุดในโลก ยังเป็นวิธีที่ดีที่สุดในการเตรียมข้อความสำหรับ Deep Learning เร็วและแม่นยำกว่า NLTKTagger และ TextBlob
การติดตั้ง
pip install spacy
python -m spacy download en_core_web_sm
ตัวอย่างโค้ด
1. POS Tagging (Part-of-Speech Tagging)
import spacy
# โหลดโมเดลภาษาอังกฤษ
nlp = spacy.load("en_core_web_sm")
# ข้อความตัวอย่าง
text = """My name is Vishesh. I love to work on data science problems. Please check out my github profile!"""
doc = nlp(text)
# แสดง token และ POS tag
for token in doc:
print(token.text, token.pos_)
# ดึงเฉพาะ Verb
verbs = [token.text for token in doc if token.pos_ == "VERB"]
print("Verbs:", verbs)
2. Lemmatization (การรูปพื้นฐานของคำ)
import spacy
nlp = spacy.load("en_core_web_sm")
text = """My name is Vishesh. I love to work on data science problems. Please check out my github profile!"""
doc = nlp(text)
for token in doc:
print(token.text, "→", token.lemma_)
ผลลัพธ์ตัวอย่าง
# POS Tags
My PRON
name NOUN
is AUX
Vishesh PROPN
. PUNCT
I PRON
love VERB
to PART
work VERB
on ADP
data NOUN
science NOUN
problems NOUN
. PUNCT
Please VERB
check VERB
out ADP
my PRON
github PROPN
profile NOUN
! PUNCT
# Lemmatization
My → my
name → name
is → be
Vishesh → vishesh
. → .
I → i
love → love
to → to
work → work
on → on
data → data
science → science
problem → problem
. → .
please → please
check → check
out → out
my → my
github → github
profile → profile
! → !
POS Tags หลักใน spaCy
| Tag | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| NOUN | คำนาม | cat, happiness |
| VERB | คำกริยา | run, eating |
| ADJ | คำคุณศัพท์ | big, beautiful |
| ADV | คำวิเศษณ์ | quickly, very |
| PRON | สรรพนาม | I, you, they |
| ADP | บุพบท | in, on, at |
| PROPN | นามเฉพาะ | London, Apple |
| AUX | กริยาช่วย | is, have, will |
| DET | คำกำกับ | the, a, this |
คุณสมบัติ Token อื่นๆ ที่มีประโยชน์
for token in doc:
print(f"Text: {token.text}")
print(f"Lemma: {token.lemma_}")
print(f"POS: {token.pos_}")
print(f"Tag: {token.tag_}") # Detailed tag
print(f"Dep: {token.dep_}") # Dependency relation
print(f"Head: {token.head.text}") # Head token
print(f"Is stop: {token.is_stop}") # Stop word?
print(f"Is alpha: {token.is_alpha}")
print("---")
โมเดลภาษาอื่นๆ
# ดาวน์โหลดโมเดลภาษาอื่น
python -m spacy download th_core_news_sm # ไทย
python -m spacy download zh_core_web_sm # จีน
python -m spacy download ja_core_news_sm # ญี่ปุ่น
python -m spacy download xx_ent_wiki_sm # หลายภาษา
# ใช้งาน
nlp_th = spacy.load("th_core_news_sm")
doc = nlp_th("สวัสดีครับ ผมชื่อวิเศษ")