ข้ามไปยังเนื้อหา

เครื่องมือวิเคราะห์และแสดงผลความถี่ของอักขระ

เครื่องมือวิเคราะห์ความถี่ของอักขระฟรี แสดงผลรูปแบบการกระจายตัวของตัวอักษรได้ทันที เหมาะสำหรับการเข้ารหัส การบีบอัดข้อมูล การตรวจจับการเข้ารหัสข้อความ และการวิเคราะห์ทางภาษาศาสตร์

การวิเคราะห์ความถี่ของอักขระ

เครื่องคำนวณโหลด...
📚

เอกสารประกอบการใช้งาน

การวิเคราะห์ความถี่ของอักขระคืออะไร?

การวิเคราะห์ความถี่ของอักขระคือกระบวนการนับว่าอักขระแต่ละตัวปรากฏในข้อความกี่ครั้ง ครอบคลุมตัวอักษร ตัวเลข ช่องว่าง เครื่องหมายวรรคตอน และสัญลักษณ์อื่น ๆ ในข้อความ ผลลัพธ์คือตารางหรือแผนภูมิอย่างง่าย โดยอักขระแต่ละตัวมีค่าจำนวนครั้งที่ปรากฏของตนเอง

เครื่องมือนี้รับข้อความใด ๆ ที่วางหรือพิมพ์ลงไป แล้วนับอักขระทุกตัวโดยอัตโนมัติ จากนั้นสร้างแผนภูมิแท่งแสดงจำนวน ทำให้อักขระที่พบบ่อยที่สุดโดดเด่นขึ้นทันทีเมื่อมองดู การชี้หรือแตะแท่งจะแสดงจำนวนที่แน่นอนของอักขระนั้น

เทคนิคนี้มีมานานแล้ว นักปราชญ์ชาวอาหรับ อัลคินดี อธิบายเทคนิคนี้ไว้ในศตวรรษที่ 9 ว่าเป็นวิธีถอดรหัสลับแบบง่าย ปัจจุบันยังใช้ในการบีบอัดข้อมูล การตรวจสอบการสะกดคำและการตรวจสอบการเข้ารหัส ตลอดจนการระบุภาษาเบื้องต้น

วิธีคำนวณความถี่ของอักขระ

การคำนวณความถี่ของอักขระด้วยมือมีสามขั้นตอน:

  1. อ่านข้อความทีละอักขระ รวมทั้งช่องว่างและเครื่องหมายวรรคตอน
  2. นับสะสมสำหรับอักขระแต่ละตัวที่แตกต่างกัน อักขระใหม่เริ่มที่ 1 ส่วนอักขระที่ซ้ำจะเพิ่ม 1 ให้กับยอดสะสมเดิม
  3. แสดงรายการอักขระทุกตัวพร้อมยอดสะสมสุดท้าย

เครื่องมือนี้ทำสิ่งเดียวกันโดยอัตโนมัติ โดยใช้โครงสร้างข้อมูลที่เรียกว่าตารางแฮช (ตารางค้นหาที่เก็บค่าภายใต้คีย์) สำหรับอักขระแต่ละตัวในข้อความ เครื่องมือจะตรวจสอบว่าอักขระนั้นมีรายการอยู่ในแมปแล้วหรือไม่ หากมี เครื่องมือจะเพิ่ม 1 ให้กับจำนวนที่เก็บไว้ หากไม่มี จะสร้างรายการใหม่ที่มีจำนวนเป็น 1 วิธีนี้ประมวลผลอักขระแต่ละตัวเพียงครั้งเดียว ดังนั้นเวลาที่ใช้จึงเพิ่มขึ้นเป็นสัดส่วนโดยตรงกับความยาวของข้อความ ไม่ได้เพิ่มเร็วไปกว่านั้น

หลังจากนับแล้ว เครื่องมือจะแสดงผลลัพธ์เรียงตามลำดับตัวอักษรของอักขระ ปัจจุบันยังไม่มีตัวเลือกให้เรียงตามจำนวนแทน

ความถี่ของอักขระในรูปเปอร์เซ็นต์

