การแท็ก POS ด้วย NLTK และ Chunking ใน NLP [ตัวอย่าง]

⚡ สรุปอย่างชาญฉลาด

การติดแท็กส่วนของคำพูด (POS Tagging) จะกำหนดส่วนของคำพูดให้กับทุกคำในประโยค ในขณะที่การจัดกลุ่มคำ (Chunking) จะจัดกลุ่มคำที่ติดแท็กเหล่านั้นเข้าด้วยกันเป็นวลีที่มีความหมาย เช่น วลีนาม โดยเพิ่มโครงสร้างแบบตื้นๆ ที่ NLTK สร้างขึ้นด้วยนิพจน์ปกติ (Regular Expression) Python.

  • 🏷️ การติดแท็ก POS: แต่ละคำจะได้รับสัญลักษณ์ทางไวยากรณ์ เช่น NN, VB หรือ JJ จากบริบทของคำนั้น
  • 🌿 การจัดเป็นกลุ่ม: คำที่ถูกระบุจะถูกจัดกลุ่มเป็นวลี ซึ่งกระบวนการนี้เรียกว่าการวิเคราะห์แบบตื้น (shallow parsing)
  • 🔤 ขั้นตอนการทำงาน: แยกคำในข้อความก่อน จากนั้นใช้ pos_tag แล้วจึงแยกวิเคราะห์ด้วยไวยากรณ์ RegexpParser
  • 📊 แท็กการนับ: Counter และ FreqDist แสดงความถี่ของแท็กและคำสำหรับการสร้างคุณลักษณะ
  • 🔗 คำที่มักใช้คู่กัน: บิแกรมและไตรแกรมจับคู่คำและสามคำเพื่อสร้างคุณลักษณะข้อความที่แข็งแกร่งยิ่งขึ้น
  • 🤖 การใช้งาน AI: การเรียนรู้ของเครื่องและตัวติดแท็กแบบ HMM จัดการกับคำที่ไม่ชัดเจนโดยใช้หลักความน่าจะเป็น

การติดแท็ก POS ด้วย NLTK และการแบ่งกลุ่มข้อมูลใน NLP

การแท็ก POS

การแท็ก POS (การระบุชนิดของคำ) คือกระบวนการทำเครื่องหมายคำในรูปแบบข้อความสำหรับชนิดของคำเฉพาะตามความหมายและบริบท กระบวนการนี้มีหน้าที่ในการอ่านข้อความในภาษาและกำหนดชนิดของคำ (ส่วนของคำพูด) ที่เฉพาะเจาะจงให้กับแต่ละคำ เรียกอีกอย่างว่าการระบุทางไวยากรณ์

มาเรียนรู้ด้วยตัวอย่างส่วนของคำพูด (Part of Speech) จาก NLTK กัน:

Input: Everything to permit us.
Output: [('Everything', NN),('to', TO), ('permit', VB), ('us', PRP)]

ขั้นตอนต่างๆ ที่เกี่ยวข้องในตัวอย่างการติดแท็ก ณ จุดขาย (POS Tagging)

  • ข้อความโทเค็น (word_tokenize)
  • นำ pos_tag ไปใช้ในขั้นตอนข้างต้น นั่นคือ nltk.pos_tag(tokenize_text)

ตัวอย่างแท็ก POS ของ NLTK มีดังต่อไปนี้:

