又双叒叕——汉字的堆叠

Posted on Tue 16 May 2017 in ProbStat

你可能会有这样的问题:类似“又双叒叕”这样子的汉字有多少?本文就是对此问题的分析。

数据来源

原始数据来源于参考维基百科条目二叠字三叠字四叠字

格式化后的的数据,参见源文件

本页面含有Unihan新版用字。有关字符可能会错误显示,详见Unicode扩展汉字。

数据分析

使用pandas进行数据表连接查询,可以找到同时具有多种叠字的字。

In [1]:
import pandas as pd
from functools import reduce
In [2]:
data=[pd.read_table('%d.txt'%i) for i in range(2, 5)]
In [3]:
def merge_out(x, y):
    return pd.merge(x, y, on='单', how='outer')
jointed=reduce(merge_out, data)

具有多种堆叠方式的字

具有二三四堆叠

In [4]:
jointed.dropna()
Out[4]:
1
16 𠈌
17 𠈌
18 𠈌
19 𠈌
36 𠫬
37 𠫬
38
39
40
41 𠱠
42
43 𠱠
53
65
87 𣊫
88 𣊫
89 𣊫
90 𣊫
95 𣛧
96 𣓏 𣛧
97 𣝯 𣡍
98 𣝯 𣡍
100 𣛕 𣡗 𣡾
106
107
109
110
111
112
115 𤛭
122 𤳳
129 𥗉
136 𦓈 𦓋
145 𧮦
150 𨏿
153 𨰻
161 𩙡
166
167 𩺰
169 𪚥

具有二三四堆叠的单字

In [30]:
def single_word(table):
    return ''.join(table.dropna()['单'].drop_duplicates().tolist())
In [31]:
single_word(jointed)
Out[31]:
'一人厶又口土屮日木朿果水火牛田石老言車金風魚龍'

金木水火土

  • 金 鍂 鑫 𨰻
  • 木 林 森 𣛧 𣡽
  • 土 圭 垚 㙓
  • 水 沝 淼 㵘
  • 火 炏 焱 燚

只具有二三堆叠的单字

In [34]:
S3=set(single_word(jointed[['单','双','三']]))
S4=set(single_word(jointed))
''.join(S3-S4)
Out[34]:
'女香馬力虫户瓜欠舌ㄑ子㔾太耳手毛隹飞生犬山白面大心吉目弓'

双叠字

In [6]:
jointed[['单','双']].drop_duplicates().dropna()
Out[6]:
0
1
2
3
4
5 𡱉
6 𠂢 𠃄
7 𠃐
8 𠃙
9
10 𠄌 𠃏
11
12
13
14 𠅯
15
16
18
20 𠐇
21
22 𠑐
23 𠑲
24 𠀘
25
26
27 𠓜
28 𠘬
29 𠘻
30 𠠴
31
... ... ...
138 𦣦
139
140 𦧚
141
142
144
145
146
147
148 𧼂
149
150
151
152
153
154
156
157 𩈲
158 𩈳
159
160
161
162 𠃧
163 𩡌
164 𩡐
165
166
167 𩺰
168 𪙹
169

157 rows × 2 columns

三叠字

In [7]:
jointed[['单','三']].drop_duplicates().dropna()
Out[7]:
0
1
16
17
30
35 𠨕
36
38
40
41 𠱠
48
53
57 𡘙
58 𡙒
61
62
63 𡥦
65
66 𡷈
75 𢏝
79
81 𢩕
83
87
88
95
96 𣓏
97 𣝯
100 𣡗
102 𣣓
... ... ...
184 𤕇
185 𡬐
186 𡬚
187 𡬜
188
189 𡿭
190 𢅈
191 𣁕
192 𣡕
193
194
195 𤳅
196 𥃣
197
198 𡳻
199
200 𥩌
201 𥴒
202
203 𦏱
204 𦧅
205 𠑰
206
207
208 𨷮
209
210
211 𩖏
212 𩧢
213 鹿

104 rows × 2 columns

四叠字

In [8]:
jointed[['单','四']].drop_duplicates().dropna()
Out[8]:
1
4
16 𠈌
26 𠓙
31 𣬅
36 𠫬
38
40
53
65
87 𣊫
94
95 𣛧
97 𣡍
100 𣡾
106
109
115 𤛭
122 𤳳
129 𥗉
136 𦓋
145 𧮦
150 𨏿
153 𨰻
161 𩙡
166
169 𪚥
183 𡚌
188 𡮐
192 𣡽
194 𤆁
195 𤳵
201 𥷹
204 𠔻
209 𩇔
210
214 𠁠
215
216 𡈶
217 𡈹
218
219 𣌠
220 𣊭
221 𨷾