การแท็ก POS ด้วย NLTK และ Chunking ใน NLP [ตัวอย่าง]
การแท็ก POS
การแท็ก POS (Parts of Speech Tagging) เป็นกระบวนการในการมาร์กอัปคำในรูปแบบข้อความสำหรับส่วนหนึ่งของคำพูดตามคำจำกัดความและบริบท มีหน้าที่รับผิดชอบในการอ่านข้อความในภาษาและกำหนดโทเค็นเฉพาะ (ส่วนของคำพูด) ให้กับแต่ละคำ เรียกอีกอย่างว่าการแท็กทางไวยากรณ์
มาเรียนรู้ด้วยตัวอย่างส่วนหนึ่งของคำพูดของ NLTK:
Input: ทุกสิ่งที่จะอนุญาตให้เรา
Output: [('ทุกอย่าง', NN),('ถึง', TO), ('อนุญาต', VB), ('พวกเรา', PRP)]
ขั้นตอนที่เกี่ยวข้องกับตัวอย่างการติดแท็ก POS
- ข้อความโทเค็น (word_tokenize)
- ใช้ pos_tag กับขั้นตอนด้านบนที่เป็น nltk.pos_tag(tokenize_text)
ตัวอย่างแท็ก NLTK POS มีดังนี้:
ตัวย่อ | ความหมาย |
---|---|
CC | การประสานงานร่วม |
CD | หลักสำคัญ |
DT | กำหนด |
EX | มีอยู่อยู่ที่นั่น |
FW | คำต่างประเทศ |
IN | คำบุพบท/ร่วมรอง |
JJ | แท็ก NLTK POS นี้เป็นคำคุณศัพท์ (ใหญ่) |
เจเจอาร์ | คำคุณศัพท์เปรียบเทียบ (ใหญ่กว่า) |
JJS | คำคุณศัพท์ขั้นสูงสุด (ใหญ่ที่สุด) |
LS | รายการตลาด |
MD | เป็นกิริยาช่วย (สามารถ, จะ) |
NN | คำนามเอกพจน์ (แมว, ต้นไม้) |
สนช | คำนามพหูพจน์ (โต๊ะ) |
เอ็นเอ็นพี | คำนามเฉพาะเอกพจน์ (ซาราห์) |
เอ็นเอ็นพีเอส | คำนามพหูพจน์ (อินเดียนแดงหรืออเมริกัน) |
PDT | ผู้กำหนดล่วงหน้า (ทั้งหมด, ทั้งสอง, ครึ่งหนึ่ง) |
POS | การสิ้นสุดความเป็นเจ้าของ (ผู้ปกครอง\ 's) |
PRP | สรรพนามส่วนตัว (เธอ, ตัวเธอเอง, เขา, ตัวเขาเอง) |
พีอาร์พี$ | สรรพนามแสดงความเป็นเจ้าของ (เธอ, ของเขา, ของฉัน, ของฉัน, ของเรา) |
RB | คำวิเศษณ์ (บางครั้งอย่างรวดเร็ว) |
อาร์.บี.อาร์ | คำวิเศษณ์เปรียบเทียบ (มากขึ้น) |
RBS | คำวิเศษณ์ขั้นสุดยอด (ใหญ่ที่สุด) |
RP | อนุภาค (ประมาณ) |
TO | เครื่องหมายอนันต์ (ถึง) |
UH | คำอุทาน (ลาก่อน) |
VB | กริยา (ถาม) |
GBV | กริยาอาการนาม (การตัดสิน) |
วีบีดี | กริยาอดีตกาล (ขอร้อง) |
วี.บี.เอ็น | กริยาอดีต (รวมใหม่) |
วีบีพี | กริยา ปัจจุบันกาล ไม่ใช่บุรุษที่ 3 เอกพจน์(wrap) |
วีบีแซด | กริยาปัจจุบันกาลที่มีบุรุษที่ 3 เอกพจน์ (ฐาน) |
ดับเบิ้ลยูดีที | wh-determiner (นั่น, อะไร) |
WP | wh- สรรพนาม (ใคร) |
ดับบลิวอาร์บี | wh- คำวิเศษณ์ (อย่างไร) |
รายการแท็ก NLTK POS ด้านบนประกอบด้วยแท็ก NLTK POS ทั้งหมด NLTK POS tagger ใช้เพื่อกำหนดข้อมูลทางไวยากรณ์ของแต่ละคำในประโยค การติดตั้ง การนำเข้า และการดาวน์โหลดแพ็คเกจทั้งหมดของ POS NLTK เสร็จสมบูรณ์
Chunking ใน NLP คืออะไร?
การจัดเป็นกลุ่ม ใน NLP เป็นกระบวนการในการนำข้อมูลชิ้นเล็กๆ มาจัดกลุ่มเป็นหน่วยใหญ่ การใช้ Chunking หลักๆ คือการสร้างกลุ่มของ "วลีคำนาม" ใช้เพื่อเพิ่มโครงสร้างให้กับประโยคโดยปฏิบัติตามแท็ก POS ร่วมกับนิพจน์ทั่วไป กลุ่มคำที่ได้เรียกว่า "chunks" หรือเรียกอีกอย่างว่าการแยกวิเคราะห์แบบตื้น
ในการแยกวิเคราะห์แบบตื้น จะมีระดับสูงสุดหนึ่งระดับระหว่างรากและใบ ในขณะที่การแยกวิเคราะห์แบบลึกประกอบด้วยมากกว่าหนึ่งระดับ การแยกวิเคราะห์แบบตื้นเรียกอีกอย่างว่าการแยกวิเคราะห์แบบเบาหรือการแยกเป็นก้อน
กฎเกณฑ์สำหรับการเป็นก้อน
ไม่มีกฎที่กำหนดไว้ล่วงหน้า แต่คุณสามารถรวมกฎเหล่านี้ได้ตามความต้องการและข้อกำหนด
ตัวอย่างเช่น คุณต้องติดแท็กคำนาม กริยา (อดีตกาล) คำคุณศัพท์ และจุดเชื่อมต่อประสานจากประโยค คุณสามารถใช้กฎดังต่อไปนี้
ก้อน:{ - - - -
ตารางต่อไปนี้แสดงให้เห็นความหมายของสัญลักษณ์ต่างๆ:
ชื่อสัญลักษณ์ | 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:{<NN.?>*<VBD.?>*<JJ.?>*<CC>?}""" 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: <ChunkRule: '<NN.?>*<VBD.?>*<JJ.?>*<CC>?'> 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.
กล่าวอีกนัยหนึ่ง การแบ่งส่วนจะใช้ในการเลือกชุดย่อยของโทเค็น โปรดปฏิบัติตามโค้ดด้านล่างเพื่อทำความเข้าใจวิธีการใช้การแบ่งส่วนเพื่อเลือกโทเค็น ในตัวอย่างนี้ คุณจะเห็นกราฟซึ่งสัมพันธ์กับกลุ่มคำนามวลี เราจะเขียนโค้ดและวาดกราฟเพื่อความเข้าใจที่ดีขึ้น
รหัสเพื่อสาธิตกรณีการใช้งาน
import nltk text = "learn php from guru99" tokens = nltk.word_tokenize(text) print(tokens) tag = nltk.pos_tag(tokens) print(tag) grammar = "NP: {<DT>?<JJ>*<NN>}" 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
กราฟ
จากกราฟ เราสามารถสรุปได้ว่า “learn” และ “guru99” เป็นโทเค็นที่แตกต่างกันสองแบบ แต่จัดอยู่ในประเภท Noun Phrase ในขณะที่โทเค็น “from” ไม่ได้เป็นของ Noun Phrase
Chunking ใช้เพื่อจัดหมวดหมู่โทเค็นที่แตกต่างกันให้อยู่ในกลุ่มเดียวกัน ผลลัพธ์จะขึ้นอยู่กับไวยากรณ์ที่เลือก Chunking NLTK เพิ่มเติมใช้เพื่อแท็กรูปแบบและสำรวจคลังข้อความ
การนับแท็ก POS
เราได้พูดคุยกันต่างๆ pos_tag ในส่วนก่อนหน้า ในบทช่วยสอนนี้โดยเฉพาะ คุณจะได้เรียนรู้วิธีการนับแท็กเหล่านี้ การนับแท็กมีความสำคัญสำหรับการจำแนกข้อความ ตลอดจนการเตรียมฟีเจอร์สำหรับการดำเนินการตามภาษาธรรมชาติ ฉันจะหารือกับคุณเกี่ยวกับแนวทางที่ guru99 ใช้ขณะเตรียมโค้ดพร้อมกับการอภิปรายเกี่ยวกับผลลัพธ์ หวังว่าสิ่งนี้จะเป็นประโยชน์กับคุณ
วิธีนับแท็ก:
ขั้นแรกเราจะเขียนโค้ดที่ใช้งานได้ จากนั้นเราจะเขียนขั้นตอนต่างๆ เพื่ออธิบายโค้ด
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:
ตัวนับ ({'NN': 5, ',': 2, 'ถึง': 1, 'CC': 1, 'VBZ': 1, 'NNS': 1, 'ซีดี': 1, '.': 1 , 'DT': 1, 'JJS': 1, 'JJ': 1, 'JJR': 1, 'IN': 1, 'VB': 1, 'RB': 1})
รายละเอียดของรหัส
- ในการนับแท็ก คุณสามารถใช้แพ็กเกจ Counter จากโมดูลของคอลเลกชันได้ Counter คือซับคลาสของพจนานุกรมที่ทำงานบนหลักการของการดำเนินการคีย์-ค่า เป็นคอลเลกชันที่ไม่มีการจัดลำดับ โดยที่องค์ประกอบจะถูกเก็บไว้เป็นคีย์ของพจนานุกรมในขณะที่ count คือค่าขององค์ประกอบเหล่านั้น
- นำเข้า nltk ซึ่งมีโมดูลเพื่อสร้างโทเค็นข้อความ
- เขียนข้อความที่คุณต้องการนับ pos_tag
- คำบางคำเป็นตัวพิมพ์ใหญ่และบางคำใช้ตัวพิมพ์เล็ก ดังนั้นจึงเหมาะสมที่จะแปลงคำทั้งหมดเป็นตัวพิมพ์เล็กก่อนที่จะใช้โทเค็น
- ส่งคำผ่าน word_tokenize จาก nltk
- คำนวณ pos_tag ของแต่ละโทเค็น
Output = [('guru99', 'NN'), ('is', 'VBZ'), ('one', 'CD'), ('of', 'IN'), ('the', 'DT'), ('best', 'JJS'), ('site', 'NN'), ('to', 'TO'), ('learn', 'VB'), ('web', 'NN'), (',', ','), ('sap', 'NN'), (',', ','), ('ethical', 'JJ'), ('hacking', 'NN'), ('and', 'CC'), ('much', 'RB'), ('more', 'JJR'), ('online', 'JJ')]
- ตอนนี้บทบาทของตัวนับพจนานุกรมมา เราได้นำเข้าในบรรทัดรหัส 1 คำเป็นคีย์และแท็กเป็นค่าและตัวนับจะนับจำนวนรวมแท็กแต่ละรายการที่มีอยู่ในข้อความ
การกระจายความถี่
การกระจายความถี่หมายถึงจำนวนครั้งที่ผลลัพธ์ของการทดสอบเกิดขึ้น ใช้เพื่อค้นหาความถี่ของแต่ละคำที่เกิดขึ้นในเอกสาร มันใช้ FreqDistclass และกำหนดโดย nltk.ความน่าจะเป็น โมดูล.
โดยทั่วไปการกระจายความถี่จะถูกสร้างขึ้นโดยการนับตัวอย่างที่ทำการทดสอบซ้ำๆ จำนวนการนับจะเพิ่มขึ้นครั้งละหนึ่งครั้ง เช่น
freq_dist = FreqDist()
สำหรับโทเค็นในเอกสาร:
freq_dist.inc (โทเค็นประเภท ())
สำหรับคำใดๆ เราสามารถตรวจสอบได้ว่าเกิดขึ้นในเอกสารนั้นๆ กี่ครั้ง เช่น
- วิธีการนับ: freq_dist.count('and')นิพจน์นี้ส่งคืนค่าของจำนวนครั้งที่ 'และ' เกิดขึ้น เรียกว่าวิธีการนับ
- วิธีความถี่: 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()
คำอธิบายของรหัส:
- นำเข้าโมดูล nltk
- เขียนข้อความที่คุณต้องการค้นหาการกระจายคำ
- โทเค็นแต่ละคำในข้อความซึ่งทำหน้าที่เป็นอินพุตไปยังโมดูล FreqDist ของ nltk
- ใช้แต่ละคำกับ nlk.FreqDist ในรูปแบบของรายการ
- พล็อตคำในกราฟโดยใช้ plot()
โปรดเห็นภาพกราฟเพื่อความเข้าใจข้อความที่เขียนได้ดีขึ้น
หมายเหตุ: คุณต้องติดตั้ง matplotlib เพื่อดูกราฟด้านบน
สังเกตกราฟด้านบน สอดคล้องกับการนับการเกิดขึ้นของแต่ละคำในข้อความ ช่วยในการศึกษาข้อความและเพิ่มเติมในการดำเนินการวิเคราะห์เชิงอารมณ์โดยใช้ข้อความ สรุปได้ว่า nltk มีโมดูลสำหรับนับการเกิดขึ้นของแต่ละคำในข้อความ ซึ่งช่วยในการเตรียมสถิติของคุณลักษณะภาษาธรรมชาติ มีบทบาทสำคัญในการค้นหาคำหลักในข้อความ คุณยังสามารถแยกข้อความจาก pdf โดยใช้ไลบรารีเช่น extract, PyPDF2 และป้อนข้อความไปที่ nlk.FreqDist
คำหลักคือ "tokenize" หลังจาก tokenize แล้ว ระบบจะตรวจสอบแต่ละคำในย่อหน้าหรือเอกสารข้อความที่กำหนดเพื่อระบุจำนวนครั้งที่เกิดขึ้น คุณไม่จำเป็นต้องมีชุดเครื่องมือ NLTK สำหรับขั้นตอนนี้ คุณยังสามารถทำได้โดยใช้ทักษะการเขียนโปรแกรม Python ของคุณเอง ชุดเครื่องมือ NLTK จะให้เพียงโค้ดที่พร้อมใช้งานสำหรับการดำเนินการต่างๆ เท่านั้น
การนับคำแต่ละคำอาจไม่มีประโยชน์มากนัก ควรเน้นที่การจัดวางคำและไบแกรมซึ่งเกี่ยวข้องกับคำจำนวนมากในคู่คำ คู่คำเหล่านี้จะระบุคำสำคัญที่มีประโยชน์สำหรับคุณลักษณะภาษาธรรมชาติที่ดีขึ้นซึ่งสามารถป้อนให้กับเครื่องได้ โปรดดูรายละเอียดด้านล่าง
การจัดระเบียบ: บิ๊กแกรมและไตรแกรม
Collocations คืออะไร?
การจัดระเบียบคือคู่ของคำที่เกิดขึ้นพร้อมกันหลายครั้งในเอกสาร คำนวณโดยจำนวนคู่ที่เกิดขึ้นพร้อมกันกับจำนวนคำโดยรวมของเอกสาร
พิจารณาสเปกตรัมแม่เหล็กไฟฟ้าด้วยคำต่างๆ เช่น รังสีอัลตราไวโอเลต รังสีอินฟราเรด
คำว่าอัลตราไวโอเลตและรังสีไม่ได้ใช้แยกกัน จึงสามารถถือเป็นการจัดระเบียบได้ อีกตัวอย่างหนึ่งคือ CT Scan เราไม่ได้พูดว่า CT และ Scan แยกกัน และด้วยเหตุนี้ทั้งสองจึงถือเป็นการจัดระเบียบด้วย
เราสามารถพูดได้ว่าการค้นหาการจัดระเบียบจำเป็นต้องคำนวณความถี่ของคำและลักษณะของคำในบริบทของคำอื่น คอลเลกชันคำเฉพาะเหล่านี้จำเป็นต้องมีการกรองเพื่อรักษาข้อกำหนดของเนื้อหาที่เป็นประโยชน์ จากนั้นแต่ละกรัมของคำอาจจะถูกให้คะแนนตามการวัดการเชื่อมโยงบางอย่าง เพื่อกำหนดความน่าจะเป็นสัมพัทธ์ของแต่ละอินแกรมที่จะถูกจัดเรียง
การจัดระเบียบสามารถแบ่งได้เป็นสองประเภท -
- บิ๊กแกรมคการรวมกันของสองคำ
- trigramsการรวมกันของสามคำ
บิ๊กแกรมและไตรแกรมให้คุณสมบัติที่มีความหมายและมีประโยชน์มากขึ้นสำหรับขั้นตอนการแยกคุณสมบัติ สิ่งเหล่านี้มีประโยชน์อย่างยิ่งในการวิเคราะห์เชิงอารมณ์โดยใช้ข้อความ
โค้ดตัวอย่างบิ๊กแกรม
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', '.')]
โค้ดตัวอย่าง Trigrams
บางครั้งสิ่งสำคัญคือต้องดูคำสามคำในประโยคเพื่อการวิเคราะห์ทางสถิติและการนับความถี่ สิ่งนี้มีบทบาทสำคัญในการขึ้นรูปอีกครั้ง 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 เป็นกระบวนการที่ซับซ้อน ดังนั้นการติดแท็ก POS ทั่วไปจึงไม่สามารถทำได้ด้วยตนเอง เนื่องจากคำบางคำอาจมีความหมายที่แตกต่างกัน (คลุมเครือ) ตามโครงสร้างของประโยค การแปลงข้อความในรูปแบบของรายการเป็นขั้นตอนสำคัญก่อนที่จะแท็ก เนื่องจากแต่ละคำในรายการจะถูกวนซ้ำและนับรวมสำหรับแท็กใดแท็กหนึ่ง โปรดดูโค้ดด้านล่างเพื่อทำความเข้าใจให้ดีขึ้น
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)))
Output:
[('สวัสดี', 'NNP'), ('Guru99', 'NNP'), (',', ','), ('คุณ', 'PRP'), ('มี', 'VBP') , ('build', 'VBN'), ('a', 'DT'), ('มาก', 'RB'), ('ดี', 'JJ'), ('ไซต์', 'NN') , ('และ', 'CC'), ('ฉัน', 'PRP'), ('ความรัก', 'VBP'), ('เยี่ยมชม', 'VBG'), ('ของคุณ', 'PRP$' ), ('ไซต์', 'NN'), ('.', '.')]
คำอธิบายรหัส:
- รหัสที่จะนำเข้า nltk (ชุดเครื่องมือภาษาธรรมชาติซึ่งมีโมดูลย่อย เช่น โทเค็นประโยคและโทเค็นคำ)
- ข้อความที่จะพิมพ์แท็ก
- โทเค็นประโยค
- For loop ถูกนำมาใช้โดยที่คำถูกโทเค็นจากประโยคและแท็กของแต่ละคำถูกพิมพ์เป็นเอาต์พุต
ใน Corpus มีแท็ก POS สองประเภท:
- ตามกฎเกณฑ์
- เครื่องแท็ก POS Stochastic
1.แท็ก POS ตามกฎ: สำหรับคำที่มีความหมายคลุมเครือ จะใช้แนวทางตามกฎเกณฑ์โดยอาศัยข้อมูลบริบท โดยทำการตรวจสอบหรือวิเคราะห์ความหมายของคำก่อนหน้าหรือคำถัดไป ข้อมูลจะถูกวิเคราะห์จากสภาพแวดล้อมของคำหรือจากภายในตัวคำเอง ดังนั้น คำจะถูกกำหนดแท็กโดยใช้กฎไวยากรณ์ของภาษาใดภาษาหนึ่ง เช่น การใช้ตัวพิมพ์ใหญ่และเครื่องหมายวรรคตอน เช่น ตัวกำหนดแท็กของบริลล์
2. เครื่องแท็ก POS แบบ Stochastic: วิธีการนี้จะใช้วิธีการที่แตกต่างกัน เช่น ความถี่หรือความน่าจะเป็น หากคำส่วนใหญ่ถูกแท็กด้วยแท็กเฉพาะในชุดการฝึก ดังนั้นในประโยคทดสอบ คำนั้นจะได้รับแท็กนั้น แท็กคำไม่เพียงขึ้นอยู่กับแท็กของตัวเองเท่านั้น แต่ยังขึ้นอยู่กับแท็กก่อนหน้าด้วย วิธีการนี้ไม่ได้แม่นยำเสมอไป อีกวิธีหนึ่งคือการคำนวณความน่าจะเป็นที่แท็กเฉพาะในประโยคจะเกิดขึ้น ดังนั้นแท็กสุดท้ายจึงคำนวณโดยการตรวจสอบความน่าจะเป็นสูงสุดของคำที่มีแท็กใดแท็กหนึ่ง
การแท็ก POS ด้วยโมเดล Markov ที่ซ่อนอยู่
ปัญหาการแท็กสามารถสร้างแบบจำลองได้โดยใช้ HMM โดยจะถือว่าโทเค็นอินพุตเป็นลำดับที่สังเกตได้ ในขณะที่แท็กถือเป็นสถานะที่ซ่อนอยู่ และเป้าหมายคือการกำหนดลำดับสถานะที่ซ่อนอยู่ ตัวอย่างเช่น x = x1,x2,…………,xn โดยที่ x คือลำดับของโทเค็นในขณะที่ ย = ย1,y2,y3,y4……ยnเป็นลำดับที่ซ่อนอยู่
โมเดล Markov ที่ซ่อนอยู่ (HMM) ทำงานอย่างไร
HMM ใช้การกระจายแบบรวมซึ่งก็คือ P(x, y) โดยที่ x คือลำดับอินพุต/ลำดับโทเค็น และ y คือลำดับแท็ก
ลำดับแท็กสำหรับ x จะเป็น argmaxy1….ynหน้า(x1,x2,….xn,y1,y2,y3,…..) เราได้จัดหมวดหมู่แท็กจากข้อความแล้ว แต่สถิติของแท็กดังกล่าวมีความสำคัญ ส่วนต่อไปคือการนับแท็กเหล่านี้สำหรับการศึกษาทางสถิติ
สรุป
- การติดแท็ก POS เอ็นแอลทีเค เป็นกระบวนการในการทำเครื่องหมายคำในรูปแบบข้อความสำหรับส่วนหนึ่งของคำพูดตามคำจำกัดความและบริบท
- ตัวอย่างการติดแท็ก NLTK POS ได้แก่ CC, CD, EX, JJ, MD, NNP, PDT, PRP$, TO เป็นต้น
- POS tagger ใช้เพื่อกำหนดข้อมูลไวยากรณ์ของแต่ละคำในประโยค การติดตั้ง การนำเข้า และการดาวน์โหลดแพ็คเกจทั้งหมดของแท็ก Part of Speech ด้วย NLTK เสร็จสมบูรณ์
- การแบ่งส่วนใน NLP เป็นกระบวนการในการนำข้อมูลชิ้นเล็กๆ มาจัดกลุ่มเป็นหน่วยขนาดใหญ่
- ไม่มีกฎที่กำหนดไว้ล่วงหน้า แต่คุณสามารถรวมกฎเหล่านี้ได้ตามความต้องการและข้อกำหนด
- Chunking ใช้สำหรับการตรวจจับเอนทิตี เอนทิตีคือส่วนหนึ่งของประโยคที่เครื่องได้รับคุณค่าสำหรับความตั้งใจใดๆ
- Chunking ใช้เพื่อจัดหมวดหมู่โทเค็นที่แตกต่างกันให้อยู่ในกลุ่มเดียวกัน