Ich habe eine Python-Funktion erstellt, die Japanisch (Katakana-Zeichenkette) in Silben (Sektar-Teilung) unterteilt.
Original Text | Mora-Bruch | Phrasensegmentierung |
---|---|---|
Gakkyu Shinbun | Ga/Tsu/Kyu/- -/Shi/Nieder/Bu/Nieder | GaTsu/Kyu- -/ShiNieder/BuNieder |
Outburn | EIN/C./Zu/Ba/- -/Nieder | EIN/C./Zu/Ba- -Nieder |
Mora und Silben sind typische Teilungseinheiten für die japanische Phonologie. Mora ist ein Begrenzer beim Zählen der sogenannten "5, 7, 5" im Haiku, und lange Töne (-), Aufforderungstöne (tsu) und Tonabwehrmittel (n) werden ebenfalls als ein Schlag gezählt. Andererseits werden in Silben lange Noten, Aufforderungstöne und abstoßende Töne nicht einzeln gezählt, sondern als ein Schlag zusammen mit dem Kana betrachtet, das unmittelbar zuvor eine einzelne Silbe sein kann. Wenn ein langer Ton, ein auffordernder Ton und eine Schallabweisung wie "Brennen" kontinuierlich sind, wird die Anzahl der Mora von 3 oder mehr zu einer Silbe. Weitere Informationen finden Sie unter Mora-Wikipedia.
In diesem Artikel erklären wir, wie man in Silbeneinheiten schreibt. Die Unterteilung nach Mora wird unten erklärt. Separates Japanisch (Katakana) in Mora-Einheiten [Python]
Zur Vereinfachung des Denkens sollte die Eingabe eine Katakana-Zeichenfolge in voller Breite sein, die keine Symbole enthält. Außerdem wird angenommen, dass der Teil, der in langem Klang ausgedrückt werden kann, in langen Klang umgewandelt wird. Dies bedeutet, dass beispielsweise "Gakukyu" als "Gakukyu" ausgedrückt wird. Informationen zum Konvertieren von Kanji-Kana-Mischsätzen in Katakana-Zeichenketten mit Aussprache finden Sie unter Separater Artikel. Da ich jedoch MeCab verwende, kann ich keine Wörter konvertieren, die nicht im Wörterbuch enthalten sind.
Zu diesem Zeitpunkt sind die Grundbedingungen der Silben wie folgt definiert.
[Fortlaufende (einschließlich 0 Zeichen) Zeichenfolge von 1-4 unten und "- / - n"]
das ist
Reguläre Ausdrücke | Bedeutung | |
---|---|---|
① | [Ukusutsunufumyuruguzuzubupu][Ayeo] | Udan + "A./ich/E./Oh " |
② | [Ikishini Himirigi Jijibipi][Nyayo] | I-dan (ohne "I") + "Ya"/Yu/E./Yo " |
③ | [Tedde][Ju] | "Te/De "+" i/Yu " |
④ | [Aiueoka-Jitsu-Moya Yuyo-Wov] | Ein anderes Kapital-Kana-Zeichen als ①②③ |
⑤ | [Hmm]* | "-/Tsu/Fortlaufende Zeichenfolge (einschließlich 0 Zeichen) |
Wann'(①|②|③|④)⑤'
Sie können so schreiben.
import re
#「((Udan + "A./ich/E./Oh ")|(I-dan (ohne "I") + "Ya"/Yu/E./Yo ")|("Te/デ」+「ich/Yu」)|(Hauptstadt Kana))("-/Tsu/Fortlaufende Zeichenfolge (einschließlich 0 Zeichen))Regulären Ausdruck
c1 = '[Ukusutsunufumyuruguzuzubupu][Ayeo]' #Udan + "A./ich/E./Oh "
c2 = '[Ikishini Himirigi Jijibipi][Nyayo]' #I-dan (ohne "I") + "Ya"/Yu/E./Yo "
c3 = '[Tedde][Ju]' #"Te/De "+" i/Yu "
c4 = '[Aiueoka-Jitsu-Moya Yuyo-Wov]' #Hauptstadt Kana
c5 = '[Hmm]*' #"-/Tsu/Fortlaufende Zeichenfolge (einschließlich 0 Zeichen)
cond = '(?:'+c1+'|'+c2+'|'+c3+'|'+c4+')'+c5 #(?:)Ist Klammern, um Submusterverweise zu vermeiden
cond = '('+cond+')'
re_syllable = re.compile(cond)
def syllableWakachi(kana_text):
return re_syllable.findall(kana_text)
text = 'Shinshun Shanson Show'
print(text)
print(syllableWakachi(text))
print('')
text = 'Tokio Tokio'
print(text)
print(syllableWakachi(text))
print('')
text = 'Outburn'
print(text)
print(syllableWakachi(text))
print('')
text = 'Gakkyu Hokai'
print(text)
print(syllableWakachi(text))
Die Ausgabe ist unten.
Shinshun Shanson Show
['Schienbein', 'Meiden', 'Shan', 'Sohn', 'Show']
Tokio Tokio
['Zehe', 'Kyo', 'Knirps', 'Kyo', 'Kyo', 'Leistung', 'Kyo', 'Ku']
Outburn
['EIN', 'C.', 'Zu', 'Brennen']
Gakkyu Hokai
['Darm', 'Kyu', 'C.', 'E.', 'C.', 'Leistung', 'ich']
Recommended Posts