0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【python】日本語モウラを子音と母音に分ける

Last updated at Posted at 2024-05-15

概要

日本語のモウラを子音と母音に分ける方法を検討しました。

結論

jamorasepを使ってsimple-ipa表記に変換したあと、末尾以外を子音、末尾を母音として取り出すのがよさそうです。

pip install jamorasep
import jamorasep
from typing import Tuple

def split_consonant_vowel(mora: str) -> Tuple[str, str]:
    simpleipa = jamorasep.parse(mora, output_format='simple-ipa')[0]
    consonant, vowel = "".join(simpleipa[:-1]), simpleipa[-1]
    return consonant, vowel
print(split_consonant_vowel(""))
print(split_consonant_vowel(""))
print(split_consonant_vowel(""))
print(split_consonant_vowel("キャ"))
print(split_consonant_vowel("シャ"))
print(split_consonant_vowel("クヮ"))
('', 'a')
('', 'N')
('', 'Q')
('kj', 'a')
('ɕ', 'a')
('kw', 'a')

検討した事項

jaconvpykakasiなどでローマ字に変換してから前と後ろのアルファベットに分ければそれでよいかと最初思いましたが、「クヮ」「リェ」のようなマイナーなモウラに対して理想の結果になりませんでした。調べた範囲では、jamorasepでsimple-ipaに変換した場合が最も理想的だったので、それを採用しました。以下はjaconvで少し試した例です。

import jaconv
print(jaconv.kata2alphabet("クヮ"))
print(jaconv.hiragana2julius("くゎ"))
kuゎ
k u w a

jamorasepを使う場合、output_formatを訓令式ローマ字にするか、ヘボン式ローマ字にするか、シンプルIPAにするかは、同リポジトリに含まれるkanamap.csvを眺めて決めました。

訓令式はナイーブに実装すると「スィ(tui)」と「サ(sa)」の子音が異なってしまうなど、違和感のある結果になるため、不採用にしました。
ヘボン式も同様に「デャ(deya)」と「ディ(dei)」の子音などはナイーブに実装すると異なってしまい違和感があるため、不採用にしました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?