ตัวย่อ ความหมาย
CC การประสานงานร่วม
CD หลักสำคัญ
DT กำหนด
EX มีอยู่อยู่ที่นั่น
FW คำต่างประเทศ
IN คำบุพบท/ร่วมรอง
JJ คำคุณศัพท์
เจเจอาร์ คำคุณศัพท์, เปรียบเทียบ
JJS คำคุณศัพท์, ขั้นสูงสุด
LS รายการตลาด
MD เป็นกิริยาช่วย
NN คำนาม เอกพจน์
สนช คำนามพหูพจน์
เอ็นเอ็นพี คำนามเฉพาะ, เอกพจน์
เอ็นเอ็นพีเอส คำนามเฉพาะ พหูพจน์
PDT ตัวกำหนดล่วงหน้า
POS การลงท้ายแสดงความเป็นเจ้าของ
PRP คำสรรพนามส่วนตัว
พีอาร์พี$ สรรพนามแสดงความเป็นเจ้าของ
RB คำวิเศษณ์
อาร์.บี.อาร์ คำวิเศษณ์เปรียบเทียบ
RBS คำวิเศษณ์, ขั้นสูงสุด
RP อนุภาค
TO เครื่องหมายอนันต์
UH คำอุทาน
VB คำกริยา
GBV กริยาในรูป gerund
วีบีดี กริยาอดีตกาล
วี.บี.เอ็น กริยาช่อง 3
วีบีพี คำกริยา ปัจจุบันกาล ไม่ใช่บุรุษที่ 3 เอกพจน์
วีบีแซด คำกริยา ปัจจุบันกาล บุคคลที่สาม เอกพจน์
ดับเบิ้ลยูดีที คำนำหน้า wh
WP สรรพนาม wh
ดับบลิวอาร์บี คำวิเศษณ์ wh

รายการแท็ก POS ของ NLTK ด้านบนประกอบด้วยแท็ก POS ทั้งหมดของ NLTK ตัวติดแท็ก POS ของ NLTK ใช้สำหรับกำหนดข้อมูลทางไวยากรณ์ให้กับแต่ละคำในประโยค การติดตั้ง นำเข้า และดาวน์โหลดแพ็กเกจทั้งหมดของ POS NLTK เสร็จสมบูรณ์แล้ว

Chunking ใน NLP คืออะไร?

การจัดเป็นกลุ่ม ใน NLP (การประมวลผลภาษาธรรมชาติ) การแบ่งกลุ่มคำ (Chunking) คือกระบวนการนำข้อมูลชิ้นเล็กๆ มาจัดกลุ่มเป็นหน่วยใหญ่ๆ การใช้งานหลักของการแบ่งกลุ่มคำคือการสร้างกลุ่มของ "วลีคำนาม" โดยใช้เพื่อเพิ่มโครงสร้างให้กับประโยคด้วยการติดแท็กส่วนของคำพูด (POS tagging) ร่วมกับนิพจน์ปกติ (regular expressions) กลุ่มคำที่ได้เรียกว่า "กลุ่มคำ" (chunks) เรียกอีกอย่างว่าการวิเคราะห์โครงสร้างประโยคแบบตื้น (shallow parsing)

ในการแยกวิเคราะห์แบบตื้น จะมีระดับสูงสุดเพียงหนึ่งระดับระหว่างรากและใบ ในขณะที่การแยกวิเคราะห์แบบลึกประกอบด้วยมากกว่าหนึ่งระดับ การแยกวิเคราะห์แบบตื้นเรียกอีกอย่างว่าการแยกวิเคราะห์แบบเบาหรือการแบ่งกลุ่มข้อมูล

กฎเกณฑ์สำหรับการเป็นก้อน

ไม่มีกฎตายตัว แต่คุณสามารถนำมาผสมผสานกันได้ตามความต้องการและข้อกำหนด ตัวอย่างเช่น สมมติว่าคุณต้องการระบุคำนาม คำกริยา (อดีต) คำคุณศัพท์ และคำสันธานเชื่อมประโยค คุณสามารถใช้กฎด้านล่างนี้ได้:

chunk:{***?}

ตารางต่อไปนี้แสดงความหมายของสัญลักษณ์ต่างๆ:

ชื่อสัญลักษณ์ Descriptไอออน
. อักขระใดก็ได้ยกเว้นบรรทัดใหม่
* จับคู่การซ้ำซ้อน 0 หรือมากกว่า
? จับคู่การซ้ำซ้อน 0 หรือ 1 ครั้ง

ต่อไปเรามาเขียนโค้ดเพื่อทำความเข้าใจกฎให้ดียิ่งขึ้นกัน

