哪个国家的维基百科内容最多?

介绍

当我在互联网上搜索某些内容时,我经常发现英语内容比法语内容全面得多。

虽然考虑到世界上讲英语的人数与讲法语的人数相比(大约多 4 到 5 倍),这似乎是显而易见的,但我想测试这个假设并对其进行量化。

tldr:平均而言,维基百科上的英文文章比法文文章包含的信息多 19%

此分析的源代码可在此处获取:https://github.com/jverneaut/wikipedia-analysis/

协议

维基百科是全球网络上最大的优质内容来源之一。

在撰写本文时,英文版拥有超过 6,700,000 篇独特文章,而法文版只有 2,500,000 篇。我们将使用这个语料库作为我们学习的基础。

使用蒙特卡罗方法,我们将从维基百科中针对每种语言随机抽取文章,并计算该语料库的平均字符长度。有了足够多的样本,我们应该得到接近现实的结果。

由于wikimedia api没有提供获取文章字符长度的方法,我们将通过以下方式获取此信息:

通过维基媒体 api 检索大量文章样本的字节大小。使用蒙特卡罗方法从一小部分文章样本中估计每个字符的字节数。使用步骤 2 中获得的每字符字节估计值检索大量文章的字符数。

由于我们使用蒙特卡罗方法来估计每个字符的字节数,因此我们需要尽可能多的文章数来尽量减少与实际数量的偏差。

维基媒体 api 文档指定了这些限制:

每个请求的随机文章不超过 500 篇。每个请求的文章内容不得超过 50 条。

考虑到这些限制,并作为精度和查询执行时间之间的折衷,我选择对每种语言采样 100,000 篇文章作为文章字节长度的参考,并选择 500 篇文章来估计每种语言每个字符的字节数。

局限性

目前,当要求提供文章内容时,维基媒体 api 会返回其自己的维基文本格式。这种格式不是纯文本,更接近 html。由于维基媒体上的所有语言都使用相同的格式,我估计我们可以依赖它而不影响我们最终结果的方向。

但是,某些语言比其他语言更冗长。例如,在法语中,我们说“comment ça va?” (15 个字符)与“你好吗?”相比(12 个字符)英文。这项研究没有解释这种现象。如果我们想解决这个问题,我们可以比较同一本书语料库的不同翻译,以建立语言的“密度”校正变量。在我的研究中,我没有找到任何数据提供适用于每种语言的比率。

不过,我确实发现了一篇非常有趣的论文,它比较了 17 种不同语言的信息密度以及它们的说话速度。其结论是,最“高效”的语言比效率最低的语言说得更慢,导致口头信息传输速率始终保持在每秒 39 位左右。

有趣。

获取每种语言文章的平均字节长度

如协议中所述,我们将使用维基百科 api 来检索给定语言的 500 篇随机文章。

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"]

这会给我们一个类似 { “id1”: { “title”: “…”, “length”: 1234 }, “id2”: { “title”: “…”, “length “: 5678 }, … } 我们可以用它来检索大量文章的大小(以字节为单位)。

然后对这些数据进行重新处理以获得下表:

language average length …

en8865.33259fr7566.10867ru10923.87673ja 9865.59485…

乍一看,英语文章的字节长度似乎比法语文章的字节长度要大。同样,俄语的字节长度比任何其他语言的字节长度都大。

哪个国家的维基百科内容最多?

我们应该停止这个结论吗?不完全是。由于维基百科报告的长度是以字节为单位的长度,因此我们需要更深入地研究字符的编码方式以理解这些初始结果。

字母如何编码:utf-8 简介

什么是字节?

与你我不同,计算机没有字母的概念,更不用说字母表了。对于它来说,一切都被表示为 0 和 1 的序列。

在我们的十进制系统中,我们从 0 到 1,然后从 1 到 2,依此类推,直到 10。

对于使用二进制系统的计算机,我们从 0 到 1,然后从 1 到 10,然后从 10 到 11、100,等等。

这里有一个比较表,可以让您更清楚地了解:

decimal binary

001121031141005101611071118100091001101010…

学习二进制远远超出了本文的范围,但是您可以看到,随着数字变大,其二进制表示形式比十进制表示形式“更宽”。

由于计算机需要区分数字,因此它将它们存储在称为字节的 8 个单位的小数据包中。一个字节由 8 位组成,例如 01001011。

utf-8如何存储字符

我们已经了解了如何存储数字,存储字母会稍微复杂一些。

我们在许多西方国家使用的拉丁字母使用 26 个字母的字母表。难道我们不能使用一个参考表,其中从 0 到 25 的每个数字对应一个字母吗?

letter index binary index

a000000000b100000001c200000010………z2500011001

但是我们的字符不仅仅是小写字母。在这个简单的句子中,我们还包含大写字母、逗号、句点等。创建了一个标准化列表,将所有这些字符包含在一个字节中,称为 ascii 标准。

在计算的初期,ascii 足以满足基本用途。但是如果我们想使用其他字符怎么办?我们如何用西里尔字母(33 个字母)书写?这就是创建 utf-8 标准的原因。

utf-8 代表 unicode(通用编码字符集)t变换 format – 8 位。它是一种编码系统,允许计算机使用一个或多个字节存储字符。

为了指示数据使用了多少字节,该编码的前几位用于表示此信息。

first utf-8 bits number of bytes used

0xxxxxx1110xxxxx …21110xxxx … …311110xxx … … …4

以下内容也有其目的,但这再次超出了本文的范围。请注意,在我们的角色符合 x1111111 = 127 剩余可能性的情况下,至少可以使用单个位作为签名。

对于不使用重音符号的英语,我们可以假设文章中的大多数字符都会以这种方式编码,因此每个字符的平均字节数应该接近 1。

对于使用重音、变音符号等的法语,我们假设这个数字会更高。

最后,对于具有更广泛字母表的语言,例如俄语和日语,我们可以预期更高的字节数,这为解释之前获得的结果提供了一个起点。

获取每种语言文章的平均字符长度(以字节为单位)

现在我们了解了 wikipedia api 之前返回的值的含义,我们想要计算每种语言的每个字符的字节数,以便调整这些结果。

为此,我们使用不同的方式访问维基百科 api,该方式允许我们获取文章的内容及其字节长度。

为什么不直接使用这个api呢?

此 api 每次请求仅返回 50 个结果,而前一个返回 500 个结果。因此,在相同的时间内,我们可以通过这种方式获得 10 倍的结果。

更具体地说,如果使用第一种方法 api 调用需要 20 分钟,那么使用这种方法将需要 3 小时 20 分钟。

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"]

综合这些数据后,以下是我们得到的摘录:

language bytes per character …

en1.006978892420735fr1.0243214042939228ru1.5362439940531318ja1.843857157700553…

所以我们的直觉是正确的:字母表较大的国家/地区会因其内容存储方式而扭曲数据。

我们还发现,正如我们之前假设的那样,法语平均使用比英语更多的字节来存储其字符。

结果

我们现在可以通过从以字节为单位的大小更改为以字符为单位的大小来更正数据,这给我们提供了下图:

哪个国家的维基百科内容最多?

我们的假设因此得到证实。

平均而言,英语是维基百科上每页内容最多的语言。接下来是法语,然后是俄语、西班牙语和德语。

此数据集的标准差(以黑条显示)很大,这意味着从最短的文章到最长的文章内容大小变化很大。因此,很难为所有文章建立一个普遍的真理,但这种趋势似乎仍然符合我个人对维基百科的体验。

如果您想要此实验的所有结果,我还创建了此表示形式,它将每种语言及其相对于其他语言的额外/较少内容的百分比进行比较。

哪个国家的维基百科内容最多?

因此,我们得出的结论是,维基百科上的英文文章平均比法语文章包含的信息多 19%。

此分析的源代码可在此处获取:https://github.com/jverneaut/wikipedia-analysis/

以上就是哪个国家的维基百科内容最多?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 12:56:16
下一篇 2025年12月13日 12:56:21