การเปรียบเทียบจำนวนเพียงอย่างเดียวอาจทำได้ยากเมื่อข้อความมีความยาวต่างกัน ด้วยเหตุนี้ ความถี่จึงมักแสดงเป็นเปอร์เซ็นต์ของจำนวนอักขระทั้งหมด:

f(c)=ncN×100%f(c) = \frac{n_c}{N} \times 100\%

ในที่นี้ ncn_c คือจำนวนครั้งที่อักขระ cc ปรากฏ และ NN คือจำนวนอักขระทั้งหมดในข้อความ เครื่องมือนี้รายงานจำนวนดิบและจำนวนอักขระทั้งหมด ไม่ได้มีคอลัมน์เปอร์เซ็นต์ แต่สามารถคำนวณเปอร์เซ็นต์ของอักขระใด ๆ ได้โดยนำจำนวนของอักขระนั้นหารด้วยจำนวนทั้งหมด แล้วคูณด้วย 100

ตัวอย่างพร้อมวิธีทำ

พิจารณาคำว่า "mississippi" ซึ่งมีอักขระ 11 ตัว และไม่มีช่องว่างหรือเครื่องหมายวรรคตอน

เมื่อนับตัวอักษรแต่ละตัวจะได้ดังนี้:

อักขระจำนวนครั้งร้อยละ
i436.4%
ม.19.1%
p218.2%
s436.4%

ตารางเรียงตามลำดับตัวอักษร (i, m, p, s) ซึ่งตรงกับลำดับผลลัพธ์ของเครื่องมือนี้ จำนวนทั้งหมดรวมกันเป็น 11 ซึ่งเป็นความยาวรวมของคำ หากต้องการคอลัมน์เปอร์เซ็นต์ ให้นำแต่ละจำนวนหารด้วย 11 แล้วคูณด้วย 100 ตัวอย่างเช่น 4 ÷ 11 × 100 ≈ 36.4%

วิธีใช้เครื่องมือนี้

พิมพ์หรือวางข้อความลงในช่องป้อนข้อมูล เครื่องมือจะวิเคราะห์ทันทีโดยไม่ต้องกดปุ่มใด ๆ เมื่อข้อความเปลี่ยน รายการอักขระและแผนภูมิแท่งจะอัปเดตให้สอดคล้องกัน

ส่วนผลลัพธ์จะแสดง:

  • แผนภูมิแท่งที่มีหนึ่งแท่งต่ออักขระหนึ่งตัว แท่งที่สูงกว่าหมายความว่าอักขระนั้นปรากฏบ่อยกว่า
  • จำนวนอักขระทั้งหมดของข้อความ รวมทั้งช่องว่างและเครื่องหมายวรรคตอน
  • จำนวนที่แน่นอนของอักขระทีละตัว ซึ่งจะแสดงเมื่อชี้หรือแตะแท่งของอักขระนั้น

ปุ่ม "Copy" จัดรูปแบบผลลัพธ์เป็นข้อความธรรมดา โดยแสดงอักขระและจำนวนหนึ่งคู่ต่อบรรทัด พร้อมนำไปวางในสเปรดชีตหรือเอกสารได้ทันที ช่องว่างจะแสดงเป็น "space" ในผลลัพธ์นี้ เพื่อไม่ให้เข้าใจผิดว่าเป็นบรรทัดว่าง

ในข้อความภาษาอังกฤษทั่วไป ตัวอักษรอย่าง E, T, A, O และ I มักอยู่ในกลุ่มที่พบบ่อยที่สุด ข้อความที่มีตัวอักษรหายากอย่าง Q หรือ Z ปรากฏบ่อยผิดปกติอาจเป็นข้อความที่เข้ารหัส เข้ารหัสลับ หรือเขียนด้วยภาษาอื่น

การใช้งานการวิเคราะห์ความถี่ของอักขระ

การถอดรหัสแทนที่