from nltk import pos_tag
from nltk import RegexpParser
text ="learn php from guru99 and make study easy".split()
print("After Split:",text)
tokens_tag = pos_tag(text)
print("After Token:",tokens_tag)
patterns= """mychunk:{***?}"""
chunker = RegexpParser(patterns)
print("After Regex:",chunker)
output = chunker.parse(tokens_tag)
print("After Chunking",output)

Output:

After Split: ['learn', 'php', 'from', 'guru99', 'and', 'make', 'study', 'easy']
After Token: [('learn', 'JJ'), ('php', 'NN'), ('from', 'IN'), ('guru99', 'NN'), ('and', 'CC'), ('make', 'VB'), ('study', 'NN'), ('easy', 'JJ')]
After Regex: chunk.RegexpParser with 1 stages:
RegexpChunkParser with 1 rules:
       '***?'>
After Chunking (S
  (mychunk learn/JJ)
  (mychunk php/NN)
  from/IN
  (mychunk guru99/NN and/CC)
  make/VB
  (mychunk study/NN easy/JJ))

ข้อสรุปจากการแท็ก Part of Speech ข้างต้น Python ตัวอย่างเช่น คำว่า “make” เป็นคำกริยาที่ไม่รวมอยู่ในกฎ ดังนั้นจึงไม่ถูกติดแท็กเป็น mychunk

ใช้กรณีของ Chunking

การแบ่งกลุ่มคำ (Chunking) ใช้สำหรับการตรวจจับเอนทิตี เอนทิตีคือส่วนของประโยคที่เครื่องจักรใช้ในการตีความความหมายหรือเจตนาต่างๆ

Example:
Temperature of New York.
Here Temperature is the intention and New York is an entity.

กล่าวอีกนัยหนึ่ง การแบ่งกลุ่มคำ (chunking) ใช้เพื่อเลือกกลุ่มย่อยของโทเค็น โปรดดูโค้ดด้านล่างเพื่อทำความเข้าใจวิธีการใช้การแบ่งกลุ่มคำเพื่อเลือกโทเค็น ในตัวอย่างนี้ คุณจะเห็นกราฟที่สอดคล้องกับกลุ่มคำของวลีคำนาม

 import nltk
text = "learn php from guru99"
tokens = nltk.word_tokenize(text)
print(tokens)
tag = nltk.pos_tag(tokens)
print(tag)
grammar = "NP: {
?*}" cp =nltk.RegexpParser(grammar) result = cp.parse(tag) print(result) result.draw() # It will draw the pattern graphically which can be seen in Noun Phrase chunking

Output:

['learn', 'php', 'from', 'guru99']  -- These are the tokens
[('learn', 'JJ'), ('php', 'NN'), ('from', 'IN'), ('guru99', 'NN')]   -- These are the pos_tag
(S (NP learn/JJ php/NN) from/IN (NP guru99/NN))        -- Noun Phrase Chunking

คำนามวลี Chunking Graph

กราฟก้อนคำนามวลี

จากกราฟ เราสามารถสรุปได้ว่า “learn” และ “guru99” เป็นโทเค็นที่แตกต่างกันสองตัว แต่ถูกจัดอยู่ในหมวดหมู่เดียวกันคือวลีคำนาม ในขณะที่โทเค็น “from” ไม่ได้อยู่ในหมวดหมู่วลีคำนาม การแบ่งกลุ่มคำ (Chunking) ใช้เพื่อจัดหมวดหมู่โทเค็นที่แตกต่างกันให้อยู่ในกลุ่มเดียวกัน ผลลัพธ์จะขึ้นอยู่กับไวยากรณ์ที่เลือกใช้ นอกจากนี้ การแบ่งกลุ่มคำใน NLTK ยังใช้เพื่อติดแท็กรูปแบบและสำรวจคลังข้อความอีกด้วย

การนับป้ายราคา ณ จุดขาย

