ในบทความนี้ (ตอนที่ 2 ของซีรีส์ Milvus Vector Database) จะอธิบายวิธีการใช้งาน Full-Text Search เพื่อค้นหาร้านอาหารจากข้อความที่ผู้ใช้ป้อน โดยเน้นการเลือก tokenizer ที่เหมาะสมกับภาษาไทย
ความสำคัญของ Text Analyzer และ Tokenizer ใน Milvus
ก่อนใช้งาน Full-Text Search ใน Milvus ต้องเข้าใจว่า Milvus ใช้ text analyzer เพื่อแปลงข้อความให้อยู่ในรูปแบบที่เหมาะสมกับการค้นหา (extract, enrich, analyze, index) โดยมีตัวเลือก tokenizer หลัก ๆ คือ standard
และ whitespace
ซึ่งแต่ละแบบเหมาะกับภาษาแตกต่างกัน
เริ่มต้นด้วยการตัดคำที่นิยมสำหรับภาษาไทยนั้นก็คือ pyThaiNLP ซึ่งเป็นหนึ่งในตัวเลือกที่ดีที่สุดสำหรับภาษาไทยในปัจจุบัน
ตัวอย่างการตัดคำภาษาไทยด้วย pyThaiNLP
from pythainlp.tokenize import word_tokenize
word_tokenize('ไข่หวานบ้านซูชิ สาขาประชาอุทิศ', engine="newmm")
ผลลัพธ์:
['ไข่หวาน', 'บ้าน', 'ซูชิ', ' ', 'สาขา', 'ประชา', 'อุทิศ']
เปรียบเทียบ Standard Tokenizer กับ Whitespace Tokenizer
- Standard Tokenizer: เหมาะกับภาษาอังกฤษและภาษายุโรป แต่กับภาษาไทยอาจตัดคำผิด เช่น
ไข่หวานบ้านซูชิ สาขาประชาอุทิศ
ได้ หวานบ
และ านซูชิ
แทน บ้าน
และ ซูชิ
- Whitespace Tokenizer: เหมาะกับภาษาไทยเมื่อใช้ร่วมกับ pyThaiNLP เพื่อแยกคำด้วย whitespace
ตัวอย่างการใช้ Standard Tokenizer ใน Milvus
analyzer_params = {"tokenizer": "standard"}
result = client.run_analyzer("ไข่หวานบ้านซูชิ สาขาประชาอุทิศ", analyzer_params)
print("analyzer output:", result)
ผลลัพธ์: