Chris Zhang


  • 首页

  • 标签

  • 分类

  • 归档

如何猜出女朋友话中的含义?——关于事件抽取(Event Extraction)

发表时间 2019-01-24   |   更新时间 2019-02-12 | 分类 NLP

写完以后发现 注释的形式 还有待改进,希望大家暂时理解一下。

1.1 Event Extraction after 2015

Overview

在2015年以及之前,对事件抽取(Event Extraction, EE)的工作思路主要聚焦于模式匹配或者统计机器学习方法博客。基于模式匹配的方法在特定领域能取得较好的性能,但是移植性较差;基于统计学习的方法通常能有较好的移植性,但是严重依赖于已标注的数据。从2015年开始,有研究者尝试使用CNN/RNN来提取Event Mention中的语义,比较典型的有DMCNN2015.1与JRNN2016.2等模型,其评估结果比早期的一些Structure-Based Method有显著提升,加之Deep Learning的逐渐升温,可以看出大家在这段时间开始普遍转向使用Representation-Based Method来看待EE问题。使用DNN来捕捉语义的另一个好处是使用了蕴含特征更加丰富的词向量,因此事件抽取的结果不再很大程度上依赖于人工定义的局部/全局特征。

阅读全文 »

Sequence Models(2): NLP & Word Embedding

发表时间 2019-01-14   |   更新时间 2019-02-28 | 分类 NLP

Sequence Models的第二部分,主要讲了 自然语言处理 与 词嵌入 (Word Embedding) 的内容(其实只讲了Word Embedding)。

因为 最近有个面试 我在忙着进行 虽然可能并没有什么用但是准备这个行为本身能令人心安所以在努力进行所谓的 面试前的准备,所以这部分内容就只是简单地描述一下。

1. Word Representation

对词进行向量表示,也就是对每个单词进行特征提取。词的每一个维度可以看做是 一个不好直接解释的特征 。

什么叫 好解释 的特征呢,比如说,我手动定义了两个维度:性别,高贵。现在有两个词 ‘皇后’ 与 ‘农妇’,那么很显然能推理出:一个好的词向量表示,两者在 性别 特征上的取值一定是相似的,但是在 高贵 特征上的取值前者会大于后者。

阅读全文 »

Sequence Models(1): 循环序列模型

发表时间 2019-01-07   |   更新时间 2019-01-11 | 分类 NLP

本文是 Andrew Ng深度学习相关视频:Sequence Models 中的笔记 。整个课程只有三周的课程量,向学习者简要介绍了序列模型的产生、应用与Attention的机制。

因为内容不深,以 Tips 或 Q&A 的形式给出整个课程的内容。

让我们从 第一周:循环序列模型 开始。

阅读全文 »

重修决策树:信息增益与Gini系数

发表时间 2019-01-06   |   更新时间 2019-01-06 | 分类 数据结构

重修系列的 第二篇文章 说的好像我系统学过决策树一样

最近被Random Forest,Adaboost,ID3,C4.5,CART一系列决策森林包围了,正巧在复习 数据仓库 ,把这一系列的内容再串联一遍。

我是决策树

决策树本质上是一个 贪心方法 ,虽然从理论上说我们能够构造一棵最优决策树,但是时间与算力开销实在很大,所以实际上我们使用的是 Hunt's 算法来执行贪心的选择过程。简单来说就是:假设我手上有一个评估分裂后的节点集好坏的一个 标准 (这个标准就是下面要说的信息增益与Gini系数),我每次只考察使当前节点达到最优分裂的属性,而不从全局角度来考虑。

根据标准的不同,决策树又分为 ID3, C4.5, CART 三大类,分别使用的考察标准是 信息增益、信息增益率、Gini系数。

阅读全文 »

Leetcode 解题笔记索引

发表时间 2018-12-27   |   更新时间 2018-12-28 | 分类 Leetcode

Coding is fun 🎉🎉🎉

Leetcode: 89-100解题笔记
Leetcode: 101-110解题笔记
Leetcode: 111-120解题笔记
Leetcode: 121-130解题笔记
Leetcode: 131-140解题笔记

Crash Paper: Attention Is All You Need

发表时间 2018-12-26   |   更新时间 2018-12-30 | 分类 NLP

Attention Is All You Need

1. 预备知识

1.1 Encoder/Decoder

序列模型由Encoder与Decoder两部分构成,简单来说,Encoder对input进行编码,而Decoder对编码结果进行解码,解码的结果就是整个序列模型的输出。借用Andrew Ng课件中的截图来进行说明:

Encoder的每一个单元会根据前一个hidden state以及当前的input来计算当前的hidden state,并将其传到下一个单元中去。而Decoder对于传入的单元进行解码,来找到最合适的一个输出。注意每个Decoder单元只会输出一个output symbol。

