Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Символи вікіпедії, детальніший аналіз

with one comment

Щодо моєї попередньої публікації, мені зауважили що є різні простори імен. Тому сьогодні буде аналіз лише тих символів які можна зустріти в статтях (а не в категоріях, шаблонах, на сторінках користувачів і проектів), розбивка по різних алфавітах (може кому треба буде для частотного аналізу).

Загалом статті складаються з 3 613 435 448 символів, з яких різних 23 717. Вони розподілені так (намальовано лише початок розподілу, бо решта – неозрброєним оком не видно):


Ось таблиця найвживаніших 256, де спершу йде номер в рейтингу, потім символ, а останнє число – скільки раз він зустрічається. Якщо символ невидимий – то в дужках вказаний його номер в таблиці юнікоду:

1) пробіл (32) 442790853
2) а 160531292
3) о 157877564
4) н 138215454
5) і 117277229
6) р 105263631
7) и 98886082
8) е 88928818
9) т 87767363
10) | 80797095
11) в 78200503
12) с 75999527
13) ] 73604421
14) [ 73599732
15) л 70900301
16) к 69356359
17) новий рядок (10) 57091749
18) e 52089242
19) у 50198598
20) д 48912768
21) = 46361768
22) м 46138865
23) t 41512840
24) п 40914157
25) a 39627848
26) r 36179188
27) n 36087343
28) я 34788627
29) ь 33853333
30) . 32022232
31) s 31881844
32) i 30972299
33) з 30652689
34) o 30492305
35) 1 30006539
36) l 29367163
37) г 28746761
38) 0 27570049
39) й 26579527
40) - 24869609
41) ' 24751079
42) б 23634039
43) 2 21423701
44) , 21261521
45) / 20051917
46) c 19845819
47) p 19831300
48) ц 19183628
49) } 18895464
50) { 18889983
51) ч 18359390
52) d 17813691
53) b 16517162
54) 9 16240786
55) g 15262611
56) х 14936744
57) u 14902347
58) f 14303148
59) ї 13406838
60) h 13050086
61) m 12543340
62) < 12111655
63) : 12102999
64) > 12094377
65) ж 11923903
66) 3 10947193
67) 5 10647152
68) " 10484943
69) 4 10091884
70) w 9560852
71) К 9364738
72) П 9190333
73) 8 9177988
74) ю 9157643
75) ; 9037575
76) 6 8918805
77) С 8870091
78) ) 8867662
79) ( 8851064
80) ш 8821755
81) 7 8188158
82) ф 7340920
83) А 7166375
84) y 7039008
85) & 7006502
86) В 6869441
87) _ 6022842
88) М 5970386
89) є 5956858
90) k 5778567
91) Г 5745696
92) * 5712005
93) — 5519856
94) Л 4852833
95) S 4825612
96) Р 4712055
97) v 4646612
98) Н 4635296
99) Д 4580191
100) A 4422679
101) D 4409130
102) Т 4356396
103) щ 4143981
104) Б 4112548
105) У 4017973
106) R 3910061
107) Ф 3848824
108) I 3805943
109) « 3732952
110) » 3730320
111) C 3706725
112) О 3626277
113) E 3501507
114) P 3206479
115) І 3168901
116) F 3042662
117) З 2886284
118) L 2875664
119) T 2762480
120) % 2668723
121) B 2665154
122) M 2605927
123) N 2471967
124) G 2455406
125) # 2432361
126) x 2377037
127) ! 2307947
128) z 1683501
129) H 1652473
130) V 1627598
131) j 1580981
132) K 1542325
133) Ч 1534632
134) Х 1497880
135) U 1430170
136) Ш 1413847
137) O 1364521
138) Е 1326679
139) W 1071605
140) Ц 970737
141) – 873533
142) J 866094
143) ? 838918
144) Q 767843
145) Я 759389
146) Є 680158
147) X 636113
148) Y 617782
149) Ж 607830
150) ы 548375
151)   511929
152) Ю 503103
153) q 490449
154) + 467382
155) ́ 381075
156) \ 343889
157) 328026
158) Z 313673
159) ґ 293475
160) Й 286295
161) № 279189
162) é 263700
163) И 240639
164) Ґ 138039
165) ° 134968
166) ’ 129122
167) Щ 112586
168) ½ 92609
169) э 89526
170) … 88401
171) ó 87628
172) â 84646
173) ~ 75512
174) ü 67713
175) ^ 66068
176) ł 65770
177) Э 65262
178) ă 63282
179) á 62358
180) ъ 60515
181) ţ 60459
182) Ї 59899
183) • 58273
184) ² 57176
185) − 51293
186) × 51201
187) ё 50264
188) ä 49539
189) “ 47666
190) ö 47657
191) $ 46091
192) † 42959
193) ş 41864
194) è 41182
195) α 39774
196) í 38230
197) „ 34637
198) ο 34016
199) → 28048
200) ا 27473
201) · 26648
202) ‎ 26007
203) ν 24624
204) ń 24312
205) ι 24220
206) ę 24171
207) Ь 24064
208) ± 23585
209) ′ 23492
210) ” 23461
211) τ 23408
212) ș 23387
213) ς 23318
214) ρ 22519
215) š 21622
216) ś 21499
217) à 21334
218) ą 20463
219) ў 19269
220) ​ 18949
221) ε 18309
222) č 18232
223) @ 18014
224) É 17552
225) ç 17282
226) λ 17177
227) ل 16987
228) ³ 15756
229) σ 14667
230) κ 14317
231) ż 13948
232) η 13811
233) μ 12411
234) ر 12083
235) ي 11783
236) ā 11684
237) ñ 11460
238) م 11324
239) ć 11226
240) υ 11130
241) ن 11115
242) ß 10974
243) π 10708
244) ί 10461
245) ë 9850
246) ı 9824
247) ú 9761
248) ž 9598
249) ά 9572
250) ț 9284
251) γ 9152
252) ‘ 9122
253) ա 8975
254) ѣ 8947
255) و 8929
256) қ 8841

