点击上方,选择星标置顶,每天给你送干货

阅读大概需要9分钟

跟随小博主,每天进步一丢丢

作者:段清华(金证优智技术总监)

知乎专栏:AI工程

整理:AINLP公众号

原文链接:

https://zhuanlan.zhihu.com/p/99904529


语义在哪都有

  • Sir Tim Berners-Lee 的语义网(Semantic Web),HTML的article/header标签,爬虫

  • Semantic Mediawiki

  • 用于视频监控、自动驾驶的语义分割(Semantic Segmentation)

  • 对话机器人/聊天机器人的对话管理中的语义帧(Semantic Frame)

  • 前端框架Semantic UI

它们的共同点是什么?是有语义(Semantic)!这个词在

那么什么是语义?

Wiki对语义的一段介绍是这样的:

en.wikipedia.org/wiki/S

Semantics (from Ancient Greek: σημαντικός sēmantikós, "significant")[1][a] is the linguistic and philosophical study of meaning in language, programming languages, formal logics, and semiotics. It is concerned with the relationship between signifiers—like words, phrases, signs, and symbols—and what they stand for in reality, their denotation.

我觉得这个描述还是太形式化了,是无法让人简单理解的,或者这个词汇本身就不好,太泛泛。那么我们分别说上面指的所有语义存在的地方,它们各自的“语义”是什么。

语义网

语义网的语义,最简单的对应就是HTML5新加入的的语义标签:

<article>、<aside>、<details>、<figcaption>、<figure>、<footer>、<header>、<main>、<mark>、<nav>、<p>、<summary>、<time>

从名字可以看出有些是侧边(aside),有些是图表(figure),有些是页脚(footer)。首先,这些标签在浏览器渲染的时候,除了部分标签有特殊方法渲染,基本上都是一视同仁的,或者说人看起来与<div>一致。

那么,它们其实是给机器看的。如果只看文字,机器看不懂你这一段文字是标题还是正文,是时间、还是侧边栏,而人通过写给机器一个标签,也就是你需要把你这段文字的“语义信息”告诉机器,告诉机器这段文字到底是图、标题、正文、摘要还什么其他的东西。你告诉机器了,机器才能更精确的分辨出具体是什么,并且也能更方便的让这些数据信息在不同的机器之间流转(不同站点、不同服务、不同应用),为以后人类知识的流动加速创造条件。

Semantic Mediawiki

Mediawiki就是Wikipedia所使用的wiki程序的名字。由PHP开发,2002年启动,2003年命名。

Semantic MW是Mediawiki的一个插件,也就是给MW增加了语义。

那么它做了什么呢,维基百科的一个作用其实是总结知识,而总结来的知识更好的用途是可以查询。例如你可以维基百科查询中国有多少人口,美国有多少人口,只要分别在中国、美国的页面看就有。那么如果你想知道人口超过1000万的国家都有哪些?只下的呢?2000万呢?

当然你也可以自己或者请人专门去收集、总结这些内容,但是一个明显更好的做法是,假设维基百科是可查询的,我只需要像SQL语句一样“SELECT NAME FROM WIKI WHERE POPULATION > 10,000,000”就可以得到结果,不是更好吗。

怎么做呢,百科本身是有文字的,但是文字没有语义,机器不知道这个数字是什么具体的意思,是人口、面积还是成立时间?。所以我们可以通过加入语义来解决这个问题,假设你正在看“中国”这个页面,假设里面有一句话要得到这些结果其实机器是无法直接解析的,就算解析也需要其他程序、算法辅助(例如使用NLP中的Open Information Extraction技术),但是这些算法本身就收到准确率、后验等影响,那么如果我们在编辑文本的时候,就使用一些成本加入一些语义信息呢?

SMW的写法如下:

中国是一个发展中[[is a::国家]],它的首都是[[has Capital::北京]]。

上面这句话在显示的时候,和之前的自然语言句子是一样的。但是机器通过解析里面的符号,可以得到更多的知识。因为这个页面是在“中国”这个词条下的,所以我们可以得到三元组:

(中国,is a,国家)

