语义分析

自然语言处理之:语义分析-1

我的梦境 提交于 2020-01-11 01:25:10
语义分析(或者叫意义生成)是 NLP 中的任务之一。它被定义为确定字符或单词序列 意义的过程,其可用于执行语义消歧任务。 本章将包含以下主题: • NER。 • 使用 HMM 的 NER 系统。 • 使用机器学习工具包训练 NER。 • 使用词性标注执行 NER。 • 使用 Wordnet 生成同义词集 id。 • 使用 Wordnet 进行词义消歧。 NLP 指的是在自然语言上执行计算。语义分析是处理自然语言时需要执行的步骤之一。 在分析一个给定的句子时,如果已经构建了句子的句法结构,那么这个句子的语义分析就算完成了。语义解释指的是将意义分配给句子,上下文解释指的是将逻辑形式分配给知识 表示。语义分析的原语或基本单位被称为意义或语义(meaning 或 sense)。ELIZA 是处理语义的工具之一,是由 Joseph Weizenbaum 在六十年代开发出来的,它使用替换和模式匹配技术来分析句子并且为给定的输入提供输出。MARGIE 是由 Robert Schank 在七十年代开 发出来的,它可以使用 11 种原语来表示所有的英语动词。MARGIE 可以解释一个句子的语义并借助原语来表示其语义。MARGIE 之后进一步让位于脚本的概念,脚本应用机制(Script Applier Mechanism,SAM)就是基于 MARGIE 开发出来的,它可以翻译来自不同语言的句子

《基于深度学习的图像语义分割方法综述》阅读理解

隐身守侯 提交于 2020-01-07 18:54:06
近年来,深度学习技术已经广泛应用到图像语义分割领域.主要对 基于深度学习的图像语义分割的经典 方法 与研究现状进行分类、梳理和总结.根据分割特点和处理粒度的不同,将基于深度学习的图像语义分割方法分 为 基于区域分类的图像语义分割方法 和 基于像素分类的图像语义分割方法 .把基于像素分类的图像语义分割方法 进一步细分为 全监督学习图像语义分割方法 和 弱监督学习图像语义分割方法 .对每类方法的代表性算法进行了分 析介绍,并详细总结了每类方法的基本思想和优缺点,系统地阐述了深度学习对图像语义分割领域的贡献.对图像语 义分割相关实验进行了分析对比,并介绍了图像语义分割实验中常用公共数据集和性能评价指标.最后,预测并分析 总结了该领域未来可能的研究方向及相应的发展趋势. 其中,文中提出:CNN RNN GAN 三者是并列的。 ISSbRC 方法取得了一定的分割效果,但也存在图像分割精度不高和分割速度不够快等问题,因此,一些研究者提出直接在像素级别上进行图像语义分割,产生了基于像素分类的图像语义分割方法。从时间上来看bPC比bRC要晚。 ISSbPC 方法利用 DNN 从带有大量标注的图像数据中提取出图像特征和语义信息,再根据这些信息来学习、推理原始图像中像 素的类别,通过端到端训练的方式对每个像素进行分类,以像素分类的方式达到语义分割的目标.这是下一步研究方向。 ENet

【论文翻译】Deep Visual-Semantic Hashing for Cross-Modal Retrieval

笑着哭i 提交于 2020-01-06 17:57:25
Deep Visual-Semantic Hashing for Cross-Modal Retrieval 用于跨模态检索的深度视觉语义哈希 摘要: 由于哈希算法具有较高的存储和检索效率,在大规模多媒体检索中被广泛应用于近似近邻搜索。跨模态哈希能够有效地检索图像以响应文本查询,反之亦然,近年来受到越来越多的关注。现有的大多数跨模态哈希研究工作都没有捕捉到图像的空间依赖性和文本句子的时间动态,从而学习强大的特征表示和跨模态嵌入,从而缓解了不同模式的异质性。摘要提出了一种新的深度视觉语义哈希(DVSH)模型,该模型在端到端深度学习体系结构中生成图像和句子的紧凑哈希码,捕捉视觉数据与自然语言之间的内在跨模态对应关系。DVSH是一种混合的深度架构,它构成了一个用于学习图像和文本句子的联合嵌入空间的可视化语义融合网络,以及两个用于学习哈希函数以生成紧凑二进制代码的特定于模态的哈希网络。我们的架构有效地统一了联合多模态嵌入和交叉模态哈希,它是基于图像上的卷积神经网络、句子上的递归神经网络和一个结构化的最大裕度目标的新组合,该目标将所有东西集成在一起,从而能够学习保持相似性和高质量的哈希码。大量的经验证据表明,我们的DVSH方法在图像-句子数据集的跨模态检索实验中,即标准的IAPR TC-12和大规模的Microsoft COCO中,得到了最先进的结果。 1.介绍 而海量

