Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - POS Tagging และ Lemmatization ด้วย spaCy

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("สวัสดีครับ ผมชื่อวิเศษ")