เราได้พูดคุยกันต่างๆ pos_tag ค่าต่างๆ ก่อนหน้านี้ ในที่นี้คุณจะได้เรียนรู้วิธีการนับแท็กเหล่านี้ การนับแท็กมีความสำคัญอย่างยิ่งสำหรับการจำแนกประเภทข้อความและการเตรียมคุณลักษณะสำหรับการดำเนินการกับภาษาธรรมชาติ เราจะเขียนโค้ดที่ใช้งานได้จริงก่อน จากนั้นจึงอธิบายขั้นตอนต่างๆ

from collections import Counter
import nltk
text = "Guru99 is one of the best sites to learn WEB, SAP, Ethical Hacking and much more online."
lower_case = text.lower()
tokens = nltk.word_tokenize(lower_case)
tags = nltk.pos_tag(tokens)
counts = Counter( tag for word,  tag in tags)
print(counts)

Output:

Counter({'NN': 5, ',': 2, 'TO': 1, 'CC': 1, 'VBZ': 1, 'NNS': 1, 'CD': 1, '.': 1, 'DT': 1, 'JJS': 1, 'JJ': 1, 'JJR': 1, 'IN': 1, 'VB': 1, 'RB': 1})

รายละเอียดของโค้ด:

  1. ใช้แพ็กเกจ Counter จากโมดูล collections Counter เป็นคลาสย่อยของ dictionary ที่เก็บองค์ประกอบเป็นคีย์และจำนวนขององค์ประกอบเหล่านั้นเป็นค่า
  2. นำเข้าไลบรารี nltk เพื่อแยกคำในข้อความ
  3. เขียนข้อความที่คุณต้องการนับ pos_tag
  4. แปลงคำทั้งหมดเป็นตัวพิมพ์เล็กก่อนทำการแยกคำ (tokenization)
  5. นำคำต่างๆ ผ่านฟังก์ชัน word_tokenize และคำนวณ pos_tag ของแต่ละโทเค็น
  6. จากนั้นตัวนับจะนับจำนวนครั้งทั้งหมดที่พบแท็กแต่ละแท็กในข้อความ

การกระจายความถี่

การแจกแจงความถี่ หมายถึงจำนวนครั้งที่ผลลัพธ์ของการทดลองเกิดขึ้น ใช้เพื่อหาความถี่ของการปรากฏของแต่ละคำในเอกสาร โดยใช้... ความถี่ คลาสที่กำหนดโดย ความน่าจะเป็น nltk โมดูล จำนวนนับจะเพิ่มขึ้นทีละหนึ่งทุกครั้งที่มีการสุ่มตัวอย่าง

เราสามารถตรวจสอบจำนวนครั้งที่คำใดๆ ปรากฏในเอกสารได้ ตัวอย่างเช่น:

  • วิธีการนับ: freq_dist.count('and') จะคืนค่าจำนวนครั้งที่คำว่า 'and' ปรากฏขึ้น เรียกว่าเมธอดนับจำนวน (count method)
  • วิธีความถี่: freq_dist.freq('and') จะส่งคืนความถี่ของตัวอย่างที่กำหนด

เราจะเขียนโปรแกรมขนาดเล็กที่คำนวณการแจกแจงความถี่ของแต่ละคำในข้อความ

import nltk
a = "Guru99 is the site where you can find the best tutorials for Software Testing     Tutorial, SAP Course for Beginners. Java Tutorial for Beginners and much more. Please     visit the site guru99.com and much more."
words = nltk.tokenize.word_tokenize(a)
fd = nltk.FreqDist(words)
fd.plot()

คำอธิบายของรหัส:

  1. นำเข้าโมดูล nltk
  2. เขียนข้อความที่คุณต้องการค้นหาการกระจายคำ
  3. แยกคำแต่ละคำในข้อความออกเป็นโทเค็น แล้วนำไปใช้เป็นข้อมูลป้อนเข้าสำหรับโมดูล FreqDist ของ nltk
  4. นำแต่ละคำไปใช้กับ nltk.FreqDist ในรูปแบบของรายการ
  5. พล็อตคำต่างๆ ลงในกราฟโดยใช้ฟังก์ชัน plot()

