소개
영어와는 달리, 독일어는 상당히 음소 작성 시스템으로 간주됩니다 . 그것은 철자와 발음 사이의 대응이 가깝다는 것을 의미합니다. 익숙하지 않은 단어가 있으면 맞춤법 시스템으로 인해 발음 방법을 알 수 있습니다. 이것은 컴퓨터가 제대로 할 수 있어야한다는 것을 의미합니까?
도전
독일어 단어를 나타내는 문자열을 입력으로 사용하고 해당 발음을 국제 음성 알파벳 (IPA)로 인쇄하거나 반환하는 프로그램 또는 함수를 작성하십시오 .
물론 독일어 나 전체 IPA를 배우게하지는 않을 것 입니다. 이 하나의 Wikipedia 섹션 은 필요한 거의 모든 독일에서 IPA 규칙을 제공하며, ungolfed C # 참조 구현을 코딩했습니다 .
또한이 링크 에는 400 개의 공통 독일어 단어와 해당 IPA 발음 (검증에 필요) 목록 이 제공됩니다 . 해당 목록에서 예를 들어, 입력이 solltest
인 경우 올바른 출력은 ˈzɔltəst
입니다.
참조 구현은 Wikipedia 섹션에 언급되지 않은 두 가지 유용한 규칙을 추가합니다. 단어 스트레스가 첫 음절 (독일어 일 가능성 있음)에 있다고 가정하고 문자 "e"가 schwa 사운드 / ə /를 나타내는시기를 결정하는 데 더 나은 휴리스틱을 사용합니다. 또한 접두사에 대한 특수 처리를 구현하지만 생각만큼 결과가 향상되지 않았습니다.
세부
유효한 출품작으로 간주 되려면 프로그램이 다음 요구 사항을 충족해야합니다.
- IPA 출력은 참조 단어 목록 에서 400 개 단어 중 300 개 이상과 정확히 일치해야 합니다 (참조 구현은 333이 정확함)
- 프로그램은 그럴듯한 독일어 단어를 추측해야합니다. 따라서 기술 요구 사항이 있으므로 정규식
[a-zA-ZäÄöÖüÜ][a-zäöüß]*
과 일치하고 모음 (aeiouyäöü)이 하나 이상 있는 입력의 경우 공백이 아닌 출력 만 생성하고 오류가 발생하지 않아야합니다. - 프로그램은 결정적이어야합니다 (항상 동일한 입력이 주어지면 항상 동일한 출력을 생성 함)
- 그렇지 않으면 표준 허점 이 금지됩니다 (특히 외부 리소스 가져 오기에 관한 문제).
기타 할 수있는 일 :
- 필요한 경우 출력에 선행 및 후행 공백이 있어야합니다.
- 출력에 기존 문자 인코딩을 사용하십시오 (유니 코드 이외의 다른 것은 잘 작동하지 않지만 가능하면 축하합니다)
- 입력이 유니 코드 정규화 형식 NFD, NFC 등과 같은 정규화 된 형식으로 가정합니다. 예를 들어, 단일 문자 또는 기본 문자 + 결합 문자로 작성되어 있습니까?
- 사용 표준 입력 및 출력 방법을
채점 및 IPA 문자
점수는 바이트 단위입니다. 독일어 문자와 IPA 문자는 UTF-8에서 2 바이트입니다. 또한 IPA 문자 U + 0327 COMBINING INVERTED BREVE BELOW (̯)는 유니 코드 결합 문자이며 2 바이트 UTF-8 문자입니다. 이것은 ɐ̯와 같은 것이 UTF-8에서 4 바이트로 계산됨을 의미합니다. 호기심을 나타 내기 위해이 기호는 모음이 음절 핵을 형성하지 않음을 의미합니다 (이전 모음은 대신).
또한 일부 글꼴에서 다른 ASCII 문자처럼 보이는 이러한 IPA 문자를주의하십시오 : ɡ, ɪ, ʏ, ː (긴 모음 표시), ˈ
참조 단어 목록을 만든 방법
이 섹션은 도전에 필요하지 않은 추가 정보입니다.
이 위키 낱말 사전 단어 빈도 목록 에서 단어 목록을 가져 와서 대소 문자 차이로 인해 반복이 제거되었으며 영어 위키 낱말 사전에서 독일어 항목이없는 두 단어 (oh & hey)가 제거되었습니다. IPA는 영어와 독일어 위키 낱말 사전을 모두보고있었습니다. 여러 발음이 제공되는 곳에서 더 형식적이고 표준적인 발음을 선택했습니다. 이것이 확실하지 않은 경우, 나는 일반적인 규칙에 가장 적합한 것을 선택했습니다.
나는 또한 문자 "r"이 어떻게 발음되는지 표준화해야했다. 이 서한이 어떻게 발음되었는지는 지역에 따라 크게 좌우되며, 위키 낱말 사는 어느 서신을 선택했는지에 대해서는 전혀 일치하지 않았습니다. 나는 다음과 같은 경향이 있다고 느꼈다. "r"은 긴 모음이 이어지고 모음이 따르지 않을 때 / ɐ̯ /로 발음되며, 그렇지 않으면 ʁ이다. 따라서 나는 일관되게 / (f) ɛɐ̯ / 인 ver-와 er- 접두사를 제외하고는 모두 그 규칙을 따르도록 변경했습니다. 마찬가지로 "eu"를 / ɔʏ̯ /로 표준화했습니다.
#~WordData~"PhoneticForm"&
있지만 영어 단어에만 사용할 수 있습니다.