บทนำ
ซึ่งแตกต่างจากภาษาอังกฤษ, เยอรมันถือว่ามีค่อนข้างระบบการเขียนสัทศาสตร์ นั่นหมายความว่าการติดต่อระหว่างการสะกดคำและการออกเสียงใกล้เคียงกัน เมื่อได้คำที่คุณไม่คุ้นเคยคุณจะยังคงรู้วิธีออกเสียงเนื่องจากระบบสะกดคำ หมายความว่าคอมพิวเตอร์ควรทำถูกเกินไป
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เป็น input สตริงที่แสดงคำเยอรมัน, และพิมพ์หรือผลตอบแทนการออกเสียงในสัทอักษรสากล (IPA)
ผมแน่นอนไม่ได้ไปทำให้คุณเรียนรู้ภาษาเยอรมันหรือ IPA นี้เป็นหนึ่งในส่วนที่วิกิพีเดียให้เกือบทุกเยอรมัน IPA กฎที่คุณต้องการและฉันได้รหัส ungolfed C # ดำเนินการอ้างอิง
นอกจากนี้ในลิงก์นั้นยังมีรายการ 400 คำภาษาเยอรมันทั่วไปและการออกเสียง IPA (จำเป็นสำหรับการตรวจสอบ) การตัวอย่างจากรายการที่ถ้าใส่เป็นผลผลิตที่ถูกต้องคือsolltest
ˈzɔltəst
การนำการอ้างอิงมาใช้เพิ่มกฎที่เป็นประโยชน์สองข้อที่ไม่ได้กล่าวถึงในส่วน Wikipedia: ถือว่ามีการเน้นคำเป็นพยางค์แรก (น่าจะเป็นภาษาเยอรมัน) และใช้ heuristic ที่ดีกว่าในการพิจารณาว่าตัวอักษร "e" แสดงถึง schwa sound / ə / นอกจากนี้ยังใช้การประมวลผลพิเศษสำหรับคำนำหน้า แต่ก็ไม่ได้ปรับปรุงผลลัพธ์เท่าที่ฉันคิด
รายละเอียด
ในการพิจารณารายการที่ถูกต้องโปรแกรมของคุณจะต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้:
- เอาต์พุต IPA ของคุณจะต้องตรงกับคำอย่างน้อย 300 จาก 400 คำในรายการคำอ้างอิง (การดำเนินการอ้างอิงได้รับ 333 ถูกต้อง)
- โปรแกรมของคุณต้องเดาคำศัพท์ภาษาเยอรมันที่เป็นไปได้ ดังนั้นเรามีข้อกำหนดทางเทคนิคนี่หมายความว่าสำหรับอินพุตใด ๆ ที่ตรงกับ regex
[a-zA-ZäÄöÖüÜ][a-zäöüß]*
และมีสระอย่างน้อยหนึ่งสระ (aeiouyääüü) คุณต้องสร้างเอาต์พุตไม่ใช่ช่องว่างเท่านั้นและไม่ผิดพลาด - โปรแกรมจะต้องถูกกำหนดไว้ล่วงหน้า (สร้างเอาต์พุตเดียวกันเสมอเมื่อได้รับอินพุตเดียวกัน)
- มิฉะนั้นจะต้องห้ามช่องโหว่มาตรฐาน (โดยเฉพาะที่เกี่ยวกับการดึงทรัพยากรนอกสถานที่)
สิ่งอื่น ๆ ที่คุณได้รับอนุญาตให้ทำ:
- มีช่องว่างชั้นนำและต่อท้ายในผลลัพธ์ของคุณถ้าคุณต้อง
- ใช้การเข้ารหัสอักขระที่มีอยู่แล้วในผลลัพธ์ (ฉันไม่สามารถจินตนาการได้เลยว่า Unicode ทำงานได้ดี แต่ถ้าคุณทำได้ขอแสดงความยินดี)
- สมมติว่าอินพุตอยู่ในรูปแบบที่ทำให้เป็นมาตรฐานเช่น Unicode normalization form NFD, NFC เป็นต้นตัวอย่างเช่นäเขียนเป็นอักขระเดี่ยวหรืออักขระพื้นฐาน + อักขระรวมกันหรือไม่
- ใช้วิธีการอินพุตและเอาต์พุตมาตรฐาน
การให้คะแนนและตัวละคร IPA
การให้คะแนนอยู่ในหน่วยไบต์ ถูกเตือนว่าอักขระภาษาเยอรมันและอักขระ IPA มีขนาด 2 ไบต์ใน UTF-8 นอกจากนี้อักขระ IPA U + 0327 การรวม INVTED BREVE ด้านล่าง (̯) เป็น Unicode ที่รวมอักขระและเป็นอักขระ 2 ไบต์ UTF-8 ด้วยตัวเอง นั่นหมายความว่าสิ่งที่คล้ายกันɐ̯จะนับเป็น 4 ไบต์ใน UTF-8 สำหรับผู้อยากรู้อยากเห็นสัญลักษณ์นี้หมายถึงสระจะไม่ก่อให้เกิดนิวเคลียสพยางค์ (อันก่อนหน้านี้แทน)
นอกจากนี้ระวังตัวอักษร IPA เหล่านี้ที่ในแบบอักษรบางตัวดูเหมือนอักขระ ASCII อื่น ๆ : ɡ, ɪ, ʏ, ː (ทำเครื่องหมายเสียงสระยาว), ˈ (เครื่องหมายที่พยางค์มีความเครียดในคำหลายคำ)
วิธีสร้างรายการคำอ้างอิง
ส่วนนี้เป็นข้อมูลเพิ่มเติมที่ไม่จำเป็นสำหรับความท้าทาย
รายการคำศัพท์นั้นถูกหยิบขึ้นมาจากรายการความถี่ในคำศัพท์ของ Wiktionaryซึ่งเป็นการลบการทำซ้ำเนื่องจากความแตกต่างของปลอกและคำสองคำที่ไม่มีรายการภาษาเยอรมันใน Wiktionary ภาษาอังกฤษ (โอ้ & เฮ้) IPA นั้นมาจากการมองทั้ง Wiktionaries ภาษาอังกฤษและภาษาเยอรมัน ในกรณีที่มีการออกเสียงหลายครั้งฉันเลือกแบบที่เป็นทางการและเป็นมาตรฐานมากกว่า หากสิ่งนี้ยังไม่ชัดเจนฉันเลือกกฎที่เหมาะสมกับกฎทั่วไปมากที่สุด
ฉันต้องทำให้เป็นมาตรฐานว่าตัวอักษร "r" ออกเสียงอย่างไร มันขึ้นอยู่กับภูมิภาคอย่างมากว่าจดหมายฉบับนี้ออกเสียงอย่างไรและ Wiktionary ก็ไม่สอดคล้องกับที่เลือกไว้ ฉันรู้สึกว่ามันมีแนวโน้มต่อไปนี้: "r" เด่นชัด / ɐ̯ / เมื่อตามด้วยเสียงสระยาวและเสียงสระไม่ได้ติดตาม ดังนั้นฉันจึงเปลี่ยนพวกเขาทั้งหมดให้ปฏิบัติตามกฎนั้นยกเว้นคำนำหน้าและคำนำหน้าที่ค่อนข้างสม่ำเสมอ / (f) ɛɐ̯ / ในทำนองเดียวกันฉันมาตรฐาน "eu" เป็น / ɔʏ̯ /
#~WordData~"PhoneticForm"&
) แต่ใช้ได้กับคำภาษาอังกฤษเท่านั้น