AAAI 2020 | 清华大学:借助BabelNet构建多语言义原知识库

戏子无情 提交于 2019-12-31 21:57:53
2019-12-31 05:44:06 作者 | 岂凡超(清华大学) 责编 | Camel 本文对清华大学完成的已被 AAAI-20 录用的论文《Towards Building a Multilingual Sememe Knowledge Base: Predicting Sememes for BabelNet Synsets》进行解读。 论文链接:ar xi v.org/pdf/1912.01 79 , 代码和数据:https://github .com /thunlp/BabelNet-Sememe-Prediction 该文旨在 借助 BabelNet 这个多语言百科词典来构建一个多语言的义原知识库,即为多种不同语言的词语标注义原 。该文构建了一个小规模的种子知识库,并且提出了两种使用不同信息的模型——为 BabelNet 中的 synset 自动预测义原进而将小规模种子知识库扩充成最终可用的大规模义原知识库。 一、研究背景 人类语言可以划分成不同层次——句子可以划分成短语或词组,再进一步划分成词。词是最小的可以独立运用的单位,也是自然语言处理最常用的语言单位。但从语义层面讲,词还可以进一步细分为义原——也即语言学家定义的最小的语义单位。 一些语言学家认为所有语言的所有词语的意思都可以用一个有限的义原集合来表达。例如「男孩」这个词的意思可以由「人类」、「男性」、「儿童

java内存模型-锁