หมายเหตุ: ต้องติดตั้ง matplotlib เพื่อดูกราฟ โปรแกรมนี้ใช้นับจำนวนครั้งที่แต่ละคำปรากฏในข้อความและช่วยในการวิเคราะห์ความรู้สึกจากข้อความ คำสำคัญคือ “tokenize”: หลังจากทำการ tokenize แล้ว จะตรวจสอบแต่ละคำเพื่อหาจำนวนครั้งที่ปรากฏ

การจัดระเบียบ: บิ๊กแกรมและไตรแกรม

คำที่ใช้ร่วมกันบ่อยๆ (Collocations) คือคู่คำที่ปรากฏร่วมกันหลายครั้งในเอกสาร คำนวณได้จากอัตราส่วนของจำนวนคู่คำที่ใช้ร่วมกันบ่อยๆ ต่อจำนวนคำทั้งหมดในเอกสาร

ลองพิจารณาคำต่างๆ เช่น รังสีอัลตราไวโอเลตและรังสีอินฟราเรด คำว่าอัลตราไวโอเลตและรังสีไม่ได้ถูกใช้แยกกัน ดังนั้นจึงสามารถถือได้ว่าเป็นคำที่ใช้ร่วมกัน (collocation) อีกตัวอย่างหนึ่งคือการสแกน CT เนื่องจากเราไม่ได้พูดคำว่า CT และ Scan แยกกัน การใช้คำร่วมกันสามารถแบ่งออกได้เป็นสองประเภท:

  • บิแกรม: การรวมกันของสองคำ
  • ไตรแกรม: การรวมกันของสามคำ

บิแกรมและไตรแกรมให้คุณสมบัติที่มีความหมายและมีประโยชน์มากกว่าสำหรับคุณสมบัติอื่นๆtracขั้นตอนการวิเคราะห์ สิ่งเหล่านี้มีประโยชน์อย่างยิ่งในการวิเคราะห์ความรู้สึกจากข้อความ

ตัวอย่างบิแกรม Code:

import nltk
text = "Guru99 is a totally new kind of learning experience."
Tokens = nltk.word_tokenize(text)
output = list(nltk.bigrams(Tokens))
print(output)

Output:

[('Guru99', 'is'), ('is', 'totally'), ('totally', 'new'), ('new', 'kind'), ('kind', 'of'), ('of', 'learning'), ('learning', 'experience'), ('experience', '.')]

ตัวอย่างไตรแกรม Code:

บางครั้งสิ่งสำคัญคือต้องดูคำสามคำในประโยคเพื่อการวิเคราะห์ทางสถิติและการนับความถี่ สิ่งนี้มีบทบาทสำคัญในการขึ้นรูปอีกครั้ง NLP คุณลักษณะ (การประมวลผลภาษาธรรมชาติ) รวมถึงการทำนายความรู้สึกจากข้อความ โค้ดเดียวกันนี้ถูกใช้ในการคำนวณไตรแกรมด้วย

import nltk
text = "Guru99 is a totally new kind of learning experience."
Tokens = nltk.word_tokenize(text)
output = list(nltk.trigrams(Tokens))
print(output)

Output:

[('Guru99', 'is', 'totally'), ('is', 'totally', 'new'), ('totally', 'new', 'kind'), ('new', 'kind', 'of'), ('kind', 'of', 'learning'), ('of', 'learning', 'experience'), ('learning', 'experience', '.')]

การแท็กประโยค

การติดแท็กประโยคหมายถึงการเพิ่มป้ายกำกับ เช่น คำกริยาหรือคำนาม โดยพิจารณาจากบริบทของประโยค การระบุแท็กส่วนของคำพูด (POS tags) นั้นซับซ้อน ดังนั้นการติดแท็กแบบทั่วไปด้วยตนเองจึงเป็นไปไม่ได้ เนื่องจากบางคำมีความหมายกำกวมขึ้นอยู่กับโครงสร้างของประโยค การแปลงข้อความให้เป็นรายการจึงเป็นขั้นตอนสำคัญก่อนการติดแท็ก เนื่องจากแต่ละคำจะถูกวนซ้ำและนับจำนวนสำหรับแท็กเฉพาะนั้นๆ

