Skip to content

Latest commit

 

History

History
134 lines (112 loc) · 4.86 KB

README.wuu-Hant.md

File metadata and controls

134 lines (112 loc) · 4.86 KB

三耨風 (Sinophone)

build lint coverage Documentation Status

pypi support-version license commit


wuu-Hant

三耨風(IPA: /se˥˨꜒.noʔ꜓.foŋ꜔꜕/)是一個可以幫儂處理漢語音韻個 Python 模塊。渠分爲兩個副模塊:sinophone.phoneticssinophone.phonology。前者編碼了 IPA 符號搭着區別特徵,也可以拿渠推廣用於其他個語言。後者是專門爲着處理漢語音韻而設計個。

安裝

pip install sinophone

文檔

請訪問文檔(目前只有英文版本)。

用例

在墶下頭箇個例子當中,我模擬了上海話音系個一小部分。請看 三耨風 可以畀出理論高頭個聲韻搭配,然後從裏向挑出弗符合音位排列規則 pc 個音節。渠還可以打印出嚴式記音個 bʊ̃ŋ˥˥,而弗是音位記音個 boŋ˥˥

from sinophone import options
from sinophone.phonetics import *
from sinophone.phonology import *

# 設置語言爲吳語
options.repr_lang = "wuu-Hant"

# Syllable 音節
# 阿拉來建立一眼音節。
kaq = Syllable(
    Initial("k"),
    Final(
        nucleus=Nucleus("ɐ"),
        coda=Coda("ʔ"),
    ),
    Tone("˥˥"),
)
kaq
"""
# 在墶終端裏向,實際輸出是彩色個。
<音節 [<聲母 'k'> <韻母 [<介音 ''> <韻腹 'ɐ'> <韻尾 'ʔ'>]> <聲調 '˥˥'>]>
"""

lon = Syllable(Initial("l"), Final(nucleus=Nucleus("o"), coda=Coda("ŋ")), Tone("˨˧"))

bo = Syllable(Initial("b"), Final(nucleus=Nucleus("o")), Tone("˨˧"))


# PhonologicalRule 音韻規則
# 阿拉來創建一隻音韻規則,講 /o/ 在墶鼻音前頭變爲 [ʊ̃]。
pr = PhonologicalRule(
    Nucleus("o"),
    IPAString("ʊ̃"),
    SyllableFeatures({"Final": {IPAFeatureGroup("+nasal")}}),
)
pr
"""
<音韻規則 "o -> ʊ̃ / {'Final': {'+nasal'}}">
"""


# PhonotacticConstraint 音位排列制約
# 阿拉來創建一隻音位排列制約,講任何非鼻音、非邊近音個濁音
# 弗能夠交極高調(˥)搭配。
pc = PhonotacticConstraint(
    SyllableFeatures(
        {
            "Initial": {
                IPAFeatureGroup("-nasal -lateral-approximant +voiced"),
            },
            "Tone": {IPAFeatureGroup("+extra-high-level")},
        }
    ),
    PhonotacticAcceptability(False, False),
)
pc
"""
<音位排列制約 {'Initial': {'-nasal +voiced -lateral-approximant'},
'Tone': {'+extra-high-level'}}: {'existent': False, 'grammatical': False}>
"""

# Phonology 音系
# 阿拉來根據上述對象建立一隻音系。
phonology = Phonology(
    syllables={kaq, bo, lon},
    phonotactics={pc},
    phonological_rules=[pr],
)

# 從音節推導出音節要素
sorted(phonology.initials)
"""
[<聲母 'b'>, <聲母 'k'>, <聲母 'l'>]
"""

# 弗考慮音位排列規則,自動組合所有音節要素。
spc = sorted(phonology.collocations)

# 拿上頭個列表上色,打印出來
for syllable in spc:
    phonology.pretty_print_syllable(syllable)
"""
.. 從簡省略輸出
拿完全交音位排列規則衝突個音節標紅,完全符合音位排列規則個音節標綠。
關於其他顏色代表個意思,請看 `sinophone.options.RAINBOW_COLOR_SCHEME`。
"""

# 列舉完全交音位排列規則衝突個音節
[
    syllable.phonetic_ipa_str
    for syllable in spc
    if phonology.render_syllable(syllable).acceptability
    != PhonotacticAcceptability(True, True)
]
"""
[<IPA 字符串 'bʊ̃ŋ˥˥'>, <IPA 字符串 'bo˥˥'>, <IPA 字符串 'bɐʔ˥˥'>]
"""