ซาวเดกซ์
บทความนี้ไม่มีการอ้างอิงจากแหล่งที่มาใด |
ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
ซาวเดกซ์ (อังกฤษ: 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” |
---|---|---|
1. เป็นอักษรละตินของภาษาอังกฤษ | ใช่ | ใช่ |
2. นำอักษรตัวแรกไปใส่ในรหัส | R | R |
3. พิจารณาตัวอักษรถัดไปของคำ ถ้าเป็นสระหรือ H,W,Y ตัดทิ้ง | Rbrt | Rprt |
4. นำตัวอักษรมาแปลงเป็นตัวเลข | R163 | R163 |
5. เลขคู่ติดกันมีเลขซ้ำหรือไม่ ถ้าซ้ำตัดออกหนึ่งตัว | ไม่ใช่ | ไม่ใช่ |
6. รหัสที่ได้นั้นตรงตามรูปแบบของรหัส <อักษรตัวใหญ่> <ตัวเลข> <ตัวเลข> <ตัวเลข> | ใช่ | ใช่ |
ผลลัพธ์สุดท้าย | R163 | R163 |
จะพบว่า “Robert” และ “Rupert” มีรหัสซาวเดกซ์เหมือนกัน หมายความว่าออกเสียงคล้ายกัน
แหล่งข้อมูลอื่น
[แก้]- http://www.blackwasp.co.uk/Soundex.aspx เก็บถาวร 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 เก็บถาวร 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 เก็บถาวร 2011-08-24 ที่ เวย์แบ็กแมชชีน
- http://resources.rootsweb.ancestry.com/cgi-bin/soundexconverter เก็บถาวร 2018-05-23 ที่ เวย์แบ็กแมชชีน
- http://www.eogn.com/soundex/ เก็บถาวร 2013-01-21 ที่ เวย์แบ็กแมชชีน