Ось вони ж, по групах:

Український алфавіт

2) а 160531292
3) о 157877564
4) н 138215454
5) і 117277229
6) р 105263631
7) и 98886082
8) е 88928818
9) т 87767363
11) в 78200503
12) с 75999527
15) л 70900301
16) к 69356359
19) у 50198598
20) д 48912768
22) м 46138865
24) п 40914157
28) я 34788627
29) ь 33853333
33) з 30652689
37) г 28746761
39) й 26579527
42) б 23634039
48) ц 19183628
51) ч 18359390
56) х 14936744
59) ї 13406838
65) ж 11923903
71) К 9364738
72) П 9190333
74) ю 9157643
77) С 8870091
80) ш 8821755
82) ф 7340920
83) А 7166375
86) В 6869441
88) М 5970386
89) є 5956858
91) Г 5745696
94) Л 4852833
96) Р 4712055
98) Н 4635296
99) Д 4580191
102) Т 4356396
103) щ 4143981
104) Б 4112548
105) У 4017973
107) Ф 3848824
112) О 3626277
115) І 3168901
117) З 2886284
133) Ч 1534632
134) Х 1497880
136) Ш 1413847
138) Е 1326679
140) Ц 970737
145) Я 759389
146) Є 680158
149) Ж 607830
152) Ю 503103
159) ґ 293475
160) Й 286295
163) И 240639
164) Ґ 138039
167) Щ 112586
182) Ї 59899
207) Ь 24064

Англійський алфавіт