รหัสแทนที่จะแทนที่ตัวอักษรแต่ละตัวของข้อความด้วยตัวอักษรหรือสัญลักษณ์อื่น โดยใช้การแทนที่แบบเดียวกันตลอดทั้งข้อความ เนื่องจากการแทนที่มีความสม่ำเสมอ รูปแบบความถี่ของภาษาเดิมจึงยังคงอยู่ในข้อความที่เข้ารหัส ในภาษาอังกฤษ ตัวอักษร E ปรากฏประมาณ 12–13% ของทั้งหมด หากสัญลักษณ์หนึ่งในข้อความรหัสปรากฏในอัตราใกล้เคียงกัน สัญลักษณ์นั้นก็มีความเป็นไปได้สูงที่จะใช้แทน E วิธีนี้เป็นวิธีหลักในการถอดรหัสแทนที่มานานหลายศตวรรษ ก่อนที่การเข้ารหัสสมัยใหม่จะทำให้วิธีนี้ล้าสมัยและเหลือใช้เพียงกับปริศนาและเอกสารประวัติศาสตร์

การบีบอัดข้อมูล

รูปแบบการบีบอัด เช่น ZIP และ GZIP ใช้ความถี่ของอักขระผ่านแนวทางที่เรียกว่าการเข้ารหัสฮัฟฟ์แมน อักขระที่ปรากฏบ่อยจะได้รับรหัสไบนารีสั้น ส่วนอักขระที่พบได้น้อยจะได้รับรหัสที่ยาวกว่า เนื่องจากอักขระที่พบบ่อยใช้พื้นที่ต่อการปรากฏหนึ่งครั้งน้อยลง ไฟล์ทั้งไฟล์จึงมีขนาดเล็กลงโดยไม่สูญเสียข้อมูลใด ๆ

การตรวจหาปัญหาการเข้ารหัส

ข้อความที่แสดงอักขระแปลก ๆ ซึ่งไม่คาดคิด (เช่น "é" แทนที่จะเป็น "é") มักบ่งชี้ว่าการเข้ารหัสอักขระที่ใช้บันทึกไฟล์ไม่ตรงกับการเข้ารหัสที่ใช้เปิดอ่าน แผนภูมิความถี่ที่แสดงการพุ่งสูงผิดปกติของสัญลักษณ์ประหลาด แทนที่จะเป็นตัวอักษรทั่วไป อาจช่วยยืนยันปัญหาการเข้ารหัสได้

การระบุภาษา

ภาษาต่าง ๆ มีการกระจายตัวของอักขระโดยทั่วไปแตกต่างกัน ภาษาอังกฤษมี E, T และ A เป็นอักขระเด่น ภาษาเยอรมันใช้ E และ N บ่อยกว่ามาก รวมทั้งมีตัวอักษรอย่าง ä, ö และ ü ซึ่งไม่ปรากฏในภาษาอังกฤษเลย การเปรียบเทียบความถี่ของอักขระในข้อความกับรูปแบบภาษาที่ทราบอยู่แล้วเป็นวิธีที่รวดเร็วและคร่าว ๆ ในการคาดเดาว่าข้อความนั้นเป็นภาษาอะไร

รูปแบบการเขียนและผู้ประพันธ์

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

วิธีวิเคราะห์ข้อความอื่น ๆ

ความถี่ของอักขระไม่ใช่วิธีเดียวในการวิเคราะห์ข้อความ

  • ความถี่ของคำ นับคำทั้งคำแทนที่จะนับอักขระ วิธีนี้ใกล้เคียงกับความหมายของข้อความมากกว่า และใช้กันทั่วไปในการวิจัยคำสำคัญและการวิเคราะห์หัวข้อ
  • การวิเคราะห์ n-gram พิจารณาลำดับสั้น ๆ ของอักขระหรือคำ เช่น คู่หรือชุดสามตัว แป้นพิมพ์แบบคาดเดาและการเติมข้อความอัตโนมัติใช้วิธีนี้เพื่อคาดเดาตัวอักษรหรือคำถัดไป
  • การวิเคราะห์ความรู้สึก ประเมินว่าข้อความให้ความรู้สึกเชิงบวก เชิงลบ หรือเป็นกลาง โดยใช้วิธีการที่ซับซ้อนกว่าการนับอย่างง่ายมาก
  • การวิเคราะห์ความสามารถในการอ่าน เช่น คะแนน Flesch-Kincaid ใช้ประมาณความยากง่ายในการอ่านจากความยาวของประโยคและคำ

