Rumah > Artikel > pembangunan bahagian belakang > Negara manakah yang mempunyai kandungan paling banyak di Wikipedia?
Apabila saya mencari sesuatu di internet, saya sering mendapati bahawa kandungan bahasa Inggeris jauh lebih komprehensif daripada kandungan bahasa Perancis.
Walaupun nampak jelas memandangkan bilangan penutur bahasa Inggeris di dunia berbanding penutur bahasa Perancis (kira-kira 4 hingga 5 kali ganda), saya ingin menguji hipotesis ini dan mengukurnya.
TLDR: Secara purata, sebuah rencana bahasa Inggeris di Wikipedia mengandungi 19% lebih maklumat daripada rakan sejawatannya dari Perancis.
Kod sumber untuk analisis ini tersedia di sini: https://github.com/jverneaut/wikipedia-analysis/
Wikipedia ialah salah satu sumber terbesar kandungan berkualiti di web di seluruh dunia.
Pada masa artikel ini ditulis, versi Inggeris mempunyai lebih 6,700,000 artikel unik berbanding hanya 2,500,000 untuk versi Perancis. Kami akan menggunakan korpus ini sebagai asas untuk kajian kami.
Menggunakan kaedah Monte Carlo, kami akan mencuba artikel rawak daripada Wikipedia untuk setiap bahasa dan mengira purata panjang aksara korpus ini. Dengan bilangan sampel yang cukup besar, kita harus memperoleh hasil yang hampir dengan realiti.
Memandangkan API Wikimedia tidak menyediakan kaedah untuk mendapatkan panjang aksara artikel, kami akan memperoleh maklumat ini seperti berikut:
Memandangkan kami menggunakan kaedah Monte Carlo untuk menganggarkan bait setiap aksara, kami memerlukan bilangan artikel terbesar yang mungkin untuk meminimumkan sisihan daripada nombor sebenar.
Dokumentasi API Wikimedia menyatakan had ini:
Mengambil kira pengehadan ini dan sebagai kompromi antara ketepatan dan masa pelaksanaan pertanyaan, saya memilih untuk mencuba 100,000 artikel bagi setiap bahasa sebagai rujukan untuk panjang bait artikel dan 500 artikel untuk menganggarkan bait setiap aksara bagi setiap bahasa.
Pada masa ini, API Wikimedia mengembalikan format teks wikinya sendiri apabila diminta memberikan kandungan artikel. Format ini bukan teks biasa dan lebih dekat dengan HTML. Memandangkan semua bahasa di Wikimedia menggunakan format yang sama ini, saya menganggarkan bahawa kami boleh bergantung padanya tanpa mempengaruhi arah keputusan akhir kami.
Walau bagaimanapun, sesetengah bahasa lebih verbose daripada yang lain. Sebagai contoh, dalam bahasa Perancis, kami menyebut "Komen ça va?" (15 aksara) berbanding dengan "Apa khabar?" (12 aksara) dalam bahasa Inggeris. Kajian ini tidak mengambil kira fenomena ini. Jika kami ingin menanganinya, kami boleh membandingkan terjemahan yang berbeza bagi korpus buku yang sama untuk mewujudkan pembolehubah pembetulan "ketumpatan" untuk bahasa. Dalam penyelidikan saya, saya tidak menemui sebarang data yang menyediakan nisbah untuk digunakan pada setiap bahasa.
Walau bagaimanapun, saya telah menemui kertas kerja yang sangat menarik yang membandingkan ketumpatan maklumat 17 bahasa yang berbeza dan kelajuan ia dituturkan. Kesimpulannya ialah bahasa yang paling "cekap" dituturkan dengan lebih perlahan berbanding bahasa yang paling kurang cekap, menghasilkan kadar penghantaran maklumat lisan secara konsisten sekitar ~39 bit sesaat.
Menarik.
Seperti yang dinyatakan dalam protokol, kami akan menggunakan API Wikipedia untuk mendapatkan 500 artikel rawak dalam bahasa tertentu.
def getRandomArticlesUrl(locale): return "https://" + locale + ".wikipedia.org/w/api.php?action=query&generator=random&grnlimit=500&grnnamespace=0&prop=info&format=json" def getRandomArticles(locale): url = getRandomArticlesUrl(locale) response = requests.get(url) return json.loads(response.content)["query"]["pages"]
Ini kemudiannya memberi kita respons seperti { "id1": { "title": "...", "length": 1234 }, "id2": { "title": "...", "length ": 5678 }, ... } yang boleh kita gunakan untuk mendapatkan semula saiz dalam bait sebilangan besar artikel.
Data ini kemudiannya diolah semula untuk mendapatkan jadual berikut:
Language | Average length | ... |
---|---|---|
EN | 8865.33259 | |
FR | 7566.10867 | |
RU | 10923.87673 | |
JA | 9865.59485 | |
... |
Pada pandangan pertama, nampaknya artikel dalam bahasa Inggeris mempunyai panjang bait yang lebih besar daripada artikel dalam bahasa Perancis. Begitu juga, bait dalam bahasa Rusia mempunyai panjang bait yang lebih besar daripada dalam mana-mana bahasa lain.
Perlukah kita berhenti pada kesimpulan ini? Tidak cukup. Memandangkan panjang yang dilaporkan oleh Wikipedia ialah panjang dalam bait, kita perlu menyelidiki sedikit lebih mendalam tentang cara aksara dikodkan untuk memahami hasil awal ini.
Tidak seperti anda dan saya, komputer tidak mempunyai konsep huruf, apatah lagi abjad. Untuk itu, semuanya diwakili sebagai urutan 0s dan 1s.
Dalam sistem perpuluhan kita, kita pergi dari 0 kepada 1, kemudian dari 1 kepada 2, dan seterusnya, sehingga 10.
Untuk komputer, yang menggunakan sistem binari, kita pergi dari 0 kepada 1, kemudian dari 1 kepada 10, kemudian dari 10 kepada 11, 100, dan seterusnya.
Berikut ialah jadual perbandingan untuk menjadikannya lebih jelas:
Decimal | Binary |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
... |
Pembelajaran binari melangkaui skop artikel ini, tetapi anda dapat melihat bahawa apabila bilangannya menjadi lebih besar, perwakilan binarinya adalah "lebih luas" berbanding dengan perwakilan perpuluhannya.
Memandangkan komputer perlu membezakan antara nombor, ia menyimpannya dalam paket kecil 8 unit yang dipanggil bait. Satu bait terdiri daripada 8 bit, contohnya, 01001011.
Kami telah melihat cara menyimpan nombor, ia menjadi lebih rumit untuk menyimpan huruf.
Abjad Latin kami yang digunakan di banyak negara Barat menggunakan abjad 26 huruf. Tidak bolehkah kita hanya menggunakan jadual rujukan di mana setiap nombor dari 0 hingga 25 sepadan dengan huruf?
Letter | Index | Binary index |
---|---|---|
a | 0 | 00000000 |
b | 1 | 00000001 |
c | 2 | 00000010 |
... | ... | ... |
z | 25 | 00011001 |
Tetapi kami mempunyai lebih banyak aksara daripada hanya huruf kecil. Dalam ayat mudah ini, kami juga mempunyai huruf besar, koma, noktah, dll. Senarai piawai telah dibuat untuk memasukkan semua aksara ini dalam satu bait, yang dikenali sebagai piawaian ASCII.
Pada permulaan pengkomputeran, ASCII sudah memadai untuk kegunaan asas. Tetapi bagaimana jika kita mahu menggunakan watak lain? Bagaimanakah kita menulis dengan abjad Cyrillic (33 huruf)? Inilah sebabnya standard UTF-8 dicipta.
UTF-8 singkatan daripada Unicode (Set Aksara Berkod Universal) Tperubahan Format - 8 bit. Ia ialah sistem pengekodan yang membenarkan komputer menyimpan aksara menggunakan satu atau lebih bait.
Untuk menunjukkan bilangan bait yang digunakan untuk data, bit pertama pengekodan ini digunakan untuk menandakan maklumat ini.
First UTF-8 bits | Number of bytes used |
---|---|
0xxxxxx | 1 |
110xxxxx ... | 2 |
1110xxxx ... ... | 3 |
11110xxx ... ... ... | 4 |
The following bits also have their purpose, but once again, this goes beyond the scope of this article. Just note that, at a minimum, a single bit can be used as a signature in cases where our character fits within the x1111111 = 127 remaining possibilities.
For English, which does not use accents, we can assume that most characters in an article will be encoded this way, and therefore the average number of bytes per character should be close to 1.
For French, which uses accents, cedillas, etc., we assume that this number will be higher.
Finally, for languages with a more extensive alphabet, such as Russian and Japanese, we can expect a higher number of bytes, which provides a starting point for explaining the results obtained earlier.
Now that we understand what the value returned earlier by the Wikipedia API means, we want to calculate the number of bytes per character for each language in order to adjust these results.
To do this, we use a different way of accessing the Wikipedia API that allows us to obtain both the content of the articles and their byte length.
Why not use this API directly?
This API only returns 50 results per request, whereas the previous one returns 500. Therefore, in the same amount of time, we can get 10 times more results this way.
More concretely, if the API calls took 20 minutes with the first method, they would take 3 hours and 20 minutes with this approach.
def getRandomArticlesUrl(locale): return "https://" + locale + ".wikipedia.org/w/api.php?action=query&generator=random&grnlimit=50&grnnamespace=0&prop=revisions&rvprop=content|size&format=json" def getRandomArticles(locale): url = getRandomArticlesUrl(locale) response = requests.get(url) return json.loads(response.content)["query"]["pages"]
Once this data is synthesized, here is an excerpt of what we get:
Language | Bytes per character | ... |
---|---|---|
EN | 1.006978892420735 | |
FR | 1.0243214042939228 | |
RU | 1.5362439940531318 | |
JA | 1.843857157700553 | |
... |
So our intuition was correct: countries with a larger alphabet distort the data because of the way their content is stored.
We also see that French uses more bytes on average to store its characters than English as we previously assumed.
We can now correct the data by changing from a size in bytes to a size in characters which gives us the following graph:
Our hypothesis is therefore confirmed.
On average, English is the language with the most content per page on Wikipedia. It is followed by French, then Russian, Spanish, and German.
The standard deviation (shown with the black bars) is large for this dataset, which means that the content size varies greatly from the shortest to the longest article. Therefore, it is difficult to establish a general truth for all articles, but this trend still seems consistent with my personal experience of Wikipedia.
If you want all the results from this experiment, I have also created this representation, which compares each language with its percentage of additional/less content relative to the others.
Thanks to this, we therefore find our conclusion that on average, an English article on Wikipedia contains 19% more information than its equivalent in French.
The source code for this analysis is available here: https://github.com/jverneaut/wikipedia-analysis/
Atas ialah kandungan terperinci Negara manakah yang mempunyai kandungan paling banyak di Wikipedia?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!