http://www.zhihu.com/question/20455165

顾轶灵,百度前端工程师 http://Lync.in

什么是语义化?其实简单说来就是让机器可以读懂内容。

先 随便扯扯。对于当前的 Web 而言,HTML 是联系大多数 Web 资源的纽带,也是内容的载体。在 Web 被刚刚设计出来的时候,Tim Berners-Lee 可能不会想到它现在会达到的规模以及深入到我们生活的那么多方面。也许起初的想法很简单:用来发布 Web 内容和资源的索引,方便人们查看。

但是随着 Web 规模的不断扩大,信息量之大已经不在人肉处理的范围之内了。这个时候人们开始用机器来处理 Web 上发布的各种内容,搜索引擎就诞生了。再后来,人们又设计了各种智能程序来对索引好的内容作各种处理和挖掘。所以让机器能够更好地读懂 Web 上发布的各种内容就变得越来越重要。

其实 HTML 在刚开始设计出来的时候就是带有一定的「语义」的,包括段落、表格、图片、标题等等,但这些更多地只是方便浏览器等 UA 对它们作合适的处理。但逐渐地,机器也要借助 HTML 提供的语义以及自然语言处理的手段来「读懂」它们从网上获取的 HTML 文档,但它们无法读懂例如「红色的文字」或者是深度嵌套的表格布局中内容的含义,因为太多已有的内容都是专门为了可视化的浏览器设计的。面对这种情况,出 现了两种观点:

  1. 我们可以让机器的理解能力越来越接近人类,人能看懂、听懂的东西,机器也能理解;
  2. 我们应该在发布内容的时候,就用机器可读的、被广泛认可的语义信息来描述内容,来降低机器处理 Web 内容的难度(HTML 本身就已经是朝这个方向迈出的一小步了)。

我 画的这个图,意思是说,内容的语义表达能力和 AI 的智能程度决定了机器分析处理 Web 内容能力的高低。上面观点 1 的方向是朝着人类水平的人工智能努力,而观点 2 的方向正是万维网创始人 Tim Berners-Lee 爵士提出的美好愿景:语义网。语义网我就不多说了,简单来说就是让一切内容和包括对关系的描述都成为 Web 上的资源,都可以由唯一的 URI 定义,语义明确、机器可读。显然,两条路都的终极目标都很遥远,第一条路技术上难以实现,而第二条路实施起来障碍太多。

我认为我们当前能 够看得见摸得着的 Web 语义化,其实就是在往第二条路的方向上,迈出的一小步,即对已经有的被广泛认可的 HTML 标准做改进。我们刚开始意识到,我们必须回归内容本身,将内容本身的语义合理地表述出来,再为不同的用户代理设计不同的样式描述,也就是我们说的内容与样 式分离。这样我们在提供内容的时候,首先要做的就是将内容本身进行合理的描述,暂时不用考虑它的最终呈现会是什么样子。

HTML 规范其实一直在往语义化的方向上努力,许多元素、属性在设计的时候,就已经考虑了如何让各种用户代理甚至网络爬虫更好地理解 HTML 文档。HTML5 更是在之前规范的基础上,将所有表现层(presentational)的语义描述都进行了修改或者删除,增加了不少可以表达更丰富语义的元素。为什么这 样的语义元素是有意义的?因为它们被广泛认可。所谓语义本身就是对符号的一种共识,被认可的程度越高、范围越广,人们就越可以依赖它实现各种各样的功能。

HTML5 并非 Web 语义唯一倚仗的规范,除了 W3C 和 WHATWG 外,还有其它的组织在为扩展、标准化 Web 语义做着贡献。只要有浏览器厂商、搜索引擎原意支持,它们的规范一样可以成为通用的基础设施。例如 microformats 社区以及 http://Schema.org 上都有对 HTML 以及 Microdata(http://www.w3.org/TR/html5/microdata.html) 规范的扩展词汇表,Google、Bing、Yahoo! 等搜索引擎以及各个主流浏览器都不同程度地接纳了其中定义的语义扩展,并应用在了生产中。

下面举两个 Google 应用扩展语义的例子。
Google 的搜索结果,可以根据 microformats 的 hCard 语法从抓取的页面识别出人物信息:

也可通过网页内嵌的 Microdata 数据读取作品评分等信息:
关于 HTML5 的各个元素语义的描述,我之前做过一份 slides,上面提到的例子都是那里面的,也可以参考一下:Semantic HTML(http://justineo.github.com/slideshows/semantic-html/)。

【semantic】如何理解 web 语义化?相关推荐

  1. 好程序员web前端分享:如何理解web语义化?

    首先,在理解之前,我们需要先了解,什么是语义化.所谓语义化,简单来说,就是能够更清晰,更直观的理解语言所要表达的含义,所谓词必达意就是这个意思.那么在开发过程中的语义化指的是什么呢?就是能够让除了当事 ...

  2. 如何理解Web语义化

    HTML是内容的载体. css样式只是定义表现,人可以直观的感受到,而机器无法理解. 语义化:词必达意.其目的:在不依赖样式的情况下,文档结构依旧清晰:且人.搜索引擎通过读取HTML元素便能更好地理解 ...

  3. web语义化之SEO和ARIA

    在快速理解web语义化的时候,只知道web语义化有利于SEO和便于屏幕阅读器阅读,但并不知道它是如何有利于SEO和便于阅读器阅读的,带着这个疑问,进行了一番探索总结. SEO ###什么是SEO? S ...

  4. 表现与数据分离、web语义化的理解

    2019独角兽企业重金招聘Python工程师标准>>> 表现与数据分离 什么是表现与数据分离 一是前后端分离,所有数据都是后端通过AJAX发送给前端,前端负责展现页面,后端负责提供数 ...

  5. 谈谈你对web语义化的理解

    学术届将web语义化称为Web3.0的核心,目标是将当前的网页提升为计算机能够"理解"和处理的网页. 核心思想是标注网页对象使其对应本体中的实体,并通过逻辑等手段进行自动推理. 作 ...

  6. Web语义化的理解(H5语义化的作用)

    Web语义化,简而言之,就是用正确的标签做正确的事. HTML语义化让页面内容更加结构化,结构更清晰,便于浏览器,搜索引擎解析.语义化让文档更易读,搜索引擎的爬虫也依赖HTML标记来确定上下文和各个关 ...

  7. 深入浅出的web语义化理解

    写目录 前言 一:什么是语义元素? 二:为什么要语义化? 三:常用的语义元素 四:文档结构标签 五:参考 前言 很多面试官会问: 谈谈你对 HTML5语义化标签的理解. 那么本篇博客可以对你理解HTM ...

  8. 充分了解Web语义化

    前言 对于"web语义化"这个词语,我相信只要是从事前端的人都不陌生,从事前端工作在投简历时都会在招聘需求里面看到这句话:"对web语义化有深刻的理解",当然我 ...

  9. 什么是web语义化,有什么好处

    什么是web语义化 如今互联网都到了web2.0的时代了,HTML语言在不断的进化并发挥着越来越重要的地位:而我们制作网页也从当初的table表格嵌套发展到了 div+css,这是进步的标志.然而,我 ...

最新文章

  1. [转] PuTTY + Xming 远程使用 Linux GUI
  2. linux 系统崩溃完全没有操作空间的系统修复
  3. AI芯片之争白热化的当下,如何设计一款真正适用于终端的AI芯片?
  4. 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法
  5. [云炬创业基础笔记]第十一章创业计划书测试4
  6. Excel日期函数一览表
  7. sml完整形式_411的完整形式是什么?
  8. pandas DataFrame 索引(iloc 与 loc 的区别)
  9. linux 汽车仪表软件架构,基于嵌入式Linux的汽车全数字仪表界面的设计
  10. java 打印 边距_缩小边距 – Java打印
  11. 解决因cocosStudio发布的csb文件过大导致的加载游戏界面卡的问题
  12. Jeecg-Boot前端部署
  13. 树莓派操控SG90舵机
  14. [转载] excel调用python编程-超简单:用Python让Excel飞起
  15. Vue使用快速使用Echarts图标以及使用水滴图
  16. 红黑树删除操作的各种情况分析
  17. 2019.6.14 巴塞尔问题
  18. 极简科普 1:什么是 VOIP
  19. 程序化广告(5):广告投放
  20. 大规模并行处理器编程实战笔记3

热门文章

  1. mysql mha配置idrac远程关机_iDRAC远程管理功能试用_戴尔 PowerEdge R810(Xeon E7520/16GB/3*146GB)_服务器评测与技术-中关村在线...
  2. 蓝桥杯评分标准_新闻 | 人工智能学院创新创业实践中心开展蓝桥杯国赛经验分享会...
  3. Spark基础学习笔记22:Spark RDD案例分析
  4. MyBatis框架学习笔记02:利用MyBatis实现CRUD操作
  5. C++案例:C++版生命游戏
  6. VB讲课笔记09:过程
  7. 【BZOJ2115】Xor,第一次的线性基
  8. 【BZOJ2438】杀人游戏,tarjan缩点+简单的概率计算
  9. 【tyvj1863】【codevs1995】黑魔法师之门,有毒的并查集
  10. python自动备份手机_python实现自动备份windows应用数据