18) e 52089242
23) t 41512840
25) a 39627848
26) r 36179188
27) n 36087343
31) s 31881844
32) i 30972299
34) o 30492305
36) l 29367163
46) c 19845819
47) p 19831300
52) d 17813691
53) b 16517162
55) g 15262611
57) u 14902347
58) f 14303148
60) h 13050086
61) m 12543340
70) w 9560852
84) y 7039008
90) k 5778567
95) S 4825612
97) v 4646612
100) A 4422679
101) D 4409130
106) R 3910061
108) I 3805943
111) C 3706725
113) E 3501507
114) P 3206479
116) F 3042662
118) L 2875664
119) T 2762480
121) B 2665154
122) M 2605927
123) N 2471967
124) G 2455406
126) x 2377037
128) z 1683501
129) H 1652473
130) V 1627598
131) j 1580981
132) K 1542325
135) U 1430170
137) O 1364521
139) W 1071605
142) J 866094
144) Q 767843
147) X 636113
148) Y 617782
153) q 490449
158) Z 313673

Цифри

35) 1 30006539
38) 0 27570049
43) 2 21423701
54) 9 16240786
66) 3 10947193
67) 5 10647152
69) 4 10091884
73) 8 9177988
76) 6 8918805
81) 7 8188158

Пунктуація

1) пробіл (32) 442790853
17) новий рядок (10) 57091749
10) | 80797095
13) ] 73604421
14) [ 73599732
21) = 46361768
30) . 32022232
40) – 24869609
41) ‘ 24751079
44) , 21261521
45) / 20051917
49) } 18895464
50) { 18889983
62) < 12111655
63) : 12102999
64) > 12094377
68) ” 10484943
75) ; 9037575
78) ) 8867662
79) ( 8851064
85) & 7006502
87) _ 6022842
92) * 5712005
93) — 5519856
109) « 3732952
110) » 3730320
120) % 2668723
125) # 2432361
127) ! 2307947
141) – 873533
143) ? 838918
151) нерозривний пробіл (160) 511929
154) + 467382
155) ́ 381075
156) \ 343889
157) TAB (9) 328026
161) № 279189
165) ° 134968
166) ’ 129122
168) ½ 92609
170) … 88401
173) ~ 75512
175) ^ 66068
183) • 58273
184) ² 57176
185) − 51293
186) × 51201
189) “ 47666
191) $ 46091
192) † 42959
197) „ 34637
199) → 28048
200) ا 27473
201) · 26648
202) символ зліва-направо 26007
208) ± 23585
209) ′ 23492
210) ” 23461
220) пробіл нульової довжини (8203) 18949
223) @ 18014
228) ³ 15756
252) ‘ 9122

Латиниця з наворотами

162) é 263700
171) ó 87628
172) â 84646
174) ü 67713
176) ł 65770
178) ă 63282
179) á 62358
181) ţ 60459
188) ä 49539
190) ö 47657
193) ş 41864
194) è 41182
196) í 38230
204) ń 24312
206) ę 24171
212) ș 23387
215) š 21622
216) ś 21499
217) à 21334
218) ą 20463
222) č 18232
224) É 17552
225) ç 17282
231) ż 13948
236) ā 11684
237) ñ 11460
239) ć 11226
242) ß 10974
245) ë 9850
246) ı 9824
247) ú 9761
248) ž 9598
250) ț 9284

Застарілі кириличні букви

150) ы 548375
169) э 89526
177) Э 65262
180) ъ 60515
187) ё 50264
219) ў 19269
254) ѣ 8947
256) қ 8841

Грецькі букви

195) α 39774
198) ο 34016
203) ν 24624
205) ι 24220
211) τ 23408
213) ς 23318
214) ρ 22519
221) ε 18309
226) λ 17177
229) σ 14667
230) κ 14317
232) η 13811
233) μ 12411
240) υ 11130
243) π 10708
244) ί 10461
249) ά 9572
251) γ 9152

Арабські

227) ل 16987
234) ر 12083
235) ي 11783
238) م 11324
241) ن 11115
255) و 8929

Вірменська

253) ա 8975

Парні символи

Минулого разу мені стало цікаво чому кількість дужок не співпадає. Може варто було б написати правильний алгоритм зі стеком, але я поки напевне спробую знайти статті де просто кількість дужок не співпадає аби подивитись в чому річ.

