ซาวเดกซ์

ซาวเดกซ์ (Soundex) เป็นขั้นตอนวิธีแบบหนึ่งในขั้นตอนวิธีเชิงสัทลักษณ์ เกิดขึ้นเนื่องจากคำบางคำนั้นสามารถสะกดได้หลายแบบ อ่านออกเสียงคล้ายกัน อาจจะแตกต่างกันเพราะสำเนียงหรือวัฒนธรรม ซึ่งจะเป็นปัญหาหลักในการเก็บข้อมูลประวัติของชื่อบุคคล ซาวเดกซ์จึงเป็นเครื่องมือช่วยจัดการปัญหาเหล่านี้ได้ ด้วยการแทนคำหรือชื่อคนนั้นๆ ด้วยรหัสเฉพาะตัวของซาวเดกซ์เอง
รหัสของซาวเดกซ์นั้นจะมีความยาวคงที่ 4 ตัว ซึ่งรหัสเหล่านี้สามารถใช้ในการเปรียบเทียบคำสองคำที่ออกเสียงคล้ายๆกันได้ ซึ่งจะมีประโยชน์ในการค้นหาข้อมูลในฐานข้อมูลใหญ่ๆ เช่น หาชื่อคนในฐานข้อมูล ก็จะปรากฏชื่อและคำที่ใกล้เคียงกับที่เราต้องการค้นหาขึ้นมาให้โดยอัตโนมัติ ซึ่งจะมีประโยชน์มากเวลาสะกดชื่อที่ค้นหาผิดด้วย

**ประวัติ**
ซาวเดกซ์เกิดขึ้นในปี ค.ศ. 1918 โดย Robert C. Russell และ Margaret K. Odell โดยในตอนแรกใช้ชื่อว่า อินเดกซ์ (Index) ซึ่งเป็นขั้นตอนวิธีในการจัดเก็บข้อมูลแบบธรรมดาทั่วๆไป ขึ้นกับตัวอักษรของคำนั้นเป็นหลัก ซึ่งเขาได้จดสิทธิบัตรเอาไว้ใน 2 ปีต่อมา หลังจากนั้นเขาได้พัฒนาให้ขั้นตอนวิธีเก็บข้อมูลโดยใช้การออกเสียงของมนุษย์เป็นหลัก แบ่งเป็น 6 แบบ คือ ฐานริมฝีปากทั้งสอง, ฐานริมฝีปากกับฟัน, ฐานฟัน, ฐานปุ่มเหงือก, ฐานเพดานอ่อน, ฐานเส้นเสียง ตามการใช้อวัยวะในช่องปากในการออกเสียง

**ขั้นตอนการสร้างรหัสของซาวเดกซ์**
รหัสของซาวเดกซ์มีความยาว 4 ตัวอักษร ตัวแรกของรหัสจะเป็นตัวอักษร อีก 3 ตัวข้างหลังจะเป็นตัวเลข ซึ่งตัวอักษรใดที่มีเสียงเหมือนหรือคล้ายๆกัน จะใช้ตัวเลขเดียวกัน ซึ่งขั้นตอนการสร้างรหัสนั้นจะมี ดังนี้
# ตัวอักษรที่จะนำมาเข้ารหัสจะต้องเป็นอักษรละตินของภาษาอังกฤษเท่านั้น (รุ่นดั้งเดิมใช้กับภาษาอังกฤษแบบอเมริกัน)
# ตัวอักษรตัวแรกของรหัสของซาวเดกซ์จะต้องเป็นตัวใหญ่ (uppercase letter) เสมอ โดยจะมาจากตัวอักษรตัวแรกของข้อมูลป้อนเข้าที่นำมาเข้ารหัส
# ถ้าตัวอักษรใดเป็นตัวอักษรสระ (A,E,I,O,U) หรือตัว H,W,Y จะไม่นำไปเข้ารหัสต่อไป เพราะอาจจะทำให้รหัสเกิดความผิดพลาดได้
# ทำการเข้ารหัสกับตัวอักษรที่เหลือจากข้อ 3 โดยแปลงให้เป็นตัวเลขต่างๆ ตามข้อกำหนด ดังนี้
#* ตัวอักษร B, F, P, V เป็นเลข 1
#* ตัวอักษร C, G, J, K, Q, S, X, Z เป็นเลข 2
#* ตัวอักษร D, T เป็นเลข 3
#* ตัวอักษร L เป็นเลข 4
#* ตัวอักษร M, N เป็นเลข 5
#* ตัวอักษร R เป็นเลข 6
# หลังจากทำการแปลงตัวอักษรในข้อมูลป้อนเข้าเป็นตัวเลขแล้ว ตอนนี้ตัวอักษรทั้งหมด (ยกเว้นตัวหน้า) จะถูกแปลงเป็นตัวเลข (ข้อ 4) หรือตัดทิ้ง (ข้อ 3) ไปแล้ว เราจะมาพิจารณาตัวเลขแต่ละคู่ติดกัน ถ้าในแต่ละคู่ติดกันนั้นเป็นเลขเดียวกันจะต้องตัดออกไปหนึ่งตัวให้เหลือเลขตัวเดียว
# ทำไปเรื่อยๆจนรหัสที่ได้ตรงตามรูปแบบที่ต้องการ (1 ตัวอักษร + 3 ตัวเลข) ถ้าเกิดกรณีที่เลขยังไม่ครบ 3 ตัว ให้เติมเลข 0 เข้าไปจนมีเลขครบ จะได้รหัสซาวเดกซ์ตามรูปแบบ    

**ตัวอย่าง**
พิจารณาคำว่า “Robert” และ “Rupert” มีรหัสซาวเดกซ์อย่างไร
จะพบว่า “Robert” และ “Rupert” มีรหัสซาวเดกซ์เหมือนกัน หมายความว่าออกเสียงคล้ายกัน

**แหล่งข้อมูลอื่น**
http://www.blackwasp.co.uk/Soundex.aspx date=2013-01-12 
*http://www.ics.uci.edu/~dan/genealogy/Miller/javascrp/soundex.htm
Soundex programming code
*http://creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm date=2011-08-14 
*http://www.techrepublic.com/blog/programming-and-development/how-do-i-implement-the-soundex-function-in-c/656
ทดลองใช้ Soundex กับ Soundex Converter
*http://www.webcalc.net/phoneticalgorithms.php date=2011-08-24 
*http://resources.rootsweb.ancestry.com/cgi-bin/soundexconverter date=2018-05-23 
*http://www.eogn.com/soundex/ date=2013-01-21 
หมวดหมู่:ขั้นตอนวิธี
หมวดหมู่:ภาษาศาสตร์คอมพิวเตอร์
หมวดหมู่:สัทศาสตร์