▼魔方 西西 提交于 2019-12-29 03:13:52
锁的释放-获取建立的 happens before 关系 锁是 java 并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码: class MonitorExample { int a = 0; public synchronized void writer() { //1 a++; //2 } //3 public synchronized void reader() { //4 int i = a; //5 …… } //6 } 假设线程 A 执行 writer() 方法,随后线程 B 执行 reader() 方法。根据 happens before 规则,这个过程包含的 happens before 关系可以分为两类: 根据程序次序规则,1 happens before 2, 2 happens before 3; 4 happens before 5, 5 happens before 6。 根据监视器锁规则,3 happens before 4。 根据 happens before 的传递性,2 happens before 5。 上述 happens before 关系的图形化表现形式如下: 在上图中,每一个箭头链接的两个节点,代表了一个 happens before 关系

JAVA内存模型5-锁

只谈情不闲聊 提交于 2019-12-29 03:12:52
锁的释放-获取建立的happens before关系 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码: class MonitorExample { int a = 0; public synchronized void writer() { //1 a++; //2 } //3 public synchronized void reader() { //4 int i = a; //5 …… } //6 } View Code   假设线程A执行writer()方法,随后线程B执行reader()方法。根据happens -before规则,这个过程包含的happens -before关系可以分为两类: 根据监视器锁规则,3happens before4。 根据程序次序规则,1happens -before2, 2 happens- before 3; 4 happens- before 5, 5 happens -before 6。 根据happens before 的传递性,2 happens before 5。    上述happens -before关系的图形化表现形式如下:   在上图中,每一个箭头链接的两个节点,代表了一个happens before关系

Java中锁的实现与内存语义

半世苍凉 提交于 2019-12-29 02:35:47
目录 1. 概述 2. 锁的内存语义 3. 锁内存语义的实现 4. 总结 1. 概述 锁在实际使用时只是明白锁限制了并发访问, 但是锁是如何实现并发访问的, 同学们可能不太清楚, 下面这篇文章就来揭开锁的神秘面纱. 2. 锁的内存语义 当线程获取锁时, JMM会把线程对应的本地内存置为无效. 从而使得被监视器保护的临界区的变量必须从主内存中读取. 当线程释放锁时, JMM会把该线程对应的本地内存中的共享变量刷新到主内存中(并不是不释放锁就不刷新到主内存, 只是释放锁时把未刷新到主内存中的数据刷新到主内存). 锁的内存语义与volatile的内存语义 锁获取与volatile读有相同的内存语义. 锁释放与volatile写有相同的内存语义. 内存语义总结 线程A释放一个锁, 实质上是线程A向接下来将要获取这个锁的某个线程发出了(线程A对共享变量所做修改的)消息. 线程B获取一个锁, 实质上是线程B接收了之前某个线程发出的(在释放这个锁之前对共享变量所做修改的)消息. 线程A释放锁, 随后线程B获取这个锁, 这个过程实质上是线程A通过主内存向线程B发送消息. 3. 锁内存语义的实现 下面以ReentrantLock为例, 获取到锁就是把state改为1(不考虑重入), 释放锁时改为0. 而加锁的关键代码就是 protected final boolean

句法分析、语义分析

无人久伴 提交于 2019-12-24 21:33:04
一、依存句法分析 ------- 偏 情感分析(词与词关系) (1)依存句法分析的基本概念   依存语法 (Dependency Parsing, DP) 通过分析语言单位内成分之间的依存关系揭示其 句法结构 。 直观来讲,依存句法分析识别句子中的 “主谓宾”、“定状补” 这些语法成分,并 强调分析词汇之间的关系 。 例如,句子: 国** *** 李** 调***************** ,支持 ********************。 依存句法分析结果(via 哈工大LTP ): 从分析结果中我们可以看到,句子的 核心谓词 为“提出” , 主语 是 李** ,提出的 宾语 是“支持 ** …”,“调*…时”是“提出”的 (时间) 状语 ,“ 李** ” 的 修饰语 是“ 国** ** ”,“支持”的 宾语 是“探索 *** ”。   有了上面的句法分析结果,我们就可以比较容易的看到,“提出者”是“ 李** ”,而不是“上海”或“外高桥”,即使它们都是名词,而且距离“提出”更近。 依存句法分析标注关系 (共14种) 及含义如下: 它将句子分析成一颗依存句法树,描述出各个词语之间的依存关系。 依存句法分析中 句子的核心 是 谓语动词 ,围绕谓语找出其他成分 ; (2) HED ,可以用来 构建情感分析(程度词) 二、 语义依存分析/语义分析 ------ 偏 信息抽取(三元组)

ERNIE: Enhanced Representation through Knowledge Integration(百度)论文翻译

荒凉一梦 提交于 2019-12-22 03:16:17
paper: https://arxiv.org/pdf/1904.09223.pdf code: https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE 文前总结 ERNIE相比于BERT,做出了如下改进: 1.mask策略。BERT只使用了字级别的随机masking,但是ERNIE使用了字、实体、短语三个级别的masking,旨在使模型学习到更多高级的语义。 2.中文异构数据预训练。对异构无监督数据进行预训练的语义编码器可以提高迁移学习性能。百度构建了混合语料库——中文Wikepedia,百度百科,百度新闻和百度贴吧。 3.对话语言模型。DLM任务可帮助ERNIE学习对话中的隐式关系,这也增强了模型学习语义表示的能力。 0.摘要 我们提出了一种新的语言表示模型,该模型称为ERNIE(通过知识集成的增强表示)。 受到BERT掩盖策略的启发(Devlin等人,2018), ERNIE被设计为学习通过知识掩盖策略增强的语言表示,其中包括实体级掩盖和短语级掩盖。 实体级策略可掩盖通常由多个单词组成的实体。 短语级策略掩盖了整个短语,该短语由几个词组成,作为一个概念单元。 实验结果表明,ERNIE优于其他基准方法,在五个自然语言处理任务(包括自然语言推理,语义相似性,命名实体识别,情感分析和问题解答)上取得了最新的最新成果。

java数据结构类--笔记

谁都会走 提交于 2019-12-20 04:12:32
程序的灵魂是算法。提到算法,肯定离不开数据结构。今天就聊一聊java中的和数据结构相关的类。 java.util包 concurrent包 里面是和并发编程相关的类 主要是:原子类–锁--并发的数据结构类【队列,链表,哈希…】 atomic—原子类【 https://blog.csdn.net/boom_man/article/details/78352722 】 locks—锁 Lock锁和同步块的区别 1.同步块只能包含在一个方法内----而lock()和unlock()操作却可以在跨越多个不同的方法使用。 2.同步块不支持公平性,任一个线程都能获取已经被释放的锁,不能指定优先权。但我们却可以使用Lock API指定公平属性从而实现公平性。它能确保等待时间最长的线程优先获取锁。 3.当一个线程不能访问同步块时,它会被阻塞住。而 Lock API提供的有 tryLock()方法,使用该方法,只有在锁不被其他线程持有且可用时,才会真正获取锁。这将极大地降低阻塞时间。 4.那些获取访问同步块的等待线程不能被中断,Lock API提供了一个 lockInterruptbly()方法,当线程正在等待锁时,该方法可以用于中断该线程。’ 接口 ReadWriteLock读写锁 ReadWriteLock维护一对关联锁,一个用于只读操作,一个用于写入。只要没有写入程序