(中国,has Capital,北京

这些主谓宾或者主语、属性名、属性值组成的三元组,是更丰富的,机器可读的语义信息,语义知识,可以更方便的搜索。例如我可以简单的查询,国家都有哪些,只要知道有谁 is a 国家就好了。

用于自动驾驶的语义分割(Semantic Segmentation)

语义分割首先是属于计算机视觉(Computer Vision)的一项技术/算法,它的目的是分解图片或视频,给每个部分打上语义标签,例如:

对话机器人/聊天机器人的对话管理中的语义帧(Semantic Frame)

对话系统的语义帧(Semantic Frame)其实有很多叫法,例如Belief,例如Dialog State等等。

它保存的其实是对话的上下文信息,或者说上下文的语义信息。

我们可以假设我们是一个机器人,或者说我们所做的每一步行为必须有推理,那么我们要对话、通过对话完成任务的时候,应该怎么做?

首先我们看我们在对话过程中有什么上下文吧(简单版本,复杂的可能还包括更多轮次的信息、槽值实体等):

  • 上一句机器人(我,即假设我是机器人)表达了什么意图(第一轮可以为空)

  • 当前用户表达了什么意图(第一轮可以为空)

例如总是机器人先发起对话:

机器人:你好(问候时的语义意图,自然语言可能是:你好、hi、hello、吃了没)

用户:我要买票(表达买票的语义意图,自然语言可能是:买票,卖票吗,我要买啦)

机器人:买票需要10元,确认吗?(表达需要用户确认的语义意图)

用户:没问题(表达肯定的语义意图,自然语言可能是:yes/是的/好的/ok啦)

那么我们站在最后一轮,当前的语义信息是:

  • 上一轮机器人表达了:需要用户确认的语义意图

  • 当前用户表达了:肯定的语义意图

如果需要一个逻辑推理,或者计算机程序,那么我们就可以写如下的推理步骤:

如果 (上一轮机器人表达了:需要用户确认的语义意图) 并且 (当前用户表达了:肯定语义意图) {

做什么

}

如果 (上一轮机器人表达了:需要用户确认的语义意图) 并且 (当前用户表达了:否定语义意图) {

做什么

}

也就是自然语言被解析为了意图,意图被记录为了语义上下文,然后最后机器人根据这些语义来决定之后的行为(即进行推理)。

前端框架Semantic UI

在开发Web的过程中,有时候我们需要精确的描述一个东西,比如这个按钮需要20个像素,不能多一个也不能少一个。但是很多时候,我们其实需要的是一个模糊的,语义特征化的描述,例如:这里我需要一个大按钮,那里我需要一个小按钮。

至于这个“大按钮”和“小按钮”其实在不同的浏览器软件、不同浏览器宽度、不同平台(手机、电脑、平板)、不同设备(例如设备分辨率不同),可能所代表的像素大小(实际大小)其实是可以不一样的。

如果要每个程序员必须针对所有可能的组合都要重新定义一遍所谓“大按钮”的不同像素宽高,是成本非常高的。那么如果我们实现把一些常用的信息语义化,让你告诉程序这里需要一个“大按钮”,至于到底多大由程序库按照普遍的开发经验(即/或社区经验)自动调整,是不是更好?

这就是一个将实际精确的东西模糊化、语义化的过程,它的目的是带来更好的通用性、广泛性。

总结

以上我们描述了不同环境下“语义”的作用和用法,但是我依然无法用精炼且简要的文字给语义做一个定义,我们可以认为它就是一个符号,这个符号是用一个稍微模糊的词汇,去代表太多太具体的事物。

  • 例如在对话机器人,我们用“问候语义意图”来代表“你好、hi、你好吗”等多种自然语言语言;

  • 在自动驾驶中,我们用“树”这个语义代表街道路边可能出现的“杨树、柳树、松树”等等不同的树;

  • 在Web编程中,我们用“大按钮”这个语义,来代表不同平台、分辨率、PPI下的足够符合人类感知的不同的大的宽高像素数。


方便交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐阅读:

【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文

【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency  Parsing

【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译

【一分钟论文】Semi-supervised Sequence Learning半监督序列学习

【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing

详解Transition-based Dependency parser基于转移的依存句法解析器

经验 | 初入NLP领域的一些小建议

学术 | 如何写一篇合格的NLP论文

干货 | 那些高产的学者都是怎样工作的?

一个简单有效的联合模型

近年来NLP在法律领域的相关研究工作


让更多的人知道你“在看”

什么是Semantic(语义)?从互联网爬虫、自动驾驶到对话机器人相关推荐

  1. julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域...

    编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身 2018-08-14 14:14 公司 Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车.机器人.3D 打印.精准 ...

  2. 一文读懂自动驾驶中的机器人操作系统ROS

    一.什么是机器人操作系统ROS 1.ROS(Robot Operating System)是一个操作系统 ROS是对机器人的硬件进行了封装,不同的机器人.不同的传感器,在ROS里可以用相同的方式表示( ...

  3. agx 安装ros opencv_【树莓派ROS开源机器人】阿克曼转向机器人,最接近无人自动驾驶的人工智能机器人...

    塔克创新出品的系列入门ROS智能机器人学习开发平台,包括麦克纳姆轮机器人,四轮差速机器人,两轮差速机器人,阿克曼转向小车等平台.可实现SLAM建图导航.自动避障.雷达跟随.视觉巡线.三维建图.手机AP ...

  4. 爬虫+基本的天气对话机器人

    查询天气的对话机器人 基本思路 关于数据的爬取 基础知识 爬取的过程分析 数据可视化 数据的保存 声音处理 录音及其转文字 关于语音播报 代码 基本思路   使用selenium模块来进行谷歌驱动,爬 ...

  5. 自动驾驶车辆在结构化场景中基于HD-Map由粗到精语义定位

    点云PCL免费知识星球,点云论文速读. 文章:Coarse-to-fine Semantic Localization with HD Map for Autonomous Driving in St ...

  6. 【论文速读】城市自动驾驶应用的概率语义地图

    点云PCL免费知识星球,点云论文速读. 标题:Probabilistic Semantic Mapping for Urban Autonomous Driving Applications 作者:D ...

  7. RoadMap:面向自动驾驶的轻型语义地图视觉定位方法

    文章:RoadMap: A Light-Weight Semantic Map for Visual Localization towards Autonomous Driving 作者:Tong Q ...

  8. L2级自动驾驶量产趋势解读

    来源:<国盛计算机组> L2 级自动驾驶离我们比想象的更近.18 年下半年部分 L2 车型已面世,凯迪拉克.吉利.长城.长安.上汽等均已推出了 L2 自动驾驶车辆.国内目前在售2872个车 ...

  9. 【深度】最新万字综述自动驾驶,深度解构核心技术!

    关注:决策智能与机器学习,深耕AI脱水干货 作者 | 于凡 来源 | 知乎专栏-无人驾驶 编辑 |  九三山人 编者按:本文主要讨论ADS(Autonomous Driving System)的主要问 ...

  10. 自动驾驶(五十一)---------ICCV 2019之无人驾驶

    ICCV和CVPR是两大顶尖国际计算机视觉会议,ICCV2019有哪些研究成果呢?ICCV每两年举行一次,今年是在韩国首尔举行,共提交了1076篇论文.下面是关于感知.规划.建图&定位.自动驾 ...

最新文章

  1. 20155117 王震宇 2006-2007-2 《Java程序设计》第三周学习总结
  2. DedeCms如何调用Discuz论坛主题等数据方法总结
  3. 算术运算符举例java_Java的算术运算符简介
  4. ICML论文录取难度逐年上升,New In ML为你特设“名师辅导班”
  5. PL/SQL经典练习
  6. mysql使用cmd命令连接_通过cmd命令连接mysql
  7. Migrate blog from blogcn here
  8. 自己敲的low到爆炸的代码
  9. 机器学习算法总结(六)——EM算法与高斯混合模型
  10. xinetd出马拯救Ftp服务器
  11. linux 的 tar -zxvf出错解决方案
  12. Android 11.0 12.0拨打接听电话默认开启免提
  13. 遗传算法python
  14. mysql数据库基础知识--一分钟让你数据库入门(sql基础语法篇)
  15. 在Windows上安装FFmpeg程序
  16. 爱数私有云盘 AnyShare 部署(二)
  17. 【电脑控制手机屏幕】windows11、10自带投屏功能,三步解决
  18. 手机qq2010java触屏_手机QQ2010(Java触屏)Beta2发布:操作更流畅
  19. 连这些题都不会做好意思说自己懂网络?
  20. webpack随笔04-webpack5压缩jscss

热门文章

  1. Python成员运算符
  2. debugging tools for windows 10下载安装问题
  3. 洛谷P3378 【模板】堆
  4. IntelliJ IDEA安装AngularJS插件
  5. Cortex M3/M4 学习摘要(一)
  6. C# 如何设置 richTextBoxr的边距
  7. JavaScript 函数参数是传值(byVal)还是传址(byRef)?
  8. Android中文URL乱码问题 解决
  9. 20190928 On Java8 第二十三章 注解
  10. java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】...