我是如何将2千万StackOverflow问答翻译成中文的?

news2024/12/26 22:30:01

大家好!大家觉得如果需要翻译SO上全部问答可以怎么做呢?我讲讲我是怎么的,大家看看做得怎么样。

自我介绍

    我是一名有10年开发经验的老程序员。做过大数据,做过Java程序员,也做过算法工程师,目前是一名大厂程序员。对搜索引擎与推荐特别感兴趣,即通过搜索关键字能找到想要的知识与答案是一种快感。我接下来讲讲我是怎么把2千万的SO问答翻译成中文的。

事情由来

    大家都知道在网络上搜索技术问题的时候,很多专业一些的问题只有SO上有答案。由于SO是国外网站,国内打开特别慢,而且打开后基本都是英文。我的体感:英文阅读起来虽也不难,但是比看中文还是会多花些时间,偶尔遇到陌生的单词,还得找谷歌翻译(谷歌翻译最近来也挂了)。一来二去,至少花5-10分钟才能解决好问题。
    基于这个痛点,我想到了把SO上的问答翻译成中文。在我做这件事的时候,是在2019年,那个时候其实已经有很多人在做了。网络上对机翻这件事情也非常反感,但机翻也是无奈之举。
    为什么这么说呢?一个翻译一天正常翻译速度是3000个单词,SO的问答一篇大约300-2000个单词,假设取最小单词数300。1个人每天翻译不停歇,需要5479年才能翻译完成!所以这么大工作量不可能找人快速地完成它。
    纯粹的机翻会引起大部分人的反感,所以需要做一些优化,首先是让我自己觉得能接受,再推荐给大家使用。

已解决的优化问题

优化一:翻译完后是否可以对照英文原文查看

    这是目前其它网站没有做到的,很多网站只是给了一个翻译的结果,阅读者看着看着会莫名其妙。我实现了按句翻译(非段落翻译),在页面上鼠标放在中文句子上后会给出英文原文提示,防止用户在特定语句上产生疑惑。
例如:

优化二:翻译完后是否有很难接受的直译单词

    例如:Spring翻译成了春天,Pandas翻译成了熊猫等

    解决方法其实很简单,翻译前将开发相关的单词先替换再进入翻译器。

优化前

优化后

优化三:支持相关推荐

    当前支持通过标题相似,找到相关的推荐内容,但似乎效果一般。

优化四:搜索全局搜索

    已支持类似SO官网的方式的全局搜索,支持中文或英文搜索,英文搜索会更加准确。支持排序,问题过滤,标签过滤等,还有优化空间。

待解决的优化问题

  1. 支持全文搜索

    由于索引过大导致性能问题,所以当前只做了标题的索引,但可能需要增加服务器费用(预算2万+);

  2. 支持异常堆栈相关推荐

    当用户看到某个问题后,发现这个问题并没有很符合预期的回答,这个时候给用户推荐有相同堆栈报错的问答。可能的实现方式:提取堆栈信息,通过距离等的方式判断问题的相似性。

  3. 支持堆栈内容搜索问题

    类似上面的相关推荐,当用户主动输入一段堆栈信息时,找到最相似报错的问答。

  4. 大数据分析统计

    统计用户近期感兴趣的问题,标签,最火回答,最火用户,近期什么技术活跃度最高等,提供一个大数据看板。

  5. 提供TroubleShooting的功能

    基于大数据或分析方法,帮用户快速找到问题的答案,节省用户时间。

  6. 基于智能推荐找到用户感兴趣的问答

    基于用户的访问频次记录用户的标签置信兴趣,在页面提供用户感兴趣的活跃问答,拉近国内程序员与国外程序员的距离。

后续也会定期同步这些优化点的进展。

技术架构

说了这么多网站的技术架构是怎么样的呢?直接上图,No Pic,No BB。

架构图

服务器

基本上算是用了最低的配置,发挥了最高的性能

如果想知道更详细的架构设计,可以给我留言,后续我也会发文介绍。

写在最后

如果有同学不知道网址的请收藏一下:https://stackoom.com。如果想找大厂工作的,也可以加微信:wxxdoe,帮您内推。另外,您想要什么技术学习资料,可以给我留言,后续会有些宠粉的福利。^_^

最后,如果大家觉得好用,欢迎给我留言,提出优化建议,请多多支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security的项目中集成JWT Token令牌安全访问后台API

Spring Security的项目中集成JWT Token令牌安全访问后台API引言JWT 简介jwt token 的适用场景jwt 的结构完整jwtjwt 的使用方式客户端获取jwt令牌访问受保护资源的具体流程Spring Security 安全框架下使用jwt token新建一个spring boot项目加入spring security 和 jwt 相关依赖…

五、传输层(二)UDP

目录 2.1 UDP概述 2.2 UDP的首部格式 2.3 UDP校验 2.1 UDP概述 UDP无须建立连接。因此不会引入建立连接的时延。 UDP为无连接状态。因此当服务器使用UDP时,一般能支持更多的活动客户机。 UDP分组首部仅有8B的开销,而TCP有20B的首部开销。 应用层…

后端思维篇:如何抽个上报模板

前言 大家好,我是田螺。 我的后端思维专栏好久没更新啦,本文是后端思维专栏的第六篇哈。我的整个后端思维专栏都是跟日常工作相关的哈。 最近刚好优化了安全上报这块的代码,抽了一个基础模板,看起来挺优雅的。所以今天手把手教…