相关推荐

  • HTML、CSS 和 JavaScript 中的简单侧边栏菜单

    构建一个简单的侧边栏菜单是一个很好的主意,它可以为您的网站添加有价值的功能和令人惊叹的外观。 侧边栏菜单对于客户找到不同项目的方式很有用,而不会让他们觉得自己有太多选择,从而创造了简单性和秩序。 今天,我将分享一个简单的 HTML、CSS 和 JavaScript 源代码来创建一个简单的侧边栏菜单。…

    2025年12月24日
    200
  • 前端代码辅助工具:如何选择最可靠的AI工具?

    前端代码辅助工具:可靠性探讨 对于前端工程师来说,在HTML、CSS和JavaScript开发中借助AI工具是司空见惯的事情。然而,并非所有工具都能提供同等的可靠性。 个性化需求 关于哪个AI工具最可靠,这个问题没有一刀切的答案。每个人的使用习惯和项目需求各不相同。以下是一些影响选择的重要因素: 立…

    2025年12月24日
    300
  • 带有 HTML、CSS 和 JavaScript 工具提示的响应式侧边导航栏

    响应式侧边导航栏不仅有助于改善网站的导航,还可以解决整齐放置链接的问题,从而增强用户体验。通过使用工具提示,可以让用户了解每个链接的功能,包括设计紧凑的情况。 在本教程中,我将解释使用 html、css、javascript 创建带有工具提示的响应式侧栏导航的完整代码。 对于那些一直想要一个干净、简…

    2025年12月24日
    000
  • 布局 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在这里查看视觉效果: 固定导航 – 布局 – codesandbox两列 – 布局 – codesandbox三列 – 布局 – codesandbox圣杯 &#8…

    2025年12月24日
    000
  • 隐藏元素 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看隐藏元素的视觉效果 – codesandbox 隐藏元素 hiding elements hiding elements hiding elements hiding elements hiding element…

    2025年12月24日
    400
  • 居中 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看垂直中心 – codesandbox 和水平中心的视觉效果。 通过 css 居中 垂直居中 centering centering centering centering centering centering立即…

    2025年12月24日 好文分享
    300
  • 如何在 Laravel 框架中轻松集成微信支付和支付宝支付?

    如何用 laravel 框架集成微信支付和支付宝支付 问题:如何在 laravel 框架中集成微信支付和支付宝支付? 回答: 建议使用 easywechat 的 laravel 版,easywechat 是一个由腾讯工程师开发的高质量微信开放平台 sdk,已被广泛地应用于许多 laravel 项目中…

    2025年12月24日
    000
  • 如何在移动端实现子 div 在父 div 内任意滑动查看?

    如何在移动端中实现让子 div 在父 div 内任意滑动查看 在移动端开发中,有时我们需要让子 div 在父 div 内任意滑动查看。然而,使用滚动条无法实现负值移动,因此需要采用其他方法。 解决方案: 使用绝对布局(absolute)或相对布局(relative):将子 div 设置为绝对或相对定…

    2025年12月24日
    000
  • 移动端嵌套 DIV 中子 DIV 如何水平滑动?

    移动端嵌套 DIV 中子 DIV 滑动 在移动端开发中,遇到这样的问题:当子 DIV 的高度小于父 DIV 时,无法在父 DIV 中水平滚动子 DIV。 无限画布 要实现子 DIV 在父 DIV 中任意滑动,需要创建一个无限画布。使用滚动无法达到负值,因此需要使用其他方法。 相对定位 一种方法是将子…

    2025年12月24日
    000
  • 移动端项目中,如何消除rem字体大小计算带来的CSS扭曲?

    移动端项目中消除rem字体大小计算带来的css扭曲 在移动端项目中,使用rem计算根节点字体大小可以实现自适应布局。但是,此方法可能会导致页面打开时出现css扭曲,这是因为页面内容在根节点字体大小赋值后重新渲染造成的。 解决方案: 要避免这种情况,将计算根节点字体大小的js脚本移动到页面的最前面,即…

    2025年12月24日
    000
  • Nuxt 移动端项目中 rem 计算导致 CSS 变形,如何解决?

    Nuxt 移动端项目中解决 rem 计算导致 CSS 变形 在 Nuxt 移动端项目中使用 rem 计算根节点字体大小时,可能会遇到一个问题:页面内容在字体大小发生变化时会重绘,导致 CSS 变形。 解决方案: 可将计算根节点字体大小的 JS 代码块置于页面最前端的 标签内,确保在其他资源加载之前执…

    2025年12月24日
    200
  • Nuxt 移动端项目使用 rem 计算字体大小导致页面变形,如何解决?

    rem 计算导致移动端页面变形的解决方法 在 nuxt 移动端项目中使用 rem 计算根节点字体大小时,页面会发生内容重绘,导致页面打开时出现样式变形。如何避免这种现象? 解决方案: 移动根节点字体大小计算代码到页面顶部,即 head 中。 原理: flexível.js 也遇到了类似问题,它的解决…

    2025年12月24日
    000
  • 形状 – CSS 挑战

    您可以在 github 仓库中找到这篇文章中的所有代码。 您可以在此处查看 codesandbox 的视觉效果。 通过css绘制各种形状 如何在 css 中绘制正方形、梯形、三角形、异形三角形、扇形、圆形、半圆、固定宽高比、0.5px 线? shapes 0.5px line .square { w…

    2025年12月24日
    000
  • 有哪些美观的开源数字大屏驾驶舱框架?

    开源数字大屏驾驶舱框架推荐 问题:有哪些美观的开源数字大屏驾驶舱框架? 答案: 资源包 [弗若恩智能大屏驾驶舱开发资源包](https://www.fanruan.com/resource/152) 软件 [弗若恩报表 – 数字大屏可视化组件](https://www.fanruan.c…

    2025年12月24日
    000
  • 网站底部如何实现飘彩带效果?

    网站底部飘彩带效果的 js 库实现 许多网站都会在特殊节日或活动中添加一些趣味性的视觉效果,例如点击按钮后散发的五彩缤纷的彩带。对于一个特定的网站来说,其飘彩带效果的实现方式可能有以下几个方面: 以 https://dub.sh/ 网站为例,它底部按钮点击后的彩带效果是由 javascript 库实…

    2025年12月24日
    000
  • 网站彩带效果背后是哪个JS库?

    网站彩带效果背后是哪个js库? 当你访问某些网站时,点击按钮后,屏幕上会飘出五颜六色的彩带,营造出庆祝的氛围。这些效果是通过使用javascript库实现的。 问题: 哪个javascript库能够实现网站上点击按钮散发彩带的效果? 答案: 根据给定网站的源代码分析: 可以发现,该网站使用了以下js…

    好文分享 2025年12月24日
    100
  • 产品预览卡项目

    这个项目最初是来自 Frontend Mentor 的挑战,旨在使用 HTML 和 CSS 创建响应式产品预览卡。最初的任务是设计一张具有视觉吸引力和功能性的产品卡,能够无缝适应各种屏幕尺寸。这涉及使用 CSS 媒体查询来确保布局在不同设备上保持一致且用户友好。产品卡包含产品图像、标签、标题、描述和…

    2025年12月24日
    100
  • 如何利用 echarts-gl 绘制带发光的 3D 图表?

    如何绘制带发光的 3d 图表,类似于 echarts 中的示例? 为了实现类似的 3d 图表效果,需要引入 echarts-gl 库:https://github.com/ecomfe/echarts-gl。 echarts-gl 专用于在 webgl 环境中渲染 3d 图形。它提供了各种 3d 图…

    2025年12月24日
    000
  • 如何在 Element UI 的 el-rate 组件中实现 5 颗星 5 分制与百分制之间的转换?

    如何在el-rate中将5颗星5分制的分值显示为5颗星百分制? 要实现该效果,只需使用 el-rate 组件的 allow-half 属性。在设置 allow-half 属性后,获得的结果乘以 20 即可得到0-100之间的百分制分数。如下所示: score = score * 20; 动态显示鼠标…

    2025年12月24日
    100
  • CSS 最佳实践:后端程序员重温 CSS 时常见的三个疑问?

    CSS 最佳实践:提升代码质量 作为后端程序员,在重温 CSS/HTML 时,你可能会遇到一些关于最佳实践的问题。以下将解答三个常见问题,帮助你编写更规范、清晰的 CSS 代码。 1. margin 设置策略 当相邻元素都设置了 margin 时,通常情况下应为上一个元素设置 margin-bott…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信