-
Notifications
You must be signed in to change notification settings - Fork 273
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update Peter Norvig's spell checker to suggest words based on probability #137
Conversation
Update documents
Update from PyThaiNLP origin
… on probability (as suggested in issue #90 ) - use word frequencies from Thai National Corpus
Update from PyThaiNLP/pythainlp
… list for spell checker
pythainlp/spell/pn.py
Outdated
_WORDS_TOTAL = sum(_WORDS.values()) | ||
|
||
|
||
def _prob(word, n=_WORDS_TOTAL): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ฟังก์ชันนี้จะเก็บไว้ไหมครับ ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ต้องใช้ _prob() สำหรับเป็น sort key ใน correction() ครับ ต้องเก็บไว้ครับ
ผมกด Merge ได้เลยไหมครับ @bact |
@wannaphongcom ถ้ารีวิวแล้วโอเค merge ได้เลยครับ ผมเพิ่มคลาส |
…ect, based on NorvigSpellChecker class
ขอบคุณครับ :) |
ใช้วิธีดึง (คำ, ความถี่) มาจาก Thai National Corpus (TNC) เพื่อสร้างรายการคำสำหรับคำนวณความน่าจะเป็น
คำ "สะกดผิด" ใน TNC และวิธีแก้ไข
เนื่องจาก TNC มีขนาดใหญ่มาก จึงมีคำที่อาจไม่ได้เป็นคำที่พบทั่วไป หรือใช้ตัวสะกดตามพจนานุกรม
วิธีหนึ่ง (1) ที่เป็นไปได้เพื่อแก้ไขปัญหา คือเอารายการคำจาก TNC มาเทียบกับรายการคำที่เรามั่นใจว่าสะกดถูกแน่ๆ แล้วดึงมาเฉพาะคำที่มีอยู่ในทั้ง 2 รายการ แต่ก็จะทำให้จำนวนคำที่ได้น้อยลง (เป็นไปได้ว่า precision จะสูงขึ้น แต่ recall จะต่ำลง)
อีกวิธี (2) คือ ไปใช้ Thai Textbook Corpus (TTC) แทน ซึ่งจะเป็นคำที่เป็นทางการกว่า
วิธีที่ใช้ในปัจจุบัน (3) คือ ใช้ TNC ตามที่ดึงมาได้ แล้วกรองเอาคำจำนวนหนึ่งออกไป เพื่อให้มีเฉพาะคำที่น่าจะเป็นประโยชน์ต่อการแก้ไขคำผิด
วิธีที่ (3) นี้ จากการดูด้วยตาคร่าวๆ พบว่าคำที่มีความถี่เท่ากับ 2 มีทั้งคำที่สะกดผิดและถูก แต่โดยรวมแล้วคุณภาพน่าจะใช้ได้ โดยคาดหวังว่าคำที่สะกดถูกที่มี edit distance เดียวกันจะมีความถี่มากกว่า ทำให้ปัญหาไม่น่าจะมีมากนัก
ตัวอย่างคำและความถี่ที่พบใน TNC:
๒๕๔๘ 452
๑๕๐ 441
๒๕๔๗ 372
_______________________________ 48
วิทยาศาสตร์เทคโนโลยีและสิ่งแวดล้อม 10
งงงงงงงงงงงงงงงงงงงงงง 2
ม่อต้อ 2
ตลกหัวเราะ 2
เทรอซ์ 2
ยุกติธรรม 2
โหรสพ 2
ยยยยยยยยยยยยยยย 2
ปากขม 2
เจริญสมณธรรม 2
ลองเพลย์ 2
เตตียม 2
นั่งทางใน 2
ลิคเตนสไตน์ 2
มวยหมู่ 2
ข้าวนก 2
กะบ่อนกะแบ่น 2
เสิรฟ์ 2
66-70-73 2
Directors 2
.สำหรับชาวไทยมุสลิมในสี่จังหวัดภาคใต้ซึ่งยิ่งด้อยการศึกษาเป็นส่วนมากไม่ใช่เป็นเรื่องง่าย 1
.ได้ชี้แจงกับกลุ่มการเมืองว่าช่วงเวลา 1
.ต.ท.ทักษิณและให้การต้อนรับรัฐบาลของตนถึงสองครั้งสองคราทำไมการเดินทางของ 1