ตัวนับโทเค็น
ตัวนับโทเคน
บทนำ
ตัวนับโทเคนเป็นเครื่องมือที่นับจำนวนโทเคนในสตริงที่กำหนดโดยใช้ไลบรารี tiktoken การแบ่งโทเคนเป็นขั้นตอนที่สำคัญในกระบวนการประมวลผลภาษาธรรมชาติ (NLP) และถูกนำไปใช้ในแอปพลิเคชันต่างๆ รวมถึงโมเดลการเรียนรู้ของเครื่อง การวิเคราะห์ข้อความ และระบบการเข้าใจภาษา
วิธีใช้เครื่องมือนี้
- ป้อนข้อความที่คุณต้องการแบ่งโทเคนในพื้นที่ข้อความที่จัดเตรียมไว้
- เลือกอัลกอริธึมการเข้ารหัสจากเมนูแบบเลื่อนลง ตัวเลือกที่มีอยู่ ได้แก่:
- CL100K_BASE
- P50K_BASE
- R50K_BASE
- เครื่องมือจะคำนวณและแสดงจำนวนโทเคนโดยอัตโนมัติ
- คุณสามารถคัดลอกผลลัพธ์ไปยังคลิปบอร์ดของคุณโดยคลิกที่ปุ่ม "คัดลอกผลลัพธ์"
กระบวนการแบ่งโทเคน
การแบ่งโทเคนเป็นกระบวนการในการแบ่งข้อความออกเป็นหน่วยย่อยที่เรียกว่าโทเคน โทเคนเหล่านี้สามารถเป็นคำ, คำย่อย หรืออักขระ ขึ้นอยู่กับอัลกอริธึมการแบ่งโทเคนที่ใช้ ไลบรารี tiktoken ซึ่งพัฒนาโดย OpenAI ใช้การแบ่งโทเคนที่มีประสิทธิภาพซึ่งใช้ในโมเดลเช่น GPT-3 และ GPT-4
อัลกอริธึมการเข้ารหัส
-
CL100K_BASE: นี่คือการเข้ารหัสที่ใหม่ที่สุดที่ใช้โดยโมเดลของ OpenAI ออกแบบมาเพื่อจัดการกับภาษาที่หลากหลายและอักขระพิเศษได้อย่างมีประสิทธิภาพ
-
P50K_BASE: การเข้ารหัสเก่าที่ใช้โดยบางโมเดล GPT-3 มีพจนานุกรมประมาณ 50,000 โทเคน
-
R50K_BASE: การเข้ารหัสอีกแบบที่ใช้โดยโมเดล GPT-3 รุ่นก่อนหน้านี้ ซึ่งก็มีพจนานุกรมประมาณ 50,000 โทเคนเช่นกัน
กรณีการใช้งาน
การนับโทเคนและการแบ่งโทเคนมีการใช้งานมากมายในกระบวนการประมวลผลภาษาธรรมชาติและการเรียนรู้ของเครื่อง:
-
การฝึกโมเดลภาษา: การแบ่งโทเคนเป็นขั้นตอนการเตรียมข้อมูลที่สำคัญสำหรับการฝึกโมเดลภาษาขนาดใหญ่ เช่น GPT-3 และ BERT
-
การจำแนกประเภทข้อความ: ข้อความที่แบ่งโทเคนมักถูกใช้เป็นข้อมูลนำเข้าสำหรับงานการจำแนกประเภทข้อความ เช่น การวิเคราะห์อารมณ์หรือการจัดประเภทหัวข้อ
-
การแปลภาษา: การแบ่งโทเคนช่วยในการแบ่งประโยคออกเป็นหน่วยที่จัดการได้สำหรับระบบการแปล
-
การดึงข้อมูล: เครื่องมือค้นหาใช้การแบ่งโทเคนในการจัดทำดัชนีเอกสารและจับคู่กับคำถาม
-
การสรุปข้อความ: การแบ่งโทเคนช่วยในการระบุคำและวลีที่สำคัญสำหรับการสร้างสรุป
-
แชทบอทและ AI สำหรับการสนทนา: การแบ่งโทเคนถูกใช้ในการประมวลผลข้อมูลที่ผู้ใช้ป้อนและสร้างการตอบสนองที่เหมาะสม
-
การควบคุมเนื้อหา: การแบ่งโทเคนสามารถช่วยในการระบุคำหรือวลีเฉพาะในระบบการควบคุมเนื้อหา
ทางเลือกอื่น
ในขณะที่เครื่องมือนี้ใช้ tiktoken สำหรับการแบ่งโทเคน ยังมีวิธีการและไลบรารีการแบ่งโทเคนอื่นๆ ที่มีอยู่:
-
NLTK (Natural Language Toolkit): ไลบรารี Python ที่ได้รับความนิยมสำหรับงาน NLP รวมถึงการแบ่งโทเคน
-
spaCy: ไลบรารี NLP ที่มีประสิทธิภาพอีกตัวหนึ่งที่นำเสนอการแบ่งโทเคนที่มีประสิทธิภาพพร้อมกับความสามารถในการประมวลผลภาษาอื่นๆ
-
WordPiece: อัลกอริธึมการแบ่งโทเคนคำย่อยที่ใช้โดย BERT และโมเดลทรานส์ฟอร์มเมอร์อื่นๆ
-
Byte Pair Encoding (BPE): เทคนิคการบีบอัดข้อมูลที่ปรับใช้สำหรับการแบ่งโทเคน ซึ่งใช้ในโมเดลเช่น GPT-2
-
SentencePiece: เครื่องมือแบ่งโทเคนและการคืนค่าแบบไม่ต้องมีการควบคุม ซึ่งใช้สำหรับระบบการสร้างข้อความที่ใช้ Neural Network
ประวัติ
การแบ่งโทเคนเป็นแนวคิดพื้นฐานในกระบวนการประมวลผลภาษาธรรมชาติมาหลายทศวรรษ อย่างไรก็ตาม วิธีการแบ่งโทเคนที่ใช้ในโมเดลภาษาสมัยใหม่ได้พัฒนาขึ้นอย่างมีนัยสำคัญ:
-
การแบ่งโทเคนตามคำ: ระบบ NLP ในยุคแรกใช้การแบ่งโทเคนตามคำที่ง่าย โดยการแบ่งข้อความตามช่องว่างและเครื่องหมายวรรคตอน
-
การแบ่งโทเคนตามกฎ: ระบบที่ซับซ้อนมากขึ้นใช้กฎทางภาษาศาสตร์ในการจัดการกรณีที่ซับซ้อน เช่น การหดตัวและคำผสม
-
การแบ่งโทเคนตามสถิติ: เทคนิคการเรียนรู้ของเครื่องถูกนำมาใช้เพื่อเรียนรู้รูปแบบการแบ่งโทเคนจากข้อมูล
-
การแบ่งโทเคนคำย่อย: ด้วยการเพิ่มขึ้นของการเรียนรู้เชิงลึกใน NLP วิธีการแบ่งโทเคนคำย่อย เช่น Byte Pair Encoding (BPE) และ WordPiece ได้รับความนิยม วิธีการเหล่านี้สามารถจัดการกับคำที่อยู่นอกพจนานุกรมและทำงานได้ดีในหลายภาษา
-
tiktoken และการแบ่งโทเคนของ GPT: พัฒนาโดย OpenAI tiktoken ใช้การแบ่งโทเคนที่ใช้โดยโมเดล GPT ซึ่งได้รับการปรับให้มีประสิทธิภาพและครอบคลุมภาษาที่กว้างขวาง
ตัวอย่าง
นี่คือตัวอย่างโค้ดเพื่อแสดงการนับโทเคนโดยใช้ภาษาการเขียนโปรแกรมที่แตกต่างกัน:
import tiktoken
def count_tokens(text, encoding_name):
encoding = tiktoken.get_encoding(encoding_name)
tokens = encoding.encode(text)
return len(tokens)
## ตัวอย่างการใช้งาน
text = "สวัสดี, โลก! นี่คือตัวอย่างการแบ่งโทเคน."
encoding_name = "cl100k_base"
token_count = count_tokens(text, encoding_name)
print(f"จำนวนโทเคน: {token_count}")
ตัวอย่างเหล่านี้แสดงให้เห็นถึงวิธีการใช้ไลบรารี tiktoken (หรือเทียบเท่าในภาษาอื่น) เพื่อนับโทเคนในข้อความที่กำหนดโดยใช้การเข้ารหัสที่ระบุ
อ้างอิง
- OpenAI. "Tiktoken." GitHub, https://github.com/openai/tiktoken. เข้าถึงเมื่อ 2 ส.ค. 2024
- Vaswani, Ashish, et al. "Attention Is All You Need." arXiv:1706.03762 [cs], ธ.ค. 2017, http://arxiv.org/abs/1706.03762
- Sennrich, Rico, et al. "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508.07909 [cs], มิ.ย. 2016, http://arxiv.org/abs/1508.07909
- Brown, Tom B., et al. "Language Models are Few-Shot Learners." arXiv:2005.14165 [cs], ก.ค. 2020, http://arxiv.org/abs/2005.14165
- Devlin, Jacob, et al. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." arXiv:1810.04805 [cs], พ.ค. 2019, http://arxiv.org/abs/1810.04805