TL;DR
- 日本語でよく出てくる子音が何なのか気になった
- 青空文庫のテキストデータを使ってカウントしてみた
- 子音単体だと k が多くて、調音位置でいうと歯茎音が多かった。
きっかけ
私、元々大学院まで言語学研究室に居て日本語の文法を研究しておりました。
欧州各言語で最も多く使用される子音
— Spica (@Kelangdbn) December 16, 2021
フランス語はS,英語はT,イタリア語はN… pic.twitter.com/r91E6J5ppr
先日院生時代の友人がこのツイートを紹介して「やっぱり歯茎音が無標なのか」1と言っていまして、「でも日本語ではどうなんだろうな?」と気になったのです。
Wikipediaだと普通の日本語の文章じゃない箇条書きや外国語も大量に混入してくるので、青空文庫のテキストデータを活用してみることにしました。
集計した結果
というわけで早速日本語に出てくる子音の集計結果。多い順。
子音 | 出現数 | 備考 |
---|---|---|
k | 31,661,222 | |
t | 27,074,053 | |
n | 25,796,136 | |
r | 21,022,666 | |
m | 17,144,365 | |
s | 13,053,226 | |
ʃ | 11,926,160 | 「シ」の子音 |
d | 10,568,933 | |
g | 9,496,824 | |
ɲ | 9,019,203 | 「ニ」の子音。「ニ」「ジ」「チ」の直前の「ン」もこれ |
w | 7,836,892 | |
h | 7,273,092 | ちょっと面倒だったので「ファ」は全部h扱いにしてしまいました・・・ |
j | 6,167,702 | ヤ行の子音 |
b | 4,836,853 | |
t͡s | 4,704,255 | 「ツ」の子音 |
d͡ʒ | 4,320,056 | 「ジ」の子音 |
t͡ʃ | 3,929,212 | 「チ」の子音 |
N | 2,876,175 | 語末や母音などの前の「ン」 |
z | 2,806,214 | |
ŋ | 1,945,590 | か行・が行の前の「ン」。鼻濁音はカウントできないので全部g扱いに。 |
p | 772,335 | |
v | 108 | 「ヴ」の出現回数です |
これを調音位置で分類すると・・・(←これが本題だった)
調音位置 | 頻度 | 比率 | 対応する子音 |
---|---|---|---|
両唇 | 30,590,553 | 13.6% | p, b, w, v |
歯茎 | 125,200,911 | 55.8% | t, n, r, s, ʃ, d, t͡s, d͡ʒ, t͡ʃ, z |
軟口蓋 | 50,376,728 | 22.5% | k, g, h, ŋ |
硬口蓋 | 15,186,905 | 6.8% | ɲ, j |
その他 | 2,876,175 | 1.3% | N |
おお、たしかに歯茎音が圧倒的!
でも単独の子音でいうと k が多いんですね。
(hは軟口蓋扱いでいいのかとか言いたいことは色々あると思いますが・・・)
Qiitaなのでコードも載せておこう
ソースコードはこちらにおいてます。
https://github.com/moriwo/aozorabunko_mining
やっていることとしては、青空文庫の各ファイルに対して、
- 読み込んで書誌情報等を削除
- fugashi を使って読みがな(カタカナ)を取得
- カタカナからローマ字に自前で変換して、子音の数をカウント
というだけです。
ただ、この「ローマ字への変換」にはいくつか注意点がありまして、そこをどうにかしているのが以下のメソッドです。
def kana_to_phonemes(s: str):
p = list("".join(phonemes[c] for c in s))
for i in range(0, len(p)):
if p[i] == 'N':
if i+1 >= len(p):
# 文末の「ん」はNとする
break
elif p[i+1] in 'kg':
# 軟口蓋音の前の「ん」はng
p[i] = 'G'
elif p[i+1] in 'ztcdnr':
# 歯茎音の前の「ん」はn、ただしサ行の前はN
p[i] = 'n'
elif p[i+1] in 'YZC':
# 硬口蓋音の前の「ん」はY (nj)
p[i] = 'Y'
elif p[i+1] in 'pbmv':
# 両唇音の前の「ん」はm ※なお日本語にfは認めません(めんどいから・・・)
p[i] = 'm'
elif p[i+1] in 'aiueojhwsSN':
# 母音、半母音、サ行、は行の前の「ん」は鼻母音化のNとする
# N の前のNは面倒なのでNのままにする
pass
else:
raise # 想定できてない場合エラーに
return p
ここで何をやっているかといいますと、日本語の「ン」は実は直後に来る文字によって音が違うんですね。
日本語話者は人生で一度は必ず「Shimbashi」なのか「Shinbashi」なのか気になって眠れない夜があります。
マ行やパ行、バ行の前の「ん」は m だし、タ行などの前の「ん」は n です。
その他色々なバリエーションが「ん」にはあるので、それをどうカウントするかがキモとなります。
細かいことは、ここらへんのサイトを見ると面白いです。
https://ipa-mania.com/japanese-n/
果たして
この記事はQiitaに書く種類の記事だったのか?
-
ざっくり一般用語に直すと、「ほっとくと舌を歯の根元あたりに付けて出す音が多いんだな」くらいの意味です。 ↩