คำถามที่พบบ่อย

การวิเคราะห์ความถี่ของอักขระบอกอะไรได้บ้าง?

แสดงว่าอักขระแต่ละตัวปรากฏในข้อความบ่อยเพียงใด การอ่านผลลัพธ์อาจเผยให้เห็นรูปแบบที่เป็นประโยชน์ต่อการเข้ารหัสลับ การบีบอัด การตรวจหาข้อผิดพลาดด้านการเข้ารหัส หรือการคาดเดาภาษาของข้อความ

เครื่องมือนี้เรียงลำดับผลลัพธ์อย่างไร?

เครื่องมือเรียงอักขระตามลำดับตัวอักษร ไม่มีตัวเลือกให้เรียงตามจำนวนแทน อักขระที่พบบ่อยและพบน้อยที่สุดต้องค้นหาจากการอ่านแผนภูมิแท่ง หรือไล่ดูจำนวนในข้อความที่คัดลอก

เครื่องมือแสดงเปอร์เซ็นต์หรือไม่?

ไม่ เครื่องมือรายงานจำนวนดิบของอักขระแต่ละตัวและจำนวนอักขระทั้งหมด สามารถคำนวณเปอร์เซ็นต์ได้โดยนำจำนวนของอักขระหารด้วยจำนวนทั้งหมด แล้วคูณด้วย 100

การวิเคราะห์ความถี่ของตัวอักษรสามารถถอดรหัสระบบเข้ารหัสสมัยใหม่ได้หรือไม่?

ไม่ได้ วิธีนี้ใช้ได้เฉพาะกับรหัสแทนที่แบบง่าย ซึ่งอักขระหนึ่งตัวแทนอักขระอื่นตัวเดิมเสมอ การเข้ารหัสสมัยใหม่ เช่น AES สร้างผลลัพธ์ที่ไม่มีรูปแบบคงที่ดังกล่าว ดังนั้นการนับความถี่จึงไม่เปิดเผยข้อมูลใด ๆ เกี่ยวกับข้อความต้นฉบับ

เครื่องมือนับช่องว่างและเครื่องหมายวรรคตอนหรือไม่?

นับ ทุกอักขระในข้อมูลป้อนเข้าจะถูกนับ รวมถึงช่องว่าง แท็บ การขึ้นบรรทัดใหม่ และเครื่องหมายวรรคตอน ช่องว่างมักเป็นอักขระเดี่ยวที่พบบ่อยที่สุดในข้อความทั่วไป

ต้องใช้ข้อความมากเพียงใดจึงจะเห็นรูปแบบที่เชื่อถือได้?

อักขระไม่กี่ร้อยตัวเป็นจำนวนขั้นต่ำที่เหมาะสม ข้อความที่สั้นมากอาจแสดงความถี่แตกต่างจากรูปแบบที่คาดไว้มากเพียงเพราะความบังเอิญ ตัวอย่างที่ยาวกว่านั้น คือหนึ่งพันอักขระขึ้นไป มักสอดคล้องกับรูปแบบภาษาที่ทราบอยู่แล้วมากกว่า

เอกสารอ้างอิง

  1. MDN Web Docs: Map — เอกสารเกี่ยวกับโครงสร้างข้อมูลแฮชแมปที่ใช้ในการนับอักขระอย่างมีประสิทธิภาพ
  2. Shannon, C. E. (1951). "การพยากรณ์และเอนโทรปีของภาษาอังกฤษที่พิมพ์" The Bell System Technical Journal, 30(1), 50-64.
  3. Huffman, D. A. (1952). "วิธีการสร้างรหัสที่มีความซ้ำซ้อนต่ำสุด" Proceedings of the IRE, 40(9), 1098-1101.
  4. Huffman Coding — Wikipedia