阅读全文 »

Kick Start 2018-Practice Round

发表时间 2018-12-19 | 分类 Kick Start

Google的Competitions with Google上有三个类型的练习:

  • Hash Code: 应该是一个组队编程训练,看起来比较偏工程向,介绍中说可以选择队伍与编程语言来完成一个engineering problem,还问了一句Are u up for the challenge? Of course I am not.
  • Code Jam: 编程果酱?? 反正就是用多轮的算法问题来进行比赛,最后获胜者还有奖金,又问了一句Do u have what it takes? emmmm..
  • Kick Start: 今天的重头戏,介绍中说主要是磨炼自己的coding水平,受众是学生 我 和新接触编程的人 我 ,也是按轮次进行的,可以只参加一轮也可以全部参加,最后的问题是What are u waiting for? 这看起来就正常多了,不像是向一个算法渣挑衅的言论,给好评。

Kick Start的轮次是一个Practice Round和A~H八轮,其中除了Practice Round给了24h解题外,其它的八个轮次都是只给3h解题时间,所以介绍中所说的’可以只参加一轮’,实则是指哪一轮呢?

别问,问就是自闭。

阅读全文 »

Crash Paper: SMN-Sequential Matching Network

发表时间 2018-12-09 | 分类 NLP

Sequential Matching Network: A New Architecture for Multi-turn Response Selection in Retrieval-Based Chatbots

乱七八糟的序

BDP课上组长大人布置下来的任务,是要研读这篇论文(因为名字太长了我写在了一级标题里面,让所有人都能第一时间看到它,下面统一使用SMN来指代论文中提出的模型)。我是属于 牵着不走,打着倒退 没人给出明确的任务目标就很难有动力主动学习的那种人,可能是高中时期延续下来的陋习,所以如果要给这篇post一个一级作者,那应该写 社会我强哥 才是。

回到正题,首先来简单说一下多轮对话现在的研究态势吧。

目前常用的对话建模方式有检索式、生成式以及两者融合的方式。
顾名思义,检索式就是对于一个提出的问题,我从当前已经有的资料中搜索出这个问题可能匹配的答案,候选答案可能有多个,但是在对话中最终回复的答案只能是一个,所以需要找到一种最优的算法来对这些候选答案进行筛选,选出可能性最大的那一个。
生成式模型是指我先把目前所有已知的知识用来训练出一个模型,然后不管你说什么,我都用这个模型来解读你的问题,并用模型的输出来回答。
最后,检索与生成相结合的方法就是把前两者糅合起来,正也因此可以玩得花里胡哨,比如用检索模型获得的候选答案们,我训练一个生成模型来对这些答案排个序,或者用生成模型生成的答案放在检索模型给出的候选答案中,一起参与 谁是大明星 的角逐,又或者对于一个检索式模型获得的答案,我用生成式模型对它进行改进,等等等等。

阅读全文 »

凸优化笔记(2): 凸函数

发表时间 2018-12-08 | 分类 凸优化

让我们(particularly me)继续凸优化之旅,今天要讨论的是凸函数。

写完笔记1之后回顾了一下,虽然很努力的不往抄书的方向走了但是,对于这种堆砌的概念还是不知道怎么用自己的语言说出来啊,在这篇笔记中试着改进下吧。

基本性质与例子

首先要讨论的是凸函数的基本性质,或者说如何判断一个函数是否是凸函数(当然在这之前会给出凸函数的定义),然后给出一些很常见的凸函数的例子。之后通过上境图(epigraph)这个中译有点无力吐槽说明了凸函数与凸集之间的关系,最后对Jensen不等式进行了简要论述。

按我的理解,这一小节其实是给出了证明一个函数是凸函数的三种方法:定义,一阶条件与二阶条件。

阅读全文 »

重修数据结构:线段树

发表时间 2018-12-07   |   更新时间 2018-12-11 | 分类 数据结构

什么是线段树,为什么要用线段树

首先,我们来回答什么是线段树。顾名思义,线段树就是线段构成的🌲用树结构来表示线段,为什么需要用树来表示线段呢(似乎用数组表示线段已经很科学高效了),因为有时候我们需要频繁地对一个区间进行查询操作。这种时候用线段树会缩减操作的时间复杂度的数量级。

举个🌰:小明有4根冰棍,他给它们编号是$0\sim 3$。每根冰棍都有不同的购买价格,按冰棍的编号依次是$[10,15,20,5]$。现在小明想知道不同编号区间里最贵冰棍的价格,比如:$[0,2]$号最贵冰棍的价格(我们都知道是20)。

阅读全文 »
1234

Chengxi Zhang

Is life always this hard, or is it just when you're a kid?

37 日志
6 分类
9 标签
GitHub E-Mail
© 2026 Chengxi Zhang