优质高等职业院校建设网站,wordpress代码高亮太慢,企业培训内容,重庆智能网站建设费用“你在字节跳动哪个业务#xff1f;”“古籍数字化。把《论语》《左传》《道德经》这些古籍变成电子版#xff0c;让大家都能免费看。”没错#xff0c;除了你熟悉的那些 App#xff0c;字节跳动还在做一些小众而特别的事情#xff0c;古籍数字化就是其中之一。在字节跳动…“你在字节跳动哪个业务”“古籍数字化。把《论语》《左传》《道德经》这些古籍变成电子版让大家都能免费看。”没错除了你熟悉的那些 App字节跳动还在做一些小众而特别的事情古籍数字化就是其中之一。在字节跳动与北京大学的合作之下识典古籍官网已经上线了 685 部古籍包括双方参与设计与研发的《永乐大典》高清影像数据库你可以登录官网或者在今日头条古籍频道看到它们。可不要以为古籍数字化只是扫描一个电子版放网上它对技术能力要求很高比如1.古籍的排版并非从左到右、行行清晰这样的文本怎么提取出来2.茴香豆的「茴」有四种写法我怎么知道用户要的是哪一种3.我的文言文只有高中语文水平要怎么做人名、地名等命名实体识别我们找字节跳动的程序员们聊了聊发现了一些有趣的解决方案。来看看他们在做的究竟是怎样的工作吧。Q1你为什么会对古籍感兴趣我最早做的是直播业务后来发现古籍项目缺少服务端研发我就过来了。巧的是我的女朋友是中文系毕业的学过一些古籍研究的课程。她的同学们做研究的时候经常抱怨没有好的古籍阅读平台所以当她得知我要做古籍项目的时候还挺开心的。后来上线之后也发现这个产品确实可以帮到很多学生和古籍研究人员。Q2这么说你之前是门外汉那要怎么搞懂古籍呢这个项目是跟北大合作的所以北大的老师会给我们讲古籍相关的知识。别人开会讨论 GMV、研究 DAU我们开会张口《永乐大典》闭口《孙子兵法》。虽然都是研发但画风完全不一样。而且让我非常惊讶的是北大的老师虽然是研究古籍的但是很懂计算机甚至还会写 Python 来进行一些数据处理。Q3古籍数字化这个工作难在哪作为古籍数字化业务的研发我们业务的复杂度很高。比如古籍的格式里大字是正文小字是注解单独一列的大字是标题比现代人写的文章复杂多了因此为了把这些复杂的结构区分开我们定义了一套古籍的元数据协议。最特殊的是古籍里有一些字是现代汉语里没有的——它不是繁体字或者异体字。比如你看《永乐大典卷之三千五百十八【九真】》的开头右侧这些类似「门」字或者像横折钩笔画一样的字现代汉语字库里压根没有我们就用图片的形式嵌入到文本中这样你就会看到文本中不仅有正常的字还有第二行黄色的「注朝门」三个字的注解还有那些黄底的图片我们以 Unicode 特殊字符的形式存储下来。这样我们就把一页一页的古籍变成了结构化的数据可以满足行业通用的 TEIText Encoding Initiative元数据标准能区分章节、标题、内文方便搜索、翻看而且还能进一步编辑整理。现在借助飞书文档提供的 SDK我们已经为合作方北大的专家学者们提供了古籍整理平台便于精校现有古籍、增加新的书目。Q1OCR 是怎么识别出文字的我们一般先通过深度学习中的目标检测技术通过计算机视觉确定图片中的主体在哪里找到文字的位置。然后再识别文字的内容。这就类似于一个分类问题算法自动判断这是一个什么字。Q2这么说它是很成熟的技术了在古籍场景上会有什么难点吗古籍要复杂一些。一般的现代印刷体我们只要找到一行一行的文字就可以识别了。但古籍不同虽然大部分古籍都是竖着读的但也有横着读的所以识别出每个字之后要推理出它的阅读顺序。你看大部分情况下每个字旁边上、下、左、右、左上、左下、右上、右下一圈一共有 8 个字。但识别出来之后计算机只能知道某个特定位置上是某个字并不知道这些零散的字的阅读顺序它不知道应该以怎样的顺序将这些单个字符排列成一段文本。因此每当找到一个字就需要把它和周围的 8 个左右的字分别连接在一起。算法根据语料自动判断每一组连接是否符合阅读顺序符合便是 1不符合便是 0这样就可以推导出识别出的文字的阅读顺序下图红色箭头。这样才可以找出阅读顺序把它变为数字化的文本。上面那些保存完好的规整印刷古籍要容易一些还有一些非常困难的比如下面的佛经它是手写体而非整整齐齐的印刷体排版也比较随意关键还有很多褶皱和残缺保存状况并不好亟待整理。面对这样的古籍模型可能没见过此类特殊排版。我们的方法是如果某种版式很常见、需要用到 AI 来自动化那我们就多用一些数据去训练实在没有数据那就还是自己用文字渲染或者 GAN 模型来生成一些「仿制古籍」去训练 AI。Q3你们需要用到很多 AI 技术有那么多古籍数据可以让你们去训练 AI 吗会有这个问题。有些生僻字出现的太少我们找不到真正的古籍只好让 GAN 模型自己写一个生僻字来当做训练集。另一种比较聪明的方式是如果这个生僻字刚好可以根据偏旁部首拆开比如「毈」字可以拆成「卵」字和「段」字那就拆开再识别好啦。Q4除了古籍字节跳动还有哪些业务场景会用到 OCR很多啊比如当你在抖音搜索视频的时候视频里并没有几个字那搜索引擎是怎么把这些视频找出来的呢因为我们用 OCR 提取了创作者给视频加的字幕。虽然 OCR 是一项历史悠久的技术但也是需要不断创新的。想要把一种技术产品化不光要把文字识别出来还要做信息抽取。视觉信息语义变成一类多模态的技术。Q1来讲一讲古籍的 NLP 怎么做吧不管是给古文分词、分段、加标点还是识别文中的人名、地名、书名、官职名这些实体都是做序列标注。文本就是一个序列首先需要模型自动标注文本中的每一个字就是给它打标签。比如给古文加标点符号。就像人类完成这项工作一样模型会判断这个字的后面是否要加标点。如果应该加标点再判断这里应该是逗号、句号还是问号模型会根据这个字上下文的语义来去做判断。识别人名地名则是命名实体识别 这是一类典型的 NLP 任务。模型会给每个字两个标签一、判断它是不是人名书名这类实体词之内的文字并且处于词语的哪个位置二、判断它是人名还是地名、书名、官职名。上面这些过程是整体完成的主要依赖编码把文字编码成词嵌入来计算每个字属于不同标签的概率。当然在古籍上我们训练编码器就需要用一些标注好的古文作为语料。我们的合作方北大的老师就给了我们很多这方面的资料通过清洗后获得的数据可以帮助我们训练编码器。其实在 NLP 任务中古文和现代文的差距就像中文和英文的差距一样大所以会用到一些跨语言的预训练模型用古文语料在一个中文预训练模型上再进行训练。而且我们内部还有很多现成的工具可以帮助我们更便捷的完成 NLP 任务。Q2除了语料库不一样古文 NLP 还有什么难点么其实这项工作就像教一个模型学会古文给它数据之后结合一些工具方法让模型自己学会给古文分词、加标点、识别里面重要的名词。模型学会之后当然就要让它「写作业」来判断它到底学会了没有。然后问题就来了我不是学汉语言的不会给它「批作业」很判断它到底学得怎么样。对我来说读古文比读英文更难一些只能靠着中学语文学到的那点文言文知识来判断。如果我拿不准就去和其他句读工具的结果对比一下实在不同的话就自己去搜索呗。不得不说这确实帮我巩固了中学语文。Q3在字节跳动NLP 技术还会用在哪些场景其实我们做 NLP 的方向很多除了我在做序列标注还有同学会研究知识图谱、机器翻译之类的技术。具体场景也很多比如会做广告文案的自动生成飞书会议中的自动翻译自动识别电商商品的品牌等这些场景的准确率也都比较高了。我们也在支持火山引擎用 NLP 技术满足各行各业客户的需求。Q1古籍搜索和其他搜索有什么不同古籍搜索主要和其他搜索有两点不同第一个是分词的不同我们定制了一个古籍的分词器用于处理古文中句读的问题第二个是排序的问题由于古文分段都是由后人手工分段段落长度参差不齐长度差别可达到几千倍对于搜索结果的排序有着许多意料之外的影响。公司内部的搜索中台有很多分词、纠错、返回排序之类的功能可以直接调用我们在此之上定制了一些古文的排序策略对排序结果有一定的优化。Q2用的是哪种分词方式呢分词是前面负责 NLP 的同学用 BERT 模型完成的训练它的语料库是一个叫「史藏」的数据集模型学完史藏之后就会给古文分词了。但是我们遇到了一个问题李白有一句诗“天上白玉京十二楼五城”当用户搜索这句诗的时候模型有时候会认为「白玉京」是一个姓「白」名「玉京」的人把它拆成两个词有时候会认为「白玉京」是一个词两种情况搜索结果完全不同用户可能会找不到这首诗。在这种情况下我们就使用单字切词的方式把整句诗都拆成一个一个的字就能保证把这首诗搜出来了。Q3看来古文的语法问题比较难处理识别单字会更简单也没有那么简单。正常你用搜索引擎显示搜索结果的时候你搜的词会被高亮或者变个颜色展示出来。但有一天产品验收的时候就给我提了一个问题搜索结果中的异体字不会被高亮。比如「白」字在古籍中还有两个变体字搜出来正常的「白」字都被高亮了两种异体字却没有被高亮。这种情况很常见比如搜老子的《道德经》你会发现这三个字每个都有很多种写法那我就要去解决这个问题把每个字的每种写法不管是繁体字、异体字还是通假字都归一化就像你搜索大写「ABC」的时候小写的「abc」也可以被搜出来一样。我们搜罗了很多异体字相关资料甚至包括北大老师他们自己总结出来的异体字映射表经过数据清洗之后形成了我们自己的繁简归一化程序。用户输入搜索词的时候我们统一转化成简体字来搜呈现结果的时候再把各种写法都变成高亮。我试了一下这套数据非常齐全比市面上很多主流繁简转换工具都全。Q4你不是专门做搜索的同学也不是专门做 NLP 的同学那你怎么完成这项工作因为公司有其他团队可以合作呀我找到了公司内部搜索相关的中台团队他们为我提供了很大的帮助有什么问题都可以去请教他们。为了完成古籍定制化的服务我也学了很多知识除了学习搜索中台的帮助文档外我还买了一本巨厚的《信息检索导论》自学 努力去了解分词相关的论文资料。之前遇到一个问题用户搜索的那句话的原文总是排在搜索结果的第二而不是第一我就一点点的去看返回结果的日志研究其中每一轮排序的相关细节想尽各种手段研究明白它的打分权重之后才解决了这个问题。总之做这个项目的过程中我学到了很多搜索技术。-The End-看完上面四位程序员同学的经历你会发现这些能够帮助更多人学习、重温历史文化的工作有其自身的价值和魅力。用先进的技术修复古老的记忆这本身就是一件很酷的事儿吧。