import nltk
text = "Hello Guru99, You have to build a very good site, and I love visiting your site."
sentence = nltk.sent_tokenize(text)
for sent in sentence:
	 print(nltk.pos_tag(nltk.word_tokenize(sent)))

Code คำอธิบาย:

  1. Code เพื่อนำเข้า nltk (Natural) Language Toolชุดเครื่องมือ ซึ่งประกอบด้วยโมดูลย่อย เช่น การแยกประโยคและการแยกคำ)
  2. ข้อความที่จะพิมพ์แท็ก
  3. การแบ่งประโยคออกเป็นโทเค็น
  4. มีการใช้ลูป for เพื่อแยกคำออกจากประโยค และพิมพ์แท็กของแต่ละคำออกมาเป็นผลลัพธ์

ในคลังข้อมูล มีตัวระบุประเภทคำ (POS tagger) สองประเภท:

1. ระบบติดแท็ก POS แบบใช้กฎเกณฑ์: สำหรับคำที่มีความหมายกำกวม จะใช้วิธีการตามกฎเกณฑ์โดยอาศัยข้อมูลบริบท โดยการวิเคราะห์ความหมายของคำที่อยู่ข้างหน้าหรือข้างหลัง ดังนั้น คำเหล่านั้นจึงถูกติดแท็กด้วยกฎไวยากรณ์ของภาษานั้นๆ เช่น การใช้ตัวพิมพ์ใหญ่และเครื่องหมายวรรคตอน ตัวอย่างเช่น โปรแกรมติดแท็กของ Brill

2. ตัวระบุ POS แบบสุ่ม: วิธีการนี้ใช้แนวทางต่างๆ เช่น ความถี่หรือความน่าจะเป็น หากคำใดคำหนึ่งถูกติดแท็กด้วยแท็กเฉพาะเจาะจงมากที่สุดในชุดข้อมูลฝึกฝน คำนั้นก็จะถูกติดแท็กนั้นในประโยคทดสอบ แท็กของคำนั้นขึ้นอยู่กับไม่เพียงแต่แท็กของคำเองเท่านั้น แต่ยังขึ้นอยู่กับแท็กก่อนหน้าด้วย ดังนั้นวิธีการนี้จึงไม่แม่นยำเสมอไป

การติดแท็ก POS ด้วยแบบจำลองมาร์คอฟแบบซ่อนเร้น

ปัญหาการติดแท็กสามารถจำลองได้โดยใช้แบบจำลองมาร์คอฟแบบซ่อนเร้น (Hidden Markov Model: HMM) โดยแบบจำลองนี้จะมองโทเค็นขาเข้าเป็นลำดับที่สังเกตได้ ในขณะที่แท็กถือเป็นสถานะที่ซ่อนอยู่ และเป้าหมายคือการหาลำดับของสถานะที่ซ่อนอยู่นั้น ตัวอย่างเช่น x = x1,x2,…,xn โดยที่ x คือลำดับของโทเค็น ในขณะที่ y = y1,y2,y3,y4…yn คือลำดับที่ซ่อนอยู่

โมเดล Markov ที่ซ่อนอยู่ (HMM) ทำงานอย่างไร

HMM ใช้การแจกแจงร่วม P(x, y) โดยที่ x คือลำดับโทเค็นอินพุต และ y คือลำดับแท็ก ลำดับแท็กสำหรับ x จะเป็น argmax ของ y1…yn จาก p(x1,x2,…xn,y1,y2,y3,…) เราได้จัดหมวดหมู่แท็กจากข้อความแล้ว แต่สถิติของแท็กเหล่านี้มีความสำคัญ ดังนั้นส่วนต่อไปคือการนับแท็กเหล่านี้เพื่อการศึกษาทางสถิติ