〖产品思维训练白宝书 - 产品思维认知篇⑤〗- 学习 [产品思维] 需要做哪些准备?

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

php wampserver的使用配置

php wampserver的使用配置wampserver1.php时区配置2.修改apache服务器端口号3.设置起始页4.设置web服务器主目录5.设置虚拟目录wampserver WampServer是Windows Apache Mysql PHP集成安装环境,在Windows操作系统下的apache、php和mysql的服务器软件。 1.php时区配…

RabbitMQ 第二天 高级 7 RabbitMQ 高级特性 7.2 Consumer Ack

RabbitMQ 【黑马程序员RabbitMQ全套教程,rabbitmq消息中间件到实战】 文章目录RabbitMQ第二天 高级7 RabbitMQ 高级特性7.2 Consumer Ack7.2.1 Consumer Ack7.2.2 Consumer Ack 小结7.2.3 消息可靠性总结第二天 高级 7 RabbitMQ 高级特性 7.2 Consumer Ack 7.2.…

12.25日周报

周报 代码行数: 周一 704 周二 481 周三 571 周四 589 周五 595 周六 520 周日 537 遇到的问题: 没用过的方法AtomicInteger Insert Proto currentTimeMillis RequestParam BufferedReader UriComponents RestTemplate OSS 不清楚在…

公众号开发(2) —— 盛派.net SDK + vue搭建微信公众号网页开发框架

需求:通过微信公众号菜单跳转到手机端网页,跳转后通过微信授权登录获取微信公众号用户的OpenId(用户关注公众号后,用户在公众号的唯一凭证),通过OpenId和后台数据库用户信息绑定起来并实现一些业务逻辑。 技…

基于51单片机的电子闹钟设计

使用的单片机是 STC89C52 此设计可以 年 月 日 时 分 秒显示和闹钟功能 能通过8个按键自由调整 时 分 秒 闹钟响铃时间 带复位按键,要是模块抽风,摁复位按键即可! 使用 LCD16020A 屏幕显示 屏幕电路设有电位器&#xff…

Tableau可视化设计案例-07 多边形地图和背景图地图

Tableau可视化设计案例 本文是Tableau的案例,为B站视频的笔记,B站视频 参考:https://www.bilibili.com/video/BV1E4411B7ef 参考:https://blog.csdn.net/lianjiabin/category_9826951.html 数据下载地址为:https://do…

Java项目:springboot药品管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目属于前后端分离的项目,分为两个角色药品管理员和取药处人员 药品管理员: 登录、退出、药品信息录入、药厂信息录入…

Huawei Certified ICT Professional work (一)

文章目录一, 要求二,搭建拓扑图三,配置接口IP和环回IP四,进行RIP版本的配置并且宣告网段五,实现不同版本的连通,在交界处配置对端的版本号六,R3访问R7的环回地址走R5,改变R4的度量值…

Java项目:SpringBoot+MyBatis送水公司管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 这个项目是一个基于SpringBootMyBatis的送水公司管理系统 管理员权限包括: 客户管理 送水工管理 送水历史管理 计算工资 统计送水数…

79页智慧应急指挥平台1 6 N体系建设方案

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除! 完整资料领取见文末,部分资料内容: 行业专网解决…

ARM_SMMU_下

SMMU驱动代码分析 本文主要分析linux kernel中SMMUv3的代码(drivers/iommu/arm-smmu-v3.c) linux kernel版本是linux 5.7, 体系结构是aarch64 SMMU的作用是把CPU提交给设备的VA地址,直接作为设备发出的地址,变成正确的物理地址,访问到物理内…

五、传输层(一)传输层的功能

目录 1.1传输层的主要功能 1.2传输层的寻址与端口 1.2.1端口的作用 1.2.2端口号 1.2.3套接字 1.3无连接服务与面向连接服务 1.1传输层的主要功能 物理层、数据链路层和网络层共同解决了主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。然而在…

【iOS】CAlayer的认识与使用

什么是CALayer CALayer是UIView里的一个图层,其主要功能是负责显示视图与动画。CALayer和UIView 功能是一致的、 不过因为其 更加底层 所以 CALayer 有一些接口、 UIView 里面没有。 CALayer与UIView UIView:用于管理视图的容器。每次创建UIView对象时…

当我阳了之后是如何用Python来自动买药的

人生苦短,我用Python序言准备工作代码实战序言 哈喽兄弟们,我是郑再阳,马上要成杨过了! 读者:在下羊了个羊! 最近总是听说哪里哪里阳了,哪个公司又团灭了,emmm~ 于是乎看了几天后…

【exgcd】扩展欧几里得

主要介绍扩展欧几里的和总结一些常用性质 首先介绍裴蜀定理 对于任意整数a,b,存在一对整数x,y 满足 axbygcd(a,b) 即存在x0,y0使得ax0by0gcd(a,b) 扩展欧几里得可以求出x0,y0 从而当axbyc 可以求出其通解 设dgcd(a,b) 显然当c%d!0时无整数解 通解可以表示为 x(c/d)x0k…

Java项目:springboot访客管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 springboot搭建的访客管理系统,针对高端基地做严格把控来访人员信息管理,用户后端可以设置多个管理员帐号,给…