掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2004|回复: 8

[语言讨论] 通过Python分析日语单词中音调类型的比例

[复制链接]
  • TA的每日心情
    开心
    2023-3-10 21:15
  • 签到天数: 1329 天

    [LV.10]以坛为家III

    发表于 2019-3-23 21:42:30 | 显示全部楼层 |阅读模式
    本帖最后由 enjoy了哦 于 2019-3-23 23:23 编辑 5 k6 e# ^2 Z+ _) f9 `. v. L. K) y  u
    . h  C0 h5 k" O7 \; D6 _
    通过调查日语单词中音调类型的比例,可以得出一些结论,方便记忆单词本身和其后续助词的音调。, d  g6 I. N( j1 r( Q- U/ p9 [/ y5 T

    ! X3 X( Y7 w+ T5 Y+ A3 E原始数据:新明解国语辞典第5版(EPWING格式)
    4 [1 L6 K) w- s! b3 `# d  U首先通过 EBDump 打开该EPWING格式词典的文件夹的 HONMON 文件,导出其中的“前方一致表記形見出し”部分,选择全部的1412个block。# u. `  w2 s2 D/ W
    4 J! S$ s# L2 J% U" _8 b. I+ F/ \

    ) ]) W( f1 ^7 F2 ]9 H导出后,将该文件转码成 UTF-8 格式,并使用正则表达式替换部分内容,使其容易被后续分析处理。
    ! g5 K! s( U1 g" h; K& _
    : x4 R& V2 W6 _3 p, F- \" ]- |3 w7 U
    为统计尾高型音调,需要知道每个单词的拍数。由于拗音占有两个字符,但只算一拍,为了方便统计,将其中的小的[ゃ][ゅ][ょ] 及对应的片假名(还有小的[ア][イ][ウ][エ][オ]等,外来词专用音节)去掉,即[きゃ][きゅ][きょ]中后面那个字符。这样一来,拍数就等于字符数了。
    7 w: p# X* w- y' _3 G$ ]0 a+ z+ i) \( }! X' A
    最终的经过清洗的“干净”的数据如下所示,根据个人的习惯进行处理:; P; x4 a% w7 G9 s
    8 j& U3 ~3 J$ E+ ^; M

    0 |/ @' w! h* p) o9 U然后可以通过 Python 进行统计,一个单词可能有多个音调,但只统计第一个音调(稍微改动源码可以统计所有的音调)。这个代码可以用来明白大致的统计思路,后续还有写零碎的更改,并没有体现在这里面。- X, Y/ `( p6 V. C
    1. #!/usr/bin/env        python8 J- T5 N. d( n  ]: W, f
    2. #_*_        coding:utf-8        _*_) |& O( J; L0 b2 h$ Q

    3. $ K+ }" ~# l0 B3 Y
    4. import sys,os
      9 o( H7 q4 W9 S% C) m: l, e
    5. import numpy as np
      ) n9 K7 V4 d2 w
    6. ( w" l! P5 p, D. H( A3 }, I  P
    7. # 带有音调标记的词汇数目
      3 b& U2 K3 ?4 S' f4 w. K; E
    8. all_entry = 04 a6 p6 W1 g& W4 d$ |% j% o( ]2 k
    9. 0 {* O) c" V) ]
    10. # 平板型,[0]/ X1 S/ `' C3 N
    11. entry_0 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
      3 |3 y' v! M; \& r
    12. ( _# i9 s: a2 m
    13. # 头高型,[1]
      8 j2 s% Q' K# B8 L9 f8 {+ |
    14. entry_1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
      " B) e3 \5 d  Z' }( ~

    15. % ]  W, n2 K3 \4 W$ O
    16. # 尾高型,[x] = 拍数# w. [. W# ]' Z6 }
    17. entry_last_high = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]- {) c  `8 i! f" N/ m7 h& ^

    18. " e: u1 d, |+ h7 T% {5 z
    19. # 中高型,[x] < 拍数
      2 i# m" E/ f" k7 |9 X! p: n
    20. entry_middle = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
      & l7 J1 F' B0 R; z) z

    21. 1 K( |6 }5 q* F( m+ L- l% ]. q
    22. file_name = sys.argv[1]
      / C, ]2 ^8 }- S5 K% _% V
    23. f = open(file_name,'rb')
      3 P8 I: R1 d% ^
    24. for line in f:; a5 _$ V& P0 b! B7 x! M' b" r0 Q8 ]
    25.         line = line.replace(b"\r\n",b"")
      2 X+ [: X1 g2 _7 g
    26.         line = line.decode()& ?( k: j, l: q) R+ A3 _
    27.         db = line.split(',')6 r+ \6 e" u6 I. M0 _) r
    28.         word_len = len(db[0])' \. W/ A$ N) W% G$ O
    29.         if word_len < 16:7 r. u. p' ^2 ?  B
    30.                 all_entry = all_entry + 1
      ' P- Q: o$ Y- B# Z: y% `4 n  n/ U
    31.                 for i in range(1,len(db)):1 r& a& W) }) K8 @& l
    32.                         accent = db[i]
      ) _- Q6 O& Q3 t  n2 v/ L
    33.                         if accent.startswith('['):/ W& u: @5 c! D+ }1 B; D4 x: d& f# s
    34.                                 integer = int(accent[1])
      ) q2 q! T+ o% ]" G1 c
    35.                                 if integer == 0:2 A) K7 B+ n* G  B0 L  ]2 c
    36.                                         entry_0[word_len] = entry_0[word_len] + 1! r# \3 u4 V' t+ Q
    37.                                 elif integer == 1:
      7 V7 Z' q  M9 ^) B+ A- m
    38.                                         entry_1[word_len] = entry_1[word_len] + 11 U/ Y- ?3 s8 K- w2 W9 ]
    39.                                 elif integer == word_len:
      $ O2 x! T, m; o* {9 m: G. H0 i
    40.                                         entry_last_high[word_len] = entry_last_high[word_len] + 1
      ' X3 j5 w. n' j/ i: D
    41.                                 else:5 j5 A; A  @4 R4 a
    42.                                         entry_middle[word_len] = entry_middle[word_len] + 13 i1 h$ k- M* K/ o& T$ |  e1 m
    43.                                 break$ |' @( h1 F  M/ Y0 u( O

    44. 7 A9 I  h% E% k* q: y# P% W
    45. print('[0]:')! o9 Z8 g2 s% k6 l# f& \5 D4 P; ]
    46. for i in range(1,len(entry_0)):. C; R1 d& ]7 l$ y8 b9 p! {
    47.         print('%d' % (entry_0[i]))
      ; b6 m5 b" T1 |3 f
    48. print('entries: %d' % np.sum(entry_0))
      : B7 j; V2 j! W1 b
    49. print('\n')! ^  K. ^; Z# a; Z9 ?2 N0 L( R9 r& _

    50.   N, G* w3 g$ ^) D
    51. print('[1]:')
      " T6 {, L" K; M! U
    52. for i in range(1,len(entry_1)):3 }5 Z$ A  u# l7 f7 M9 ^
    53.         print('%d' % (entry_1[i]))
      ! B# l; ?& ]  b5 h$ z+ @/ Z
    54. print('entries: %d' % np.sum(entry_1))4 Z: `0 d5 {4 c  y! ^+ l& d! C
    55. print('\n')
      3 k4 |2 E0 V1 Z
    56. ; n. A. g5 b1 ~4 t! I$ L
    57. print('middle high:')
      $ M/ e; R+ f) A+ R" M' @
    58. for i in range(1,len(entry_middle)):* [1 R' \; e; u1 w' A2 S
    59.         print('%d' % (entry_middle[i])); k/ E* t, |' d
    60. print('entries: %d' % np.sum(entry_middle))% L5 f- [* B( |3 f: j
    61. print('\n')$ `" B4 N7 T, Z+ Y/ Q

    62. % ?2 s# z: [# g2 k3 q3 W' o+ T
    63. print('last high:')& j* c  ^4 M) i5 H5 A: n
    64. for i in range(1,len(entry_last_high)):5 A) m& l% W' ?8 m. C* b
    65.         print('%d' % (entry_last_high[i]))
      ; \3 \$ p- C4 m9 ]5 L2 W2 N
    66. print('entries: %d' % np.sum(entry_last_high))
      / q2 I$ o6 J0 N  c9 d' a
    67. print('\n')
      6 k4 Y4 ?* r; w; ]& q

    68. 3 G0 `1 f9 n6 B, @. L
    69. print('all entries:')
      $ n# `. X. `) O  C6 k2 R% F
    70. print(all_entry)
      ! N. V) _; T6 c, v6 x

    71. $ l" Q. j8 m+ n" w) u% W
    72. f.close()
    复制代码
    ' n% C* I/ }$ Z$ R% w
    1 ?2 g1 h) o- |7 Z$ z1 N
    最后将 Python 输出结果进行数据可视化:) @. O) W# O. G0 K" f: d

    . \, t0 J6 v$ E; c7 ]; q
    5 J/ p1 h! N- W9 M5 F2 n) z) l, ^7 B
    ' D/ k% c5 Z, f) w5 Q- c; b# q" _: H0 Y4 E+ n9 Q9 u% C0 [
    以及饼图:
    9 N% \2 y6 i, |+ b8 X' _8 M3 q8 ?4 p0 e9 K$ X2 u; U0 R3 D" A+ l0 u
    $ C" h3 H3 @. c# n! r
    可以得出几个结论:
    # h' ~4 u0 H  J3 o1. 尾高型的单词很少(约2%,大部分在2拍和3拍的单词上,2拍和3拍五五开,总共约1300个单词(在7万多个单词中)。
    6 B+ T8 \3 f3 S% B/ z- q2. 头高型的单词次少(约17%),主要集中在3拍的单词上(约51%),2拍和4拍都约占20%左右。
    & w4 y" E8 ^" |3. 日语中4拍的单词最多(约42%),并且相当一部分(约72%)是平板型。这和新标日中入门单元里,“声调和语调”部分中“声调”小节里的解说是一样的。
    + g3 R* Q1 t4 w+ W5 w1 w+ P4. 记忆平板型和尾高型的单词时,单词本身发音规律相同,都是前低后高,但后接的助词音调不同,不好记忆。但通过上述统计,可以这么做:(两拍以上)尾高型的单词单独记忆后续助词的音调,其后续助词的音调总是低的,而在一般情况下,一个单词(两拍以上)后接的助词的音调(高或低)和该单词的最后一拍是相同的。一拍的单词完全不符合这个“一般情况”,只需要记住这一拍本身是低还是高,再根据“一个单词中第一拍和第二拍音调必定不同”来确定助词音调。单词本身的音调则通过多听、多用以形成固定的记忆。
    # b+ M6 h: c2 ^( O5 _+ Z/ s+ Q+ ~0 N# E/ x
    - n' w% p' K: W$ f% G( \* j
      r8 a1 p: d- S/ f' u
    ( F$ e* ^' @4 H8 t" z' [# G
    3 x0 }  ^. X+ ?+ R% J6 Z3 e! B

    " X4 Z) `# p9 |( t
    5 k2 Q" t5 J2 C/ P# ^: l

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    评分

    2

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情
    开心
    2023-3-10 21:15
  • 签到天数: 1329 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-3-24 07:52:11 | 显示全部楼层
    kriskr 发表于 2019-3-24 00:48
    ; x  r) f' J; |- F7 ?想问下楼主ebdump导出后如何转码为utf8 为什么我转码后,是乱码,求赐教,是需要一些python改动吗 ...
    . K9 G# [3 a) w. Y; j- W3 s
    文本编辑我一般用 notepad++,开源又好用。其中的 Encoding 菜单中有个Convert to UTF-8,可以转码。' M3 Z' q3 J- E; s4 R7 K% O  p; r
    ' M& @: C; L6 k
    在正则表达式替换的过程中,做了如下处理:: \) w9 a: Q+ p7 K  q! d7 s
    1. 删除了多个单词组成的条目。这种条目分别对每一个组成单词都标注了音调。
    " y5 f1 D& T7 J) b) z" w) I+ [0 M2. 声调类型统计只统计0-9,10及以上不统计。4 S+ l: D  |" q( K/ o) C
    3. 拍数在16拍及以上的不统计。# \5 j+ l' W8 b" i* E! @# F8 Q
    以及一些细微的调整。7 Z1 a; p3 Q+ E$ |6 H3 N
    9 V# p( m' [% y0 V$ a) L9 u
    因为各人处理的方法不同,你最终得出的统计结果可能和我不太一样。
  • TA的每日心情
    慵懒
    2021-11-14 17:58
  • 签到天数: 999 天

    [LV.10]以坛为家III

    发表于 2019-3-23 22:43:16 | 显示全部楼层
    本帖最后由 kapan000 于 2019-3-23 22:46 编辑 $ W5 v: ?7 u9 M* q) G! Y! x: R7 I

    4 l5 F. ?1 f2 C9 i  W2 j* h请教几个问题. B" P! I0 b* m! W/ [7 \2 a+ B
    1、新明解单词数较少,可否统计下超级大辞林?
    2 U) t; ~7 |* x4 D, T2 F2、统计饼图,可否给出所占比例和数量。这样更好看点。3 T6 S; J& c9 n" m6 S4 Y) N
    3、可否给出统计的xls?我想再算下,10拍以内,各拍那个声调多一点及其比例4 l- c5 L- ]1 e! t

    ) A7 N( U/ T* d4 e( o4 ?# T/ q没想到0声单词这么多9 M5 V! n. g. z  ?
    我一直认为2,3,4...这类最多
  • TA的每日心情
    开心
    2023-3-10 21:15
  • 签到天数: 1329 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-3-23 23:12:18 | 显示全部楼层
    kapan000 发表于 2019-3-23 22:433 C* Y  O5 Q- m
    请教几个问题
    9 F2 ]& u! D  c( W6 D1、新明解单词数较少,可否统计下超级大辞林?
    8 O) F- S/ H. T2、统计饼图,可否给出所占比例和数量。这样更 ...
    9 O5 U& }5 l3 B( t6 y) q1 ?
    我觉得统计超级大辞林没有必要。原因有以下几点:
    5 ]; M* V$ {, O. H( ?5 I$ A1. 新明解已经收录了常用单词,这个统计是用来指导记忆声调的,对常用7万单词的统计我觉得真的已经足够了。
    3 y! ?, ^6 @: q/ ~2 q$ Y8 p2. 要对超级大辞林进行数据清洗是非常麻烦的。其中的百科词条等,也不太常用。& Z. @9 Y4 x+ j8 r- B) c
    3. 超级大辞林中的大量片假名词语(外来词等),其声调相比常用和语、汉语词汇,没有那么固定。如果将其纳入统计,我觉得并不具有代表性。" l2 n# k7 H* D) e. U
    4. 对于超级大辞林中古语的声调,我觉得统计了也没有什么代表性,我学现代日语就已经够呛了。; s( m" w, @/ t# [" N& f

    ; t- a+ P+ V9 f8 S4 ~* A6 r6 ?$ S学日语真心推荐新明解,你可能觉得它收词量小,但是它还告诉你词汇的用法,一些有用的信息等。
    " T7 R+ T" L/ M
    1 J/ v* M1 m8 p6 E& @这个EPWING版的新明解好像是通过别的格式转来的,里面有很多东西没转对,问题有点大,最好不要用。
  • TA的每日心情
    慵懒
    2021-11-14 17:58
  • 签到天数: 999 天

    [LV.10]以坛为家III

    发表于 2019-3-23 23:43:22 来自手机 | 显示全部楼层
    本帖最后由 kapan000 于 2019-3-24 00:01 编辑 0 H- Y' D% t& @+ p
    enjoy了哦 发表于 2019-3-23 23:12
    * g  l$ \1 B7 @# V& r我觉得统计超级大辞林没有必要。原因有以下几点:/ K/ N8 O; v: W8 s
    1. 新明解已经收录了常用单词,这个统计是用来指导记忆 ...

    ) K7 o# x1 E: U% \8 y6 v6 r非常感谢。请问下,这个统计是全部单词?是否包含了片假名单词?% R( j  ~5 n0 v. q" `

    ; O8 _4 o, }& U9 o9 G* c, C如果可以的话,能否再统计以下3个纬度# L* O: }  F' p4 P/ _7 E4 X
    这样就更细化,明白了9 d! f0 ~& r% s6 q9 h- p
    纯片假名8 X/ k" T( [% H/ l( k" J" u
    有汉字的( w$ _- h- U6 e7 p; Y
    纯平假名的,即完全无汉字的
    - |7 w- t( K8 m
    & h1 c$ c7 W" T  Q( P) ^谢谢
    9 r: ~! r' w) j( _) V# W, `, N0 L% f& K) Q* s# J, X5 ^
    ) T* E( G1 {- j  N- |
  • TA的每日心情
    开心
    2020-11-10 14:17
  • 签到天数: 580 天

    [LV.9]以坛为家II

    发表于 2019-3-24 00:48:53 | 显示全部楼层
    想问下楼主ebdump导出后如何转码为utf8 为什么我转码后,是乱码,求赐教,是需要一些python改动吗
  • TA的每日心情

    2023-4-8 13:06
  • 签到天数: 169 天

    [LV.7]常住居民III

    发表于 2019-3-24 10:05:05 | 显示全部楼层
    想问下楼主ebdump导出后如何转码为utf8 为什么我转码后,是乱码,求赐教,是需要一些python改动吗
  • TA的每日心情

    2023-4-8 13:06
  • 签到天数: 169 天

    [LV.7]常住居民III

    发表于 2019-3-24 10:12:58 | 显示全部楼层
    求导出的txt
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-27 18:07 , Processed in 0.049886 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表