คำถามที่พบบ่อย

การติดแท็กส่วนของคำพูด (POS tagging) จะระบุส่วนของคำพูดให้กับแต่ละคำ เช่น คำนามหรือคำกริยา ส่วนการจัดกลุ่มคำ (Chunking) จะก้าวไปอีกขั้นโดยการจัดกลุ่มคำที่ติดแท็กเหล่านั้นเป็นวลี เช่น วลีคำนาม ทำให้ประโยคมีโครงสร้างที่ไม่ซับซ้อนมากนัก

การแยกวิเคราะห์แบบตื้น หรือที่เรียกว่าการแบ่งกลุ่มคำหรือการแยกวิเคราะห์แบบเบา จะคงระดับการแยกวิเคราะห์ไว้สูงสุดเพียงระดับเดียวระหว่างรากและใบ วิธีการนี้จะระบุขอบเขตของวลีโดยไม่ต้องสร้างแผนผังการแยกวิเคราะห์แบบเต็มรูปแบบ ซึ่งทำให้เร็วกว่าการแยกวิเคราะห์แบบลึก

การแบ่งกลุ่มคำ (Chunking) จะจัดกลุ่มคำที่มีการติดแท็กเข้าเป็นวลี ซึ่งช่วยให้ระบบสามารถตรวจจับเอนทิตีต่างๆ เช่น บุคคล สถานที่ วันที่ หรือผลิตภัณฑ์ได้ การระบุเอนทิตีที่มีชื่อ (Named Entity Recognition หรือ Entity Recognition) อาศัยกลุ่มคำเหล่านี้ในการแสดงผลtracดึงค่าที่มีความหมายจากข้อความดิบ

ฟังก์ชัน nltk.pos_tag() ใช้สำหรับกำหนดแท็กส่วนของคำพูด ก่อนอื่นคุณต้องแยกคำในข้อความด้วย word_tokenize จากนั้นส่งรายการโทเค็นไปยัง pos_tag ซึ่งจะส่งคืนแต่ละคำพร้อมกับแท็ก เช่น NN, VB หรือ JJ

ใช่แล้ว ระบบติดแท็ก AI สมัยใหม่ที่ได้รับการฝึกฝนด้วยการเรียนรู้ของเครื่องและโครงข่ายประสาทเทียมเชิงลึก สามารถแก้ไขคำที่ไม่ชัดเจนได้โดยการเรียนรู้บริบทจากคลังข้อมูลขนาดใหญ่ ทำให้ได้ความแม่นยำสูงกว่าวิธีการที่ใช้กฎเกณฑ์ในการวิเคราะห์ข้อความจริง

ตัวติดแท็กแบบสุ่มใช้ความน่าจะเป็นที่เรียนรู้จากข้อมูลฝึกฝน การเรียนรู้ของเครื่องจะประเมินว่าแต่ละแท็กมีโอกาสมากน้อยเพียงใดสำหรับคำหนึ่งๆ โดยพิจารณาจากแท็กโดยรอบ จากนั้นเลือกชุดที่มีความน่าจะเป็นโดยรวมสูงสุด

นอกเหนือจาก เอ็นแอลทีเคตัวเลือกยอดนิยม ได้แก่ สปาซี สำหรับการสร้างไปป์ไลน์การผลิตที่รวดเร็ว Stanford CoreNLP และ Hugging Face Transformers สำหรับการติดแท็กแบบ Transformer

ในไวยากรณ์แบบกลุ่มคำ จุดจะแทนอักขระใดๆ ก็ได้ยกเว้นขึ้นบรรทัดใหม่ เครื่องหมายดอกจันจะแทนการทำซ้ำศูนย์ครั้งขึ้นไป และเครื่องหมายคำถามจะแทนการทำซ้ำศูนย์ครั้งหรือหนึ่งครั้งของรูปแบบแท็ก POS ที่อยู่ข้างหน้า

สรุปโพสต์นี้ด้วย: