Tokenize NLTK: Tokenizer คำและประโยคพร้อมตัวอย่าง

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

NLTK Tokenize แบ่งข้อความขนาดใหญ่เป็นหน่วยย่อยที่เรียกว่าโทเค็น ซึ่งเป็นขั้นตอนพื้นฐานในการประมวลผลภาษาธรรมชาติ ชุดเครื่องมือนี้มี word_tokenize สำหรับแบ่งประโยคออกเป็นคำ และ sent_tokenize สำหรับแบ่งข้อความออกเป็นประโยคแต่ละประโยค

  • 🇧🇷 การทำให้เป็นโทเค็น: แบ่งข้อความขนาดใหญ่เป็นหน่วยย่อยที่เรียกว่าโทเค็นเพื่อใช้ในการวิเคราะห์
  • 🧠 NLP Foundation: ทำหน้าที่เป็นขั้นตอนพื้นฐานสำหรับการตัดคำรากศัพท์ การหาคำหลัก และการแปลงข้อความเป็นตัวเลข
  • 🔤 word_tokenize(): แยกประโยคออกเป็นคำแต่ละคำ โดยแยกเครื่องหมายวรรคตอนออกจากกัน
  • 📝 sent_tokenize(): แบ่งข้อความออกเป็นประโยคย่อยๆ
  • 📊 ใช้กรณี: การนำทั้งสองอย่างมารวมกันจะช่วยให้คุณสามารถคำนวณคุณลักษณะต่างๆ เช่น จำนวนคำเฉลี่ยต่อประโยค สำหรับการเรียนรู้ของเครื่องได้

NLTK โทเคไนซ์

Tokenization คืออะไร?

tokenization เป็นกระบวนการที่ข้อความจำนวนมากถูกแบ่งออกเป็นส่วนเล็กๆ ที่เรียกว่าโทเค็น โทเค็นเหล่านี้มีประโยชน์มากในการค้นหารูปแบบ และถือเป็นขั้นตอนพื้นฐานสำหรับการแยกและย่อคำ โทเค็นไนซ์ยังช่วยทดแทนองค์ประกอบข้อมูลที่ละเอียดอ่อนด้วยองค์ประกอบข้อมูลที่ไม่ละเอียดอ่อน

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

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

ชุดเครื่องมือภาษาธรรมชาติมีโมดูล NLTK ที่สำคัญมาก โทเค็น ประโยคที่ประกอบด้วยโมดูลย่อยเพิ่มเติม

  1. โทเค็นคำ
  2. โทเค็นประโยค

Tokenization ของคำ

เราใช้วิธี word_tokenize() เพื่อแยกประโยคออกเป็นคำ ผลลัพธ์ของโทเค็นคำสามารถแปลงเป็น Data Frame เพื่อการทำความเข้าใจข้อความที่ดีขึ้นในแอปพลิเคชันการเรียนรู้ของเครื่อง นอกจากนี้ยังสามารถใช้เป็นอินพุตสำหรับขั้นตอนการทำความสะอาดข้อความเพิ่มเติม เช่น การลบเครื่องหมายวรรคตอน การลบอักขระตัวเลข หรือการแยกตัวอักษร โมเดลแมชชีนเลิร์นนิงต้องใช้ข้อมูลตัวเลขเพื่อฝึกฝนและคาดการณ์ การแปลงโทเค็นคำกลายเป็นส่วนสำคัญของข้อความ (สตริง) เป็นการแปลงข้อมูลตัวเลข โปรดอ่านเกี่ยวกับ ถุงคำหรือเคานต์เวคเตอร์ไรเซอร์- โปรดดูตัวอย่างคำโทเค็น NLTK ด้านล่างเพื่อทำความเข้าใจทฤษฎีได้ดีขึ้น

from nltk.tokenize import word_tokenize
text = "God is Great! I won a lottery."
print(word_tokenize(text))

Output: ['God', 'is', 'Great', '!', 'I', 'won', 'a', 'lottery', '.']

Tokenization ของคำ

Code คำอธิบาย

  1. โมดูล word_tokenize ถูกนำเข้าจากไลบรารี NLTK
  2. ตัวแปร “ข้อความ” เริ่มต้นได้ด้วยสองประโยค
  3. ตัวแปรข้อความถูกส่งผ่านในโมดูล word_tokenize และพิมพ์ผลลัพธ์ โมดูลนี้จะแบ่งแต่ละคำด้วยเครื่องหมายวรรคตอนซึ่งคุณสามารถดูได้ในผลลัพธ์

Tokenization ของประโยค

โมดูลย่อยที่มีอยู่สำหรับข้างต้นคือ send_tokenize คำถามที่ชัดเจนในใจของคุณก็คือ เหตุใดจึงจำเป็นต้องมีโทเค็นประโยคเมื่อเรามีตัวเลือกในการใช้โทเค็นคำ- ลองนึกภาพคุณต้องนับคำโดยเฉลี่ยต่อประโยค คุณจะคำนวณอย่างไร? เพื่อให้บรรลุภารกิจดังกล่าว คุณต้องใช้ทั้งโทเค็นประโยค NLTK และโทเค็นคำ NLTK เพื่อคำนวณอัตราส่วน เอาต์พุตดังกล่าวทำหน้าที่เป็นคุณลักษณะที่สำคัญสำหรับการฝึกเครื่องจักรเนื่องจากคำตอบจะเป็นตัวเลข

ตรวจสอบตัวอย่างโทเค็น NLTK ด้านล่างเพื่อเรียนรู้ว่าโทเค็นประโยคแตกต่างจากโทเค็นคำอย่างไร

from nltk.tokenize import sent_tokenize
text = "God is Great! I won a lottery."
print(sent_tokenize(text))

Output: ['God is Great!', 'I won a lottery ']

เรามี 12 คำพูดและ สองประโยค สำหรับอินพุตเดียวกัน

Tokenization ของประโยค

คำอธิบายของโปรแกรม

  1. ในบรรทัดเหมือนโปรแกรมก่อนหน้า ให้นำเข้าโมดูล send_tokenize
  2. เราได้รับประโยคเดียวกัน tokenizer ประโยคเพิ่มเติมในโมดูล NLTK แยกวิเคราะห์ประโยคนั้นและแสดงผลลัพธ์ เห็นได้ชัดว่าฟังก์ชันนี้แบ่งแต่ละประโยค

โทเค็นไนเซอร์เหนือคำ Python ตัวอย่างคือการตั้งค่าที่ดีในการทำความเข้าใจกลไกของโทเค็นคำและประโยค

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

การแยกคำ (Word tokenization) จะแยกข้อความออกเป็นคำและเครื่องหมายวรรคตอนโดยใช้ฟังก์ชัน word_tokenize() ในขณะที่การแยกประโยค (Sentence tokenization) จะแยกข้อความออกเป็นประโยคแยกกันโดยใช้ฟังก์ชัน sent_tokenize() โดยทั่วไปมักจะใช้ทั้งสองวิธีร่วมกันเพื่อหาคุณลักษณะต่างๆ เช่น จำนวนคำต่อประโยค

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

ใช่ NLTK รองรับหลายภาษาโดยการโหลดโมเดล Punkt ที่เหมาะสม เช่น sent_tokenize(text, language='french') การรองรับจะแตกต่างกันไปตามแต่ละภาษา และบางสคริปต์อาจต้องการตัวแยกคำเฉพาะทาง

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

ใช่แล้ว ระบบแยกคำด้วย AI สมัยใหม่ใช้วิธีการแยกคำย่อย เช่น Byte Pair Encoding หรือ WordPiece โดยการแบ่งคำที่ใช้ไม่บ่อยออกเป็นชิ้นเล็กๆ วิธีนี้ช่วยให้คำศัพท์กระชับขึ้น ในขณะเดียวกันก็ยังสามารถแสดงคำที่ไม่คุ้นเคยหรือคำประสมได้

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