Teilen Sie Japanisch (Katakana) in Silben [Python]

Einführung

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]

Umgebung

Politik

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"]

  1. Udan + "a / i / e / o"
  2. Schritt (ohne "I") + "Ya / Yu / E / Yo"
  3. "Te / de" + "i / u"
  4. Ein anderes Kapital-Kana-Zeichen als das oben genannte

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.

Code

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

Teilen Sie Japanisch (Katakana) in Silben [Python]
Teilen Sie Daten mit Django (2) in projektähnliche Einheiten.
Teilen Sie Daten mit Django (3) in projektähnliche Einheiten.
[Python] Memo zur Übersetzung von Matplotlib ins Japanische [Windows]
Teilen Sie Daten mit Django in projektähnliche Einheiten
[Python] Teilen Sie Switch-Alben nach Spielen in Ordner
Versuchen Sie, das Python Data Science-Handbuch ins Japanische zu übersetzen
Python-Fehlerliste (Japanisch)
Machen Sie Japanisch zu römischen Schriftzeichen
Japanische Ausgabe mit Python
Python Umweltfreundliche japanische Umgebung