При цьому не є збалансованими майже всі дужки. Щодо круглих ясно, бо навіть в цій публікації в мене закриваючі масово переважають відкриваючі, але щодо квадратних і фігурних, які задають посилання і шаблони (трансклюзію сторінок). Якщо запустити програму яка стеком перевіряє парність:


package main
import (
"fmt"
"log"
"os"
)
func main() {
if len(os.Args) < 2 {
log.Fatal("Please specify a file to read")
}
for page := range Read(os.Args[1]) {
if page.Namespace != 0 {
continue // skip all namespaces except main
}
if page.Redirect != nil {
continue // skip redirects
}
err := checkBalance([]rune(page.Text))
if err != nil {
fmt.Println(page.Title, err)
}
}
}
type Stack struct {
contents []rune
}
func (s Stack) String() string {
return string(s.contents)
}
func (s Stack) Length() int {
return len(s.contents)
}
func (s *Stack) Push(v rune) {
s.contents = append(s.contents, v)
}
func (s *Stack) Pop() (rune, error) {
l := len(s.contents)
if l == 0 {
return 0, fmt.Errorf("Stack if empty")
}
r := s.contents[l-1]
s.contents = s.contents[:l-1]
return r, nil
}
func checkBalance(text []rune) error {
stack := Stack{}
for i, r := range text {
if (r == '[' || r == '{') {
stack.Push(r)
}
if (r == ']' || r == '}') {
s, err := stack.Pop()
if err != nil {
return fmt.Errorf(
"Закриваюча дужка %s без відкриваючої до неї біля %#v",
string([]rune{r}),
string(text[max(0, i – 20): min(len(text), i + 20)]),
)
}
if (
(r == ']' && s != '[') ||
(r == '}' && s != '{')) {
return fmt.Errorf(
"Біля %#v закривається %s, але була відкрита %s",
string(text[max(0, i – 20): min(len(text), i + 20)]),
string([]rune{r}), string([]rune{s}),
)
}
}
}
if stack.Length() != 0 {
return fmt.Errorf("До кінця сторінки не закриті наступні дужки %s", stack)
}
return nil
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func min(a, b int) int {
if a < b {
return a
}
return b
}

view raw

main.go

hosted with ❤ by GitHub

То отримаємо нескінченний потік помилок у всіх статтях:

Швеція Закриваюча дужка ] без відкриваючої до неї біля "eritage Foundation]]]:\n* ВВП&nbsp;— $ 24"
Сумська область До кінця сторінки не закриті наступні дужки [[
Тернопільська область Закриваюча дужка ] без відкриваючої до неї біля "ьні вечори. Дебют]]»]] (Тернопіль), міжн"
Теліга Олена Іванівна Закриваюча дужка ] без відкриваючої до неї біля "нього шкільного віку] / [[Анна Багряна]]"
Західний Буг До кінця сторінки не закриті наступні дужки [
Андрухович Юрій Ігорович Закриваюча дужка ] без відкриваючої до неї біля ". Літ, 29 січня 2013]</ref> були наведен"
Данило Галицький Закриваюча дужка } без відкриваючої до неї біля "а Романівна]] ({Пом}} після [[1241]]), о"
29 Закриваюча дужка } без відкриваючої до неї біля "377a.htm}}{{ref-en}}}</ref>\n\n== Народили"

Переважкно люди в джерелах ставлять зайву закриваючу квадратну, або забувають відкрити квадратну, тому що якось дуже недбало ставляться до оформлення джерел. Але тих помилок так багато що я не знаю як їх всіх виправити. 😦 Може варто написати якийсь лінтер для вікіпедії, який би про ці помилки авторам повідомляв?

Written by bunyk

18 Березня, 2018 at 19:05

Опубліковано в Кодерство, Розмітка

Tagged with ,

Одна відповідь

Subscribe to comments with RSS.

  1. Так, автозавершення, підкреслення помилок, підказування параметрів.

    harmyder

    26 Квітня, 2018 at 12:48


Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.