เรียนผู้อ่าน
ในบล็อกนี้ ฉันจะพูดถึงการแบ่งส่วนทั้งทางทฤษฎีและปฏิบัติใน Python
มาเริ่มกันเลย…
หมายเหตุ: สำหรับการนำไปใช้งาน จะเป็นการดีกว่าถ้าใช้ Python IDLE เนื่องจากเอาต์พุตคือรูปวาดของแผนผังที่ปรากฏขึ้นในหน้าต่างแยกต่างหาก
ระเบียบวาระการประชุม
- การจับเป็นก้อนคืออะไร?
- การแบ่งส่วนใช้ที่ไหน?
- ประเภทของการจับเป็นก้อน
- การใช้งาน chunking ใน Python
- ผลสอบ
การจับเป็นก้อนคืออะไร?
การแบ่งส่วนหมายถึงกระบวนการประมวลผลภาษาธรรมชาติที่ใช้ในการระบุส่วนของคำพูดและวลีสั้น ๆ ที่มีอยู่ในประโยคที่กำหนด
เมื่อนึกถึงชั้นเรียนไวยากรณ์ภาษาอังกฤษเก่าๆ ของเราในโรงเรียน โปรดทราบว่ามีคำพูดแปดส่วน ได้แก่ คำนาม กริยา คำคุณศัพท์ คำวิเศษณ์ คำบุพบท คำร่วม คำสรรพนาม และคำอุทาน นอกจากนี้ในคำจำกัดความข้างต้นของคำว่า chunking วลีสั้น ๆ หมายถึงวลีที่เกิดขึ้นโดยรวมส่วนใดส่วนหนึ่งของคำพูดเหล่านี้
ตัวอย่างเช่น การแบ่งกลุ่มสามารถทำได้เพื่อระบุและจัดกลุ่มวลีหรือคำนามเพียงอย่างเดียว คำคุณศัพท์หรือวลีคำคุณศัพท์ และอื่นๆ พิจารณาประโยคด้านล่าง:
“ฉันกินเบอร์เกอร์และขนมอบเป็นอาหารเช้า”
ในกรณีนี้ หากเราต้องการรวมกลุ่มหรือนามวลีเป็นก้อน เราจะได้คำว่า "burgers", "pastries" และ "lunch" ซึ่งเป็นกลุ่มคำนามหรือกลุ่มคำนามของประโยค
การแบ่งส่วนใช้ที่ไหน?
ทำไมเราถึงต้องการเรียนรู้บางสิ่งโดยไม่รู้ว่ามันใช้กันอย่างแพร่หลายที่ไหน! การดูแอปพลิเคชันที่กล่าวถึงในบล็อกส่วนนี้จะช่วยให้คุณสงสัยได้จนจบ!
Chunking ใช้เพื่อรับวลีที่จำเป็นจากประโยคที่กำหนด อย่างไรก็ตาม การแท็ก POS สามารถใช้เพื่อระบุส่วนของคำพูดที่เป็นของทุกคำในประโยคเท่านั้น
เมื่อเรามีคำอธิบายหรือการแก้ไขมากมายเกี่ยวกับคำเฉพาะหรือวลีที่เราสนใจ เราจะใช้การแบ่งส่วนเพื่อคว้าวลีที่ต้องการเพียงอย่างเดียว โดยไม่สนใจส่วนที่เหลือที่อยู่รอบๆ ดังนั้น การแบ่งกลุ่มจะปูทางในการจัดกลุ่มวลีที่จำเป็น และแยกตัวปรับแต่งทั้งหมดที่อยู่รอบๆ ซึ่งไม่จำเป็นสำหรับการวิเคราะห์ของเรา โดยสรุป การแยกส่วนช่วยให้เราแยกคำสำคัญออกจากคำอธิบายที่ยาวเพียงอย่างเดียวได้ ดังนั้นการแบ่งเป็นขั้นตอนในการดึงข้อมูล
สิ่งที่น่าสนใจคือ กระบวนการของการแบ่งส่วนใน NLP นี้ได้ถูกขยายไปยังแอปพลิเคชันอื่นๆ มากมาย; เช่น แบ่งกลุ่มผลไม้เป็นหมวดหมู่เฉพาะ เช่น ผลไม้ที่มีโปรตีนเป็นกลุ่ม ผลไม้ที่มีวิตามินเป็นกลุ่มอื่น เป็นต้น นอกจากนี้ การแบ่งกลุ่มยังสามารถใช้เพื่อจัดกลุ่มรถที่คล้ายกัน เช่น รถที่รองรับเกียร์อัตโนมัติเป็นกลุ่มหนึ่ง และกลุ่มอื่นๆ ที่รองรับเกียร์ธรรมดาเป็นกลุ่มอื่นเป็นต้น
ประเภทของการตัดเป็นก้อน
โดยกว้างๆ การแบ่งเป็นชิ้นๆ มีอยู่ 2 ประเภท:
- กำลังแตกเป็นชิ้นๆ.
- กำลังหั่นเป็นชิ้นๆ
การแบ่งส่วน:
ที่นี่เราไม่ได้ดำน้ำลึก แต่เราพอใจกับภาพรวมของข้อมูลแทน มันช่วยให้เราเข้าใจข้อมูลที่กำหนดโดยย่อเท่านั้น
การแบ่งส่วน:
การแบ่งย่อยช่วยให้เราได้รับข้อมูลโดยละเอียดต่างจากการแบ่งส่วนประเภทก่อนหน้า
ดังนั้น หากคุณต้องการข้อมูลเชิงลึก ลองพิจารณา "ทำให้เป็นก้อน" หรือไม่ก็เลือกใช้ "ทำให้เป็นก้อน"
การใช้งาน chunking ใน Python
ลองนึกภาพสถานการณ์ที่คุณต้องการแยกคำกริยาทั้งหมดออกจากข้อความที่กำหนดเพื่อการวิเคราะห์ ดังนั้นในกรณีนี้ เราต้องพิจารณาถึงการแบ่งกลุ่มของคำกริยาวลี เนื่องจากวัตถุประสงค์ของเราคือการแยกวลีกริยาทั้งหมดออกจากข้อความที่กำหนด การแบ่งส่วนทำได้โดยใช้นิพจน์ทั่วไป
อย่ากังวลหากนี่เป็นครั้งแรกที่คุณเจอคำว่า "สำนวนปกติ" ตารางด้านล่างอยู่ที่นี่เพื่อช่วยเหลือคุณ:
|
|
|
|
|
|
|
|
|
|
|
|
ตารางด้านบนมีนิพจน์ทั่วไปที่ใช้บ่อยที่สุด นิพจน์ทั่วไปมีประโยชน์มากในบรรทัดคำสั่ง โดยเฉพาะอย่างยิ่งในขณะที่กำลังลบ ค้นหา เปลี่ยนชื่อ หรือย้ายไฟล์
อย่างไรก็ตาม สำหรับการดำเนินการนี้ เราจะใช้เฉพาะ * . อย่าลังเลที่จะดูตารางด้านบนเพื่อทำความคุ้นเคยกับสัญลักษณ์!
เราจะดำเนินการเป็นก้อนโดยใช้ nltk ซึ่งเป็นไลบรารี NLP ที่ได้รับความนิยมมากที่สุด ดังนั้นให้เรานำเข้ามันก่อน
นำเข้า nltk
ลองพิจารณาข้อความตัวอย่างด้านล่างที่ฉันสร้างขึ้นเอง คุณสามารถแทนที่ข้อความด้านล่างด้วยข้อความตัวอย่างใดๆ ที่คุณต้องการนำไปใช้เป็นชิ้นๆ ได้!
ตัวอย่าง_ข้อความ = """ พระรามฆ่าทศกัณฐ์เพื่อช่วยนางสีดาจากลังกา ตำนานของรามัญเป็นมหากาพย์อินเดียที่ได้รับความนิยมมากที่สุด มีภาพยนตร์และซีรีย์มากมายอยู่แล้ว ถูกถ่ายทำในหลายภาษาที่นี่ในอินเดียโดยใช้เรื่องรามเกียรติ์ """
เห็นได้ชัดว่าข้อมูลจะต้องมีโทเค็นประโยคและจากนั้นโทเค็นคำก่อนที่เราจะดำเนินการต่อ โทเค็นไนเซชั่นนั้นไม่มีอะไรนอกจากกระบวนการแบ่งส่วนข้อความที่กำหนดออกเป็นหน่วยเล็กๆ เช่น ประโยค ในกรณีของโทเค็นประโยคและคำ ในกรณีของโทเค็นคำ
ตามด้วยโทเค็น การติดแท็ก POS (ส่วนหนึ่งของคำพูด) สำหรับแต่ละคำ โดยที่ส่วนของคำพูดของทุกคำจะถูกระบุ ตอนนี้เราสนใจเฉพาะคำกริยา part-of-speech และต้องการแยกออกมาเหมือนกัน
ดังนั้น ให้ระบุส่วนของคำพูดที่เราสนใจโดยใช้นิพจน์ทั่วไปที่จำเป็นดังนี้:
วีบี: {}
tokenized=nltk.sent_tokenize(sample_text) สำหรับฉันในโทเค็น: word=nltk.word_tokenize(i) # print(words)agged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}""" chunkParser=nltk.RegexpParser( chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()
นิพจน์ทั่วไป (RE) อยู่ภายในวงเล็บเหลี่ยม () ซึ่งจะอยู่ภายในวงเล็บปีกกา ({ และ })
หมายเหตุ: ระบุ RE ตาม POS ที่ต้องการ
VB ย่อมาจากคำกริยา POS จุดที่ถัดจาก VB หมายถึงการจับคู่อักขระใดๆ ที่ตามหลัง VB เครื่องหมายคำถามหลังจุดระบุว่าอักขระใดๆ หลัง B จะต้องเกิดขึ้นเพียงครั้งเดียวหรือต้องไม่เกิดขึ้นเลย อย่างไรก็ตาม จากตารางที่เราเห็นก่อนหน้านี้ อักขระนี้เป็นทางเลือก เราได้วางกรอบนิพจน์ทั่วไปในลักษณะนี้ เนื่องจากใน NLTK วลีกริยามีแท็ก POS ต่อไปนี้:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดังนั้น คำกริยาวลีสามารถเป็นของ POS ข้างต้นได้ นั่นเป็นเหตุผลว่าทำไมนิพจน์ทั่วไปจึงมีกรอบเป็น VB? ซึ่งรวมถึงหมวดหมู่ข้างต้นทั้งหมด แพ็คเกจ RegexpParser ใช้เพื่อตรวจสอบว่า POS ตรงตามรูปแบบที่เรากำหนดซึ่งเราได้กล่าวถึงโดยใช้ RE ก่อนหน้านี้หรือไม่
สามารถดูโค้ดทั้งหมดได้ดังนี้:
นำเข้า nltk nltk.download('averaged_perceptron_tagger') ตัวอย่าง_ข้อความ = """ พระรามฆ่าทศกัณฐ์เพื่อช่วยนางสีดาจากลังกา ตำนานของรามัญเป็นมหากาพย์อินเดียที่ได้รับความนิยมมากที่สุด มีภาพยนตร์และซีรีย์มากมายอยู่แล้ว ถูกถ่ายทำในหลายภาษาที่นี่ในอินเดียโดยใช้เรื่องรามเกียรติ์ """ tokenized=nltk.sent_tokenize(sample_text) สำหรับฉันในโทเค็น: word=nltk.word_tokenize(i) # print(words)agged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}""" chunkParser=nltk.RegexpParser( chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()
ผลสอบ
ในที่สุด เราได้รับรูปแบบต้นไม้ของ POS ของคำพร้อมกับคำที่ POS ตรงกับ RE ที่กำหนด สแน็ปช็อตของผลลัพธ์ที่ได้รับสำหรับข้อความตัวอย่างที่เราส่งผ่านสามารถดูได้ในรูปด้านบน
สังเกตว่าคำที่ตอบสนอง RE ของเราสำหรับวลีกริยาเพียงอย่างเดียวนั้นจะถูกเน้นอย่างชัดเจนในผลลัพธ์ ดังนั้น การแยกกลุ่มคำกริยาจึงทำได้สำเร็จ
หวังว่าบทความของฉันจะมีประโยชน์
Thank You!
อ้างอิง
2. ทฤษฎีเบื้องหลังการหั่นเป็นชิ้น
3. รายการ POS ทั้งหมดที่มีอยู่ใน NLP
เกี่ยวกับฉัน
ฉันชื่อ Nithyashree V นักศึกษาปีสุดท้ายของ BTech Computer Science and Engineering ฉันชอบที่จะเรียนรู้เทคโนโลยีเจ๋งๆ เหล่านี้และนำไปปฏิบัติ โดยเฉพาะอย่างยิ่งการสังเกตว่าเทคโนโลยีเหล่านี้ช่วยเราแก้ปัญหาที่ท้าทายของสังคมได้อย่างไร ความสนใจของฉัน ได้แก่ ปัญญาประดิษฐ์ วิทยาศาสตร์ข้อมูล และการประมวลผลภาษาธรรมชาติ
นี่คือโปรไฟล์ LinkedIn ของฉัน: LinkedIn ของฉัน
คุณสามารถอ่านบทความอื่นๆ ของฉันเกี่ยวกับ Analytics Vidhya จาก โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม.
ที่มา: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-Language-processing/
- "
- 7
- ทั้งหมด
- การวิเคราะห์
- การวิเคราะห์
- การใช้งาน
- รอบ
- บทความ
- บทความ
- ปัญญาประดิษฐ์
- บล็อก
- รับประทานอาหารเช้า
- รถยนต์
- รหัส
- มา
- ร่วมกัน
- วิทยาการคอมพิวเตอร์
- ข้อมูล
- วิทยาศาสตร์ข้อมูล
- ชั้นเยี่ยม
- ภาษาอังกฤษ
- การสกัด
- ชื่อจริง
- ครั้งแรก
- ฟอร์ม
- ฟรี
- เกียร์
- ดี
- คว้า
- ไวยากรณ์
- บัญชีกลุ่ม
- โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม
- ไฮไลต์
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- HTTPS
- ความคิด
- แยกแยะ
- รวมทั้ง
- อินเดีย
- ข้อมูล
- การสกัดข้อมูล
- Intelligence
- อยากเรียนรู้
- IT
- ภาษา
- ภาษา
- เรียนรู้
- การเรียนรู้
- ห้องสมุด
- Line
- รายการ
- ความรัก
- เครื่องหมาย
- การจับคู่
- ภาพบรรยากาศ
- เป็นที่นิยม
- Movies
- คือ
- ภาษาธรรมชาติ
- ประมวลผลภาษาธรรมชาติ
- NLP
- อื่นๆ
- ผลิตภัณฑ์อื่นๆ
- แบบแผน
- วลี
- ยอดนิยม
- PoS
- นำเสนอ
- โปรไฟล์
- หลาม
- RE
- ผู้อ่าน
- REST
- โรงเรียน
- วิทยาศาสตร์
- สั้น
- ภาพย่อ
- So
- แก้
- จุด
- เข้าพัก
- นักเรียน
- สนับสนุน
- เทคโนโลยี
- เวลา
- tokenization
- us
- ความหมายของ
- ภายใน
- คำ
- ปี
- เป็นศูนย์