快速想一想,你能想到torch有哪些常见的index操作??
1. gather
1 | 1, 2, 3], a = torch.tensor([[ |
2. index_select
1 | a |
3. 骚气的来了哦
根据上面例子可以看到,a
为矩阵,选择a
中的index,但是下面介绍一个map操作.
1 | index |
这种操作有一个真实场景,比如:
1 | # 1. 这是两个特征 |
4. batch_gather
1 | import torch |
快速想一想,你能想到torch有哪些常见的index操作??
1 | >>> a = torch.tensor([[1, 2, 3], |
1 | >>> a |
根据上面例子可以看到,a
为矩阵,选择a
中的index,但是下面介绍一个map操作.
1 | >>> index |
这种操作有一个真实场景,比如:
1 | # 1. 这是两个特征 |
1 | import torch |
语义依存分析 (Semantic Dependency Parsing, SDP),分析句子各个语言单位之间的语义关联,并将语义关联以依存结构呈现。
使用语义依存刻画句子语义,好处在于不需要去抽象词汇本身,而是通过词汇所承受的语义框架来描述该词汇,而论元的数目相对词汇来说数量总是少了很多的。
语义依存分析目标是跨越句子表层句法结构的束缚,直接获取深层的语义信息。
例如以下三个句子,用不同的表达方式表达了同一个语义信息,即张三实施了一个吃的动作,吃的动作是对苹果实施的。
语义依存分析不受句法结构的影响,将具有直接语义关联的语言单元直接连接依存弧并标记上相应的语义关系。这也是语义依存分析与句法依存分析的重要区别。
如上例对比了句法依存和语义分析的结果,可以看到两者存在两个显著差别。
第一,句法依存某种程度上更重视非实词(如介词)在句子结构分析中的作用,而语义依存更倾向在具有直接语义关联的实词之间建立直接依存弧,非实词作为辅助标记存在。
第二,两者依存弧上标记的语义关系完全不同,语义依存关系是由论元关系引申归纳而来,可以用于回答问题,如我在哪里喝汤,我在用什么喝汤,谁在喝汤,我在喝什么。但是句法依存却没有这个能力。
第三,句法依存为树结构,语义依存为图结构,即是说当前词的依存弧可以有多个。
语义依存与语义角色标注之间也存在关联,语义角色标注只关注句子主要谓词的论元及谓词与论元之间的关系,而语义依存不仅关注谓词与论元的关系,还关注谓词与谓词之间、论元与论元之间、论元内部的语义关系。语义依存对句子语义信息的刻画更加完整全面。
https://github.com/geasyheart/semantic-dependency-parser
欢迎Star!
目前貌似公开的只有SEMEVAL2016数据集,地址在:HIT-SCIR/SemEval-2016,代码仓库中的数据集是将text和news两类合并而来。
额外插一句,对于一个算法项目来讲,不仅仅是算法部分,还要有数据,即使不能公开,也可以造一些例子,能够跑通算法,HanLP在这方面真的是无敌存在!
1 | semantic_dependency_parser.py [line:34] INFO SemanticDependencyModel( |
1 | BiaffineDependencyModel( |
和dependency parser结构相同,但是loss计算和解码部分不同。
区别点在于,举个例子:
1 | # pred_arcs.shape |
因为dependency parser有一个限制,即当前词只可能依存其他一个词,那么argmax(-1)即是在49那里获取最大的,表示和这49个词中最大的作为依存关系,使用交叉熵。
而semantic dependency parser没有这个限制,当前词可能和多个词存在依存关系,那么他的pred_arcs和true_arcs的维度是一样的,都是(32, 49, 49),所以使用BCELoss。
当然也可以用交叉熵,只需要将pred_arcs的维度转换成(32, 49, 49, 2)即可,也是我下面的做法。
在这里计算loss时,采用的是交叉熵,也就是说s_edge.size(-1) == 2,表示当前词和句子所有词之间是
或者否
,然后argmax(-1)进行解码。
在HanLP计算loss时,对于arc(即edge)的shape为(batch_size, seq_length, seq_length),因为biaffine的输出维度为1,所以这里计算loss时使用BCELoss,表示当前词和句子所有词之间是否存在关系。
另外一个两者的区别点在于计算rel时,HanLP采取的方式是各自计算各自的loss(即arc和rel),然后loss相加。
这里计算rel loss时融合了arc的信息进来,好处就在于能够快速收敛和提升准确度吧。
https://www.ltp-cloud.com/intro#benchmark
关系类型 | Tag | Description | Example |
---|---|---|---|
施事关系 | Agt | Agent | 我送她一束花 (我 <-- 送) |
当事关系 | Exp | Experiencer | 我跑得快 (跑 --> 我) |
感事关系 | Aft | Affection | 我思念家乡 (思念 --> 我) |
领事关系 | Poss | Possessor | 他有一本好读 (他 <-- 有) |
受事关系 | Pat | Patient | 他打了小明 (打 --> 小明) |
客事关系 | Cont | Content | 他听到鞭炮声 (听 --> 鞭炮声) |
成事关系 | Prod | Product | 他写了本小说 (写 --> 小说) |
源事关系 | Orig | Origin | 我军缴获敌人四辆坦克 (缴获 --> 坦克) |
涉事关系 | Datv | Dative | 他告诉我个秘密 ( 告诉 --> 我 ) |
比较角色 | Comp | Comitative | 他成绩比我好 (他 --> 我) |
属事角色 | Belg | Belongings | 老赵有俩女儿 (老赵 <-- 有) |
类事角色 | Clas | Classification | 他是中学生 (是 --> 中学生) |
依据角色 | Accd | According | 本庭依法宣判 (依法 <-- 宣判) |
缘故角色 | Reas | Reason | 他在愁女儿婚事 (愁 --> 婚事) |
意图角色 | Int | Intention | 为了金牌他拼命努力 (金牌 <-- 努力) |
结局角色 | Cons | Consequence | 他跑了满头大汗 (跑 --> 满头大汗) |
方式角色 | Mann | Manner | 球慢慢滚进空门 (慢慢 <-- 滚) |
工具角色 | Tool | Tool | 她用砂锅熬粥 (砂锅 <-- 熬粥) |
材料角色 | Malt | Material | 她用小米熬粥 (小米 <-- 熬粥) |
时间角色 | Time | Time | 唐朝有个李白 (唐朝 <-- 有) |
空间角色 | Loc | Location | 这房子朝南 (朝 --> 南) |
历程角色 | Proc | Process | 火车正在过长江大桥 (过 --> 大桥) |
趋向角色 | Dir | Direction | 部队奔向南方 (奔 --> 南) |
范围角色 | Sco | Scope | 产品应该比质量 (比 --> 质量) |
数量角色 | Quan | Quantity | 一年有365天 (有 --> 天) |
数量数组 | Qp | Quantity-phrase | 三本书 (三 --> 本) |
频率角色 | Freq | Frequency | 他每天看书 (每天 <-- 看) |
顺序角色 | Seq | Sequence | 他跑第一 (跑 --> 第一) |
描写角色 | Desc(Feat) | Description | 他长得胖 (长 --> 胖) |
宿主角色 | Host | Host | 住房面积 (住房 <-- 面积) |
名字修饰角色 | Nmod | Name-modifier | 果戈里大街 (果戈里 <-- 大街) |
时间修饰角色 | Tmod | Time-modifier | 星期一上午 (星期一 <-- 上午) |
反角色 | r + main role | 打篮球的小姑娘 (打篮球 <-- 姑娘) | |
嵌套角色 | d + main role | 爷爷看见孙子在跑 (看见 --> 跑) | |
并列关系 | eCoo | event Coordination | 我喜欢唱歌和跳舞 (唱歌 --> 跳舞) |
选择关系 | eSelt | event Selection | 您是喝茶还是喝咖啡 (茶 --> 咖啡) |
等同关系 | eEqu | event Equivalent | 他们三个人一起走 (他们 --> 三个人) |
先行关系 | ePrec | event Precedent | 首先,先 |
顺承关系 | eSucc | event Successor | 随后,然后 |
递进关系 | eProg | event Progression | 况且,并且 |
转折关系 | eAdvt | event adversative | 却,然而 |
原因关系 | eCau | event Cause | 因为,既然 |
结果关系 | eResu | event Result | 因此,以致 |
推论关系 | eInf | event Inference | 才,则 |
条件关系 | eCond | event Condition | 只要,除非 |
假设关系 | eSupp | event Supposition | 如果,要是 |
让步关系 | eConc | event Concession | 纵使,哪怕 |
手段关系 | eMetd | event Method | |
目的关系 | ePurp | event Purpose | 为了,以便 |
割舍关系 | eAban | event Abandonment | 与其,也不 |
选取关系 | ePref | event Preference | 不如,宁愿 |
总括关系 | eSum | event Summary | 总而言之 |
分叙关系 | eRect | event Recount | 例如,比方说 |
连词标记 | mConj | Recount Marker | 和,或 |
的字标记 | mAux | Auxiliary | 的,地,得 |
介词标记 | mPrep | Preposition | 把,被 |
语气标记 | mTone | Tone | 吗,呢 |
时间标记 | mTime | Time | 才,曾经 |
范围标记 | mRang | Range | 都,到处 |
程度标记 | mDegr | Degree | 很,稍微 |
频率标记 | mFreq | Frequency Marker | 再,常常 |
趋向标记 | mDir | Direction Marker | 上去,下来 |
插入语标记 | mPars | Parenthesis Marker | 总的来说,众所周知 |
否定标记 | mNeg | Negation Marker | 不,没,未 |
情态标记 | mMod | Modal Marker | 幸亏,会,能 |
标点标记 | mPunc | Punctuation Marker | ,。! |
重复标记 | mPept | Repetition Marker | 走啊走 (走 --> 走) |
多数标记 | mMaj | Majority Marker | 们,等 |
实词虚化标记 | mVain | Vain Marker | |
离合标记 | mSepa | Seperation Marker | 吃了个饭 (吃 --> 饭) 洗了个澡 (洗 --> 澡) |
根节点 | Root | Root | 全句核心节点 |
1 | Semantic Role Labeling (SRL) is defined as the task to recognize arguments for a given predicate and assign semantic role labels to them. |
1 | 语义角色标注 (Semantic Role Labeling, SRL) 是一种浅层的语义分析技术,标注句子中某些短语为给定谓词的论元 (语义角色) ,如施事、受事、时间和地点等。其能够对问答系统、信息抽取和机器翻译等应用产生推动作用。 仍然是上面的例子,语义角色标注的结果为: |
https://github.com/geasyheart/srl-parser
欢迎Star!
看黄色那部分:
施事者
,叫为谓语
,汤姆为受事者
施事者
,拿为谓语
,外衣为受事者
‘各位/PN 好/VA ,/PU 欢迎/VV 您/PN 收看/VV 国际/NN 频道/NN 的/DEG 今日/NT 关注/NN 。/PU’
此图自己画的,如有需要可参考
谓语
,您为受事者
,收看国际频道的今日关注为语义角色
数据集来自ontonotes5.0,但是此为收费数据集,或者需要大学帐号注册,找到一个开源的https://github.com/GuocaiL/Coref_Resolution/archive/master.zip#data/,处理后的数据集以 jsonlines后缀存储,放到此处。
具体的处理逻辑可参考这里。
目前常见的有span-based,bio-based,treecrf,treecrf是yzhangcs的实现方式。bio-based是用序列标注的方式来做(hanlp和ltp均以此实现),故是本文的重点。
看这个文件,其中预测的label处理后是这个样子,解释如下:
1 | tensor([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
看到这里是否知道其模型结构了,biaffine
+crf
哇,biaffine
转换成临接矩阵,用于预测谓词
和论元
的关系,论元
用crf序列标注的方式来进行预测。
1 | SpanBIOSemanticRoleLabelingModel( |
到biaffine
这一层没什么需要特别注意的,bert获取词向量的方式从以前的求平均改成了以首字代表词向量。后面接两个mlp以及biaffine。重点在于如何和crf融合到一起?
基于上述两个前提,将batch_size
和第一个seq_length
进行flatten,因为第一个seq_length为谓语,不影响论元的预测,转换后输入到crf中,就可以计算loss了,解码一样。
预测出来的结果示例如下:
1 | # pred |
pred类型为List[List[int]]
,他的长度等于batch_tokens中每个词的长度,即:
1 | len(pred) == sum([len(i) for i in batch["batch_tokens"]]) |
** 其中每一行表示的是当前词和整句每个词所呈现出来的关系。 **
基于上面结论,就不难写评估代码了,将其转成(token_index, start, end, label)
,然后set取交集,最终计算f1值,可看这里。
基本如上,具体可看。
从这里也可以看出,语义角色标注任务任重道远。
关系类型 | Tag | Description | Example | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ARG0 | causers or experiencers | 施事者、主体、触发者 | [政府 ARG0]鼓励个人投资服务业。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ARG1 | patient | 受事者 | 政府鼓励[个人 ARG1]投资服务业。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ARG2 | range | 语义角色2 | 政府鼓励个人[投资服务业 ARG2]。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ARG3 | starting point | 语义角色3 | 巴基斯坦[对谈判前景 ARG3]表示悲观。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ARG4 | end point | 语义角色4 | 产检部门将产检时间缩短到[一至三天 ARG4]。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ADV | adverbial | 状语 | 我们[即将 ADV]迎来新年。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BNF | beneficiary | 受益人 | 义务[为学童及老师 BNF]做超音波检查 。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CND | condition | 条件 | [如果早期发现 CND],便能提醒当事人注意血压的变化。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CRD | coordinated arguments | 并列 | 跟南韩、[跟美国 CRD]谋求和平关系的举动也更加积极。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DGR | degree | 程度 | 贫铀弹含有放射性比铀强[20万倍 DGR]。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DIR | direction | 方向 | [从此处 DIR] 我们可以发现寇克斯报告的精髓。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DIS | discourse marker | 会话标记 | 警方上午针对目击者做笔录,[而 DIS]李士东仍然不见踪影。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EXT | extent 基于树形条件随机场的高阶句法分析此篇文章貌似没有重点,日常笔记吧。 基于树形条件随机场的高阶句法分析作者硕士毕业论文,关于句法分析的历史与实现基本讲了一遍,包括作者使用TreeCRF高阶建模等工作。 对于句法分析工作,百度ddparser相比下来可能是工业上更好的选择,不过目前个人更倾向于语义句法工作,相比下来更接近直观感受(还是看任务啦~)。 不管是semantic role labeling(语义角色标注)或者semantic dependency parser(语义依存分析),看ltp的演示效果。 ![]() 但是不能光看这种效果,从目前公开的论文水平来看,准确率并没有很高,另外高质量,高数量的标注数据集也相对少。 大家都是一样的模型,比的就是数据集喽,这点不得不夸HanLP,至少人家代码里面都有数据集,方便学习。 属性抽取调研-工业界属性抽取调研——工业界目录1. 任务1.1. 背景信息抽取是从非结构化、半结构化文本中将有价值的信息转化为结构化数据的过程,在抽取的过程中,根据抽取的内容不同又分为关系抽取、事件抽取、属性抽取等。 1.2. 任务定义属性抽取(Attribute Extraction):属性抽取的目标是从不同信息源中采集特定实体的属性信息。比如人物实体的生日、性别、国籍等,都是它的属性信息,通过属性抽取,通过多个数据源的获取,我们就可以通过丰富的属性信息来较为完整地刻画一个实体。 1.3. 数据集
1.4. 评测标准
2. 方法总结可以划分为四类:基于无监督的抽取方法,基于依存关系的半监督的槽填充算法,基于深度学习的序列标注方法、基于元模式的属性抽取方法。 2.1. 基于无监督的属性抽取方法2.1.1. 基于规则的槽填充算法
2.2. 基于依存关系的半监督的槽填充算法
2.3. 基于深度学习的序列标注方法序列标注属于一种较为常用的属性抽取方法,就是将属性值看作较长的实体值,对数据进行标注,使用序列标注模型进行训练和抽取。
2.4. 基于元模式的属性抽取方法
3. Paper List3.1. 论文列表
近几年的属性抽取论文待补充 4. 相关链接Bootstrapped Named Entity Recognition for Product Attribute Extraction 5. 参考资源关系抽取-学术界关系抽取调研——学术界目录
1. 任务1.1. 任务定义自动识别句子中实体之间具有的某种语义关系。根据参与实体的多少可以分为二元关系抽取(两个实体)和多元关系抽取(三个及以上实体)。 通过关注两个实体间的语义关系,可以得到(subject, relation, object)三元组,其中subject和object表示两个实体,relation表示实体间的语义关系。 根据处理数据源的不同,关系抽取可以分为以下三种:
根据抽取文本的范围不同,关系抽取可以分为以下两种:
根据所抽取领域的划分,关系抽取又可以分为以下两种:
限定域关系抽取方法:
1.2. 数据集
获取更多关系抽取数据集,可访问此处Annotated-Semantic-Relationships-Datasets 1.3. 评测标准二分类: Accuracy = (预测正确的样本数)/(总样本数)=(TP+TN)/(TP+TN+FP+FN) Precision = (预测为正例且正确预测的样本数)/(所有预测为正例的样本数) = TP/(TP+FP) Recall = (预测为正例且正确预测的样本数)/(所有真实情况为正例的样本数) = TP/(TP+FN) F1 = 2 * (Precision * Recall) / (Precision + Recall ) 多分类: Macro Average 多类别(N类) F1/P/R的计算,即计算N个类别的F1/P/R,每次计算以当前类别为正例,其他所有类别为负例,最终将各类别结果求和并除以类别数取平均。 Micro Average 统计当前类别的TP、TN、FP、FN数量,再将该四类样本数各自求和作为新的TP、TN、FP、FN,计算F1/P/R公式同二分类。 P@N(最高置信度预测精度): 通常在远监督关系抽取中使用到,由于知识库所含关系实例的不完善,会出现高置信度包含关系实例的实体对被叛为负例,从而低估了系统正确率。此时可以采用人工评价,将预测结果中知识库已包含的三元组移除,然后人工判断抽取关系实例是否正确,按照top N的准确率对抽取效果进行评价。 1.4. SOTARelation Extraction on TACRED:
Relation Extraction on SemEval-2010 Task 8:
Relation Extraction on ACE 2005:
Relation Extraction on ACE 2004:
Relation Extraction on NYT:
Relation Extraction on CoNLL04:
Relation Extraction on FewRel:
2. 方法总结2.1. 基于模式挖掘的方法2.1.1. 基于模板匹配的方法模板匹配:在关系分类中应用广泛。对于给定实体对的一段文本,基于现有模板库进行上下文匹配。若结果满足模板对应关系类别,则将该关系类别作为实体对之间的关系。 常见的模板匹配方法主要包括:
(Marti A. Hearst 1992) [1]在该文中提出一种从不受限制的文本中自动获得下位词法关系的方法,用于提取分类关系is-a的实例: ![]() 示例:句子中上下位关系,比如hyponym(China; Asia countries)。从下面两个句子中都可以抽取出这种关系:
两个实体之间的especially和such as可以看做这种关系的特征。通过寻找更多表达这种关系的句子,构造规则模板,即可用于抽取构成上下位关系的实体,从而发现新的三元组。 总结:优点:
缺点:
2.1.2. 基于依存句法基于NLP工具(常见的有Stanford CoreNLP、spaCy、LTP、HanLP等)获取句子相关特征,对处理结果一般进行如下处理:
示例下面介绍一组基于LTP(语言技术平台)工具进行规则抽取三元组的例子:
依存句法分析结果示例 依存句法关系类型说明 由图示可知,可以以谓语动词为出发点构建规则,对节点上词性以及边上的关系进行设定。当前句子核心谓词是“系”,从前向后遍历句子解析结果可以从“主席”开始分析,由于“主席”与左右两侧词汇均构成定中关系且两侧词汇均被识别为命名实体。由此,可以提取出一项(政协,主席,许爱民)定中关系三元组。 总结手写规则的 优点 :
缺点:
2.2. 监督学习2.2.1. 机器学习2.2.1.1. 基于特征向量的方法基于特征向量的方法是一种简单且行之有效 的关系抽取运用。其主要思想为:给定关系句子实例,从上下文中提取出具有类间区分度的特征(如词法信息,语法信息等),构造形成多维度加权特征向量,选取合适的分类器进行关系抽取模型训练。 基于特征向量的方法需要解决的三个基本问题:特征项选取,特征权重计算和分类器选择。
小结: 基于特征向量的方法是关系抽取中最常见的方法,特征工程是该方法核心。研究者启发式地以多层次语言特征为切入点,并构造特征向量,结合分类器训练,可以取得不错的效果。但该方法现如今难以寻找有效新特征,性能提升较为有限。 2.2.1.2. 基于核函数的方法针对特征提取具有的局限性,便有研究者另辟蹊径,使用核函数的方法进行关系抽取。基于核函数的方法无需人为构造显性特征,而是以输入文本实例的字符串或者是句法分析树结构作为输入,通过计算任意两个输入对象间的核相似度函数来训练分类模型。基于核函数的方法通过核函数映射综合了更多方面的知识信息,使实体间关系表示更加灵活。核函数类型众多,有包含诸如多项式核函数,向量空间核函数,P-光谱核函数,全序列核函数等。基于核函数的方法灵活性较高,对于多个不同个体核函数可以进行复合,从而得到针对具体任务的核函数。 方法原理:在初始特征空间下,核函数将该空间里的数据点映射到一个新的特征空间下,在该空间中训练线性分类器。其本质是将句子潜在的隐式特征向量投影到新的特征空间,并通过计算投影的内积来表示输入空间特征向量的相似性,最终达到判定实体间关系类别相似性的效果。 基于核函数的方法抽取关系一般步骤:
小结: 基于核函数的方法可以规避构造基于向量方法中显式特征集合,且更能够充分利用句子的长距离特征。然而核方法将多个不同核函数符合后,虽然可以表达高纬度或无穷维度特征空间,但也导致该方法学习和训练速度 过程较为缓慢,对于大规模数据抽取场景耗费时空代价巨大。 二者比较
2.2.2. 深度学习2.2.2.1. Pipeline(管道式)Pipeline方法先在句子中抽取实体、而后再抽取关系。即实体识别,关系分类被视为两个独立的部分,互不干涉,但关系的识别依赖于实体识别的效果。 2.2.2.2. Joint(联合抽取式)现有联合抽取模型总体上有两大类: 1、共享参数联合抽取模型 通过共享参数(共享输入特征或者内部隐层状态)实现联合,此种方法对子模型没有限制,但是由于使用独立的解码算法,导致实体模型和关系模型之间交互不强。 Miwa[11]等人针对上游任务实体识别抽取出的实体对,对当前句子所对应的依存句法树上提取出能覆盖实体对的最小依存树,并基于TreeLSTM生成该子树相对应的表示向量。最终,基于子树根节点对应的TreeLSTM向量完成SoftMax关系分类。 Katiyar[12] 等人采取指针网络解码,指针网络实际上有R层(R为关系总数)。对当前实体查询在其位置前的所有实体(向前查询),并计算注意力得分。 2、联合解码抽取模型 为了增强实体模型和关系模型之间的交互性,由此提出了复杂的联合解码方案,但需要对子模型特征的丰富性以及联合解码的精确性之间做权衡:一方面如果设计精确的联合解码算法,往往需要对模型特征进行限制,例如用条件随机场建模,使用维特比解码算法可以得到全局最优解,但是往往需要限制特征的阶数。 另一方面如果使用近似解码算法,比如集束搜索,在特征方面可以抽取任意阶的特征,但是解码得到的结果是不精确的。因此,需要让算法可以在不影响子模型特征丰富性的条件下加强子模型之间的交互。 Zheng[13]等人对实体和关系标注框架进行了统一,直接以关系标签进行实体的BIOES标注,但该方案未考虑关系重叠问题,比如一个实体存在多种关系的情况。 Dai[14]等人针对一句话含有多种关系的场景,在含有n个token的句子中,准备n个不同标注框架。对于每个位置的token都进行一次可能的实体或关系类型标注,由此一个句子进行了n次重复编码,复杂度高。 2.2.2.3. 远监督学习Distant Supervision提出主要基于假设:两个实体如果在知识库中存在某种关系,则包含该两个实体的非结构化句子均能表示出这种关系。常用的做法是通过将知识库与各非结构化文本对齐来自动构建大量训练数据,减少模型对人工标注数据的依赖,增强模型跨领域适应能力。但该假设过于肯定,导致引入大量噪声数据,且构造过程依赖于NER等工具,中间过程可能造成错误传播问题。 针对这些问题,目前主要有四类方法: (1)将先验知识作为限制引入构造数据集的过程中。 (2)利用概率图模型对数据样例打分,将置信度较低的句子过滤。 (3)利用多示例学习进行包级别关系标注并融入句子级别的注意力机制对包内样例赋予权值。 (4)基于强化学习。 (5)基于预训练机制。 Zeng[15]等人针对数据标注错误和传统统计模型特征抽取出现的错误提出解决方案。在数据标注错误问题上,作者采用多示例学习的方式从训练集中提取置信度高的训练样例训练模型。在模型改进方面,作者提出 piece-wise 的卷积神经网络(PCNN)。先通过 word2vec 的 Skip-gram 模型将词表示成向量形式,与位置特征向量(句子中词语与两个实体的相对位置)进行拼接作为输入,而后通过卷积层得到 feature map。在池化层中基于两个实体位置将 feature map 分为三段进行池化,其目的是为了更好的捕获两个实体间的结构化信息。最后,通过 softmax 层进行分类。 Lin[16]等人在Zeng[15]的基础上,认为多示例学习虽然缓解了噪声数据过多的问题,但每次只采用包中置信度最高的样例作为该关系正例有可能损失其他句子重要信息。在模型上,作者提出基于 attention 机制的卷积神经网络模型,由原先选取置信度最高的样例改为对包中所有样例赋予句子级别权重,最终各个样例向量进行加权求和通过分类器得到关系分类结果。 Zhang[17] 基于Lin[8]的工作,对句子级别的注意力机制设计进行了改进,利用卷积神经网络捕获实体描述特征,用于提供更多的背景知识,最后通过计算实体间关系与句子间的相似度赋予句子不同的权重。 Feng[18]基于强化学习的CNN+RL模型主要构成包括样例选择器和关系分类器。其中样例选择器负责从样例中获取高质量的句子,采取强化学习方式在考虑当前句子的选择状态下选择样例;接着经过关系分类器向样例选择器反馈来改进选择策略。该方法相较之前句子级别和Bag级别的关系分类模型取得更好效果。 Soares[19]首次在预训练过程中引入关系分类目标,使用「BLANK」标识符来替换实体mention。该方法将样本中含有相同实体对的句子对视为正样本,反之为负样本。相较于传统的远程监督,该方法在训练中未引入关系标签,而是采用二元分类器对句子对之间进行相似度计算。结果显示在FewRel数据集上,在未进行tuning就已经超过了有监督的关系抽取结果。 4. Paper List4.1. 论文列表4.1.1. 监督类方法4.1.1.1. 利用语法信息的方法
4.1.1.2. 不利用语法信息的方法
4.1.2. 远监督方法
5. 相关文献
关系抽取调研-工业界关系抽取调研——工业界目录1. 任务1.1. 任务定义自动识别句子中实体之间具有的某种语义关系。根据参与实体的多少可以分为二元关系抽取(两个实体)和多元关系抽取(三个及以上实体)。 通过关注两个实体间的语义关系,可以得到(arg1, relation, arg2)三元组,其中arg1和arg2表示两个实体,relation表示实体间的语义关系。 根据处理数据源的不同,关系抽取可以分为以下三种:
根据抽取文本的范围不同,关系抽取可以分为以下两种:
根据所抽取领域的划分,关系抽取又可以分为以下两种:
限定域关系抽取方法:
1.2. 常见数据集工业界数据集由于工业界的数据集通常来自其自身业务的记录,并不对外公开,故以下只举例介绍相关比赛中出现的数据集(下载链接因版权原因,随时删除): 2019全国知识图谱与语义计算大会
1.3. 评测标准
2. 方法总结2.1. 基于模板的方法模板匹配:是关系分类中最常见的方法,使用一个模板库对输入文本两个给定实体进行上下文匹配,如果满足模板对应关系,则作为实体对之间的关系。常见的模板匹配方法主要包括:
2.1.1. 基于触发词/字符串例:句子中上下位关系,比如hyponym(China; Asia countries)。从下面两个句子中都可以抽取出这种关系: Asia countries, especially China, Japan, and India… Asia countries, such as China, Japan, and India… 两个实体之间的especially和such as可以看做这种关系的特征。寻找更多表达这种关系的句子,构造规则模板,即可用于抽取构成上下位关系的实体,从而发现新的三元组。 2.1.2. 基于依存句法使用NLP工具获取句子相关特征,对处理结果一般进行如下处理:
小结手写规则的 优点 :
缺点:
2.2. 监督学习有监督的关系抽取方法:
2.2.1. 机器学习将关系抽取看成是一个基于构造特征的分类问题 常见特征:
标准流程:
通常会训练两个分类器,第一个分类器是 yes/no 的二分类,判断命名实体间是否有关系,如果有关系,再送到第二个分类器,给实体分配关系类别。这样做的好处是通过排除大多数的实体对来加快分类器的训练过程,另一方面,对每个任务可以使用基于具体任务的特征集。常用的分类器包括 MaxEnt、Naive Bayes、SVM 等。 2.2.2. 深度学习 Pipeline vs Joint ModelPipeline Pipeline方法先在句子中抽取实体、而后再抽取关系。即把实体识别和关系分类作为两个完全独立的过程,互不影响,关系的识别依赖于实体识别的效果。 Joint Model 现有联合抽取模型总体上有两大类: 1、共享参数的联合抽取模型 通过共享参数(共享输入特征或者内部隐层状态)实现联合,此种方法对子模型没有限制,但是由于使用独立的解码算法,导致实体模型和关系模型之间交互不强。 2、联合解码的联合抽取模型 为了加强实体模型和关系模型的交互,复杂的联合解码算法被提出来,比如整数线性规划等。这种情况下需要对子模型特征的丰富性以及联合解码的精确性之间做权衡:
因此,需要一个算法可以在不影响子模型特征丰富性的条件下加强子模型之间的交互。 此外,很多方法再进行实体抽取时并没有直接用到关系的信息,然而这种信息是很重要的。需要一个方法可以同时考虑一个句子中所有实体、实体与关系、关系与关系之间的交互。 Pipeline对比 Joint Model: 相比于传统的Pipeline方法,联合抽取能获得更好的性能。虽然Pipeline方法易于实现,这两个抽取模型的灵活性高,实体模型和关系模型可以使用独立的数据集,并不需要同时标注实体和关系的数据集。但存在以下缺点:
2.3. 半监督/无监督方法2.3.1. BootstrappingBootstrapping:利用少量的实例作为初始种子集合,然后在种子集合上学习获得关系抽取的模板,再利用模板抽取更多的实例,加入种子集合中并不断迭代。Bootstrapping的优点构建成本低,适合大规模的关系任务并且具备发现新关系的能力,但也存在对初始种子较为敏感、存在语义漂移、准确率等问题。Bootstrapping 如今在工业界中依旧是快速构建大规模知识图谱的重要方法。在实际使用中,可以考虑结合基于深度语义模型的关系抽取方法,进一步提高图谱召回。 工业应用: bootstrapping比较常见的方法有DIPRE和Snowball。和DIPRE相比,Snowball通过对获得的模板pattern进行置信度计算,一定程度上可以保证抽取结果质量。 DIPRE: Dual Iterative Pattern Expansion DIPRE是从HTML文档集合中提取结构化关系(或表格)的一种方法。 该方法在类似Web的环境下效果最好,其中的表格要提取的tuples往往会在反复出现在集合文档中一致的context内。 DIPRE利用这种集合冗余和内在的结构以提取目标关系并简化训练。 DIPRE Pipeline DIPRE pattern由5-tuple <order, urlprefix, left, middle, right>组成,并通过将具有相等字符串分隔实体(middle)的共现种子tuples group在一起生成,然后将 left 字符串和 right 字符串分别设置为实体左侧和右侧上下文的最长公共子字符串。 order 反映了实体出现的顺序,urlprefix 设置为发现了 tuples 的源URL的最长公共子串。在从最初的种子 tuples 中生成一些 pattern 之后,DIPRE扫描包含 pattern 可匹配的文本片段的可用文档。随后,DIPRE生成新的tuples,并将它们用作新的“种子”。DIPRE反复迭代以上过程找到文档中的新 tuples 以识别新的可靠 patterns。 伪代码:
DIPRE样例 ![]() 从 5 个种子 tuples 开始,找到包含种子的实例,替换关键词,形成 pattern,迭代匹配,就为 (author,book) 抽取到了 relation pattern,x, by y, 和 x, one of y’s。 DIPRE利弊 优点:
缺点:
2.3.2. 基于远程监督的方法远程监督算法基于一个非常重要的假设:对于一个已有的知识图谱中的一个三元组(由一对实体和一个关系构成),外部文档库中任何包含这对实体的句子,在一定程度上都反映了这种关系。基于这个假设,远程监督算法可以基于一个标注好的小型知识图谱,给外部文档库中的句子标注关系标签,相当于做了样本的自动标注,因此是一种半监督的算法。 (1)多示例学习:主要基于Bag的特征进行关系分类,主要代表文献包括PCNN[1]、Selective Attention over Instances[2]、Multi-label CNNs[3]、APCNNs[4],其中Bag的表示主要方式和池化方式为: (2)强化学习:在采用多示例学习策略时,可能会出现整个Bag包含大量噪声的情况。基于强化学习的CNN+RL[5]比句子级别和Bag级别的关系分类模型取得更好效果。 模型主要由样例选择器和关系分类器构成。样例选择器负责从样例中选择高质量的句子,采取强化学习方式在考虑当前句子的选择状态下选择样例;关系分类器向样例选择器反馈,改进选择策略。 (3)预训练机制:采取“Matching the Blank[6]”方法,首次在预训练过程中引入关系分类目标,但仍然是自监督的,没有引入知识库和额外的人工标注,将实体metion替换为「BLANK」标识符。
3. 抽取工具应用3.1. TextRunnerTEXTRUNNER三个关键步骤: Open Information Extraction from the Web(TextRunner, 2007,华盛顿大学)
Self-Supervised Learner:
Single-Pass Extractor: 输入一个句子,处理过程如下
Redundancy-based Assessor:
3.2. OLLIEOLLIE支持基于语法依赖树的关系抽取。流程图如下,主要包含三个步骤
![]() 3.3. IEPY开源项目:https://github.com/machinalis/iepy 主要做关系抽取:IEPY is an open source tool for Information Extraction focused on Relation Extraction. 工具特征:
使用安装: 作为Python包安装,pip install iepy, 并下载第三方数据 iepy –download-third-party-data 使⽤: 1 创建项目 iepy –create 2 导⼊要抽取的语料 python bin/csv_to_iepy.py data.csv 3 数据预处理( text tokenization, sentence splitting, lemmatization, part-of-speech tagging, and named entity recognition) python bin/preprocess.py 4 启动web-ui查看项⽬ python bin/manage.py runserver 5 进行active learning(需要自己再依据工具提示标一些数据)或rule-based(写规则)关系抽取 6 在界面上标⼀些测试集来验证抽取效果。 ![]() 总结功能: 对于要处理的语料导⼊到项目里,提供前面的预处理和两种方式的关系抽取。Active Learning的需要自己定义关系和标⼀些数据。Rule-based的需要自己写规则。也封装好了⼀些脚本⽅便的做导⼊数据、预处理、规则检查等。 使用方式: python包 + webUI,类似pyspider。可以用界面来定义关系和查看抽取结果、标注测试集等。不过还是需要⽤命令行来load数据,预处理等,这部分其实也可以在界面实现。 评价: 由于开发的时间早,抽取的方法不新,也没有预先在⼤数据集上训练得到通用领域关系抽取的模型,需要用户自己定义关系并标注数据。每⼀个抽取任务创建⼀个project,使⽤web界面方便操作和可视化,感觉我们做领域迁移也可以采用这种⽅法,把流程固定,然后通过创建不同的project,导⼊不同的数据,定义不同的关系,然后⽤webUI进⾏可视化和人工操作。 3.4. spaCy3.4.1 介绍 工业级的NLP工具:功能很强⼤,不⽌是做Information Extraction,⽤Cython优化,各种处理超级快(官网fastest in the world),能⽤于在真实场景和产品里的。适合对用于Deep Learning的⽂本进行预处理。能和TensorFlow, PyTorch, scikit-learn, Gensim 等深度学习框架无缝衔接。 3.4.2 工具特点:
3.4.3 总结并非专门做信息抽取,也没有抽取关系的功能。封装了NLP相关的基础工作,并优化了速度以用于真实产品。 同时也允许用户自己训练模型load后使⽤。 使用方式: python包+load下载的模型。 评价: 功能很多很实用,定位在于做深度学习前面的文本预处理,且优化速度。使用方式和很多⼯具⼀样,使用python包,封装好各种通用功能和接口,再通过加载不同的模型实现使⽤在不同领域、语言或者应对方法改进的情况。 3.5 NELL3.5.1 介绍 永恒语⾔学习: Never-ending Language Learning。不断学习语⾔知识,2010年提出。 architecture: ![]() ![]() 流程: 利⽤少量标记样本集合训练学习模型, 然后⽤该模型去标记更多样本。(需要偶尔人工标注)。运⽤多视角学习(multi-view learning)分别从文本背景信息、网页结构信息、构词法特征以及规则学习4个角度进行新知识抽取和知识库的扩充。 3.5.2 总结 评价: 可以借鉴这种方式扩充构建好的知识库,对于通用领域知识库可以在网页文本上抽取,特定领域的可以喂相关领域的文档或者爬取到的网页文本。信息抽取工具应该不包含这个功能,而是通过这个⼯具的使用能够实现这种功能。 3.6 Deepdive官网地址:http://deepdive.stanford.edu/ Deepdive是stanford大学InfoLab实验室开发的一个开源知识抽取系统,它通过弱监督学习,从非结构化的文本中提取结构化的关系数据。DeepDive用于提取实体之间的复杂关系并推断涉及这些实体的事实。在使用Deepdive进行关系抽取的时候,使用者不需要关心算法,只需要指定实体的特征,Deepdive通过联合推理,即可得出两个实体之间有关系的概率。 Deepdive的优点如下: 抽取流程如下: ![]() 一个中文抽取示例:股权抽取 https://zhuanlan.zhihu.com/p/43143663 3.7 Stanford官网地址:https://stanfordnlp.github.io/CoreNLP Stanford CoreNLP是斯坦福大学提供的自然语言处理工具,是由Java写成的,可通过使用Web服务与CoreNLP进行交互,从而使用python等其他语言进行编程,目前提供python接口可直接安装使用,支持多种语言。 Open IE(开放信息提取)是指从纯文本中提取关系元组,与其他提取不同的是,Open IE 不需要提前定义schema,主要利用语言结构进行开放领域信息抽取。Stanford Open IE是Stanford CoreNLP包中的一个开放领域信息抽取模块,该模块的抽取思路如下: 1、先将句子分成几个子句(学习一个分类器) 2、最大程度地缩短每个子句,产生一组所需的句子片段 3、从片段中提取三元组(自然逻辑) 相关论文链接:https://nlp.stanford.edu/pubs/2015angeli-openie.pdf Relation Extractor(关系抽取)是Stanford CoreNLP中的另一个处理模块,用于抽取特定领域的关系。目前支持Live_In, Located_In, OrgBased_In, Work_For, and None这几种关系。用户可以使用提供的接口使用自己的数据集训练自己的模型,从而实现特定领域的关系抽取。该模块的抽取思路如下: 1、数据预处理:tokenization,part of speech tagging 2、实体识别(标注) 3、使用多类逻辑回归分类器对关系进行分类 Stanford Open IE& Relation Extractor对比
4. 相关文献
5. 参考资源收录文章 https://zhuanlan.zhihu.com/p/77868938 https://github.com/WindChimeRan/NREPapers2019 https://paperswithcode.com/sota bert和xlnet1. AR与AE语言模型AR: Autoregressive Language modeling AR语言模型:指的是,依据前面(或后面)出现的tokens来预测当前时刻的token,代表有ELMO,GPT等。 二者有着它们各自的优缺点:AR 语言模型:缺点: 它只能利用单向语义而不能同时利用上下文信息。ELMO 通过双向都做AR 模型,然后进行拼接,但从结果来看,效果并不是太好。 AE 语言模型:缺点: 由于训练中采用了 [MASK] 标记,导致预训练与微调阶段不一致的问题。BERT独立性假设问题,即没有对被遮掩(Mask)的 token 之间的关系进行学习。此外对于生成式问题, AE 模型也显得捉襟见肘。 总结所以,AR方式所带来的自回归性学习了预测 token 之间的依赖,这是 BERT 所没有的;而 BERT 的AE方式带来的对深层次双向信息的学习,却又是像ELMo还有GPT单向语言模型所没有的,不管是有没有替换 [MASK]。于是,自然就会想,如何将两者的优点统一起来?这时就到了XLNet登场的时间。 2. Permutation Language Model具体实现方式是,通过随机取一句话的一种排列,然后将末尾一定量的词给遮掩(和 BERT 里的直接替换 [MASK] 有些不同)掉,最后用 AR 的方式来按照这种排列依次预测被遮掩掉的词。 3. Transformer-XL4. Relative Positional Encoding简单知识点1. bert mask之间相互独立BERT进行了独立假设,比如句子[New, York, is, a, city], 假定MASK掉New York,输入为[MASK, MASK, is, a, city], Bert根据is a city 预测New; 根据is a city预测York. 也就是预测New和预测York是独立的,不相关的。 ![]() 作者提出的Generalized Autoregressive LM在预测York依赖了New。 ![]() 总结:BERT: Masked Language Model, 使用了双边的context信息,但是忽略了masked token之间的依赖关系。 参考文章biaffine分析
分析: 1. x.shape
2. x和weight点积
3. 怎么来的呢
4. y.permute((0, 1, 3, 2))
5. torch.matmul(torch.matmul(x, weight), y.permute((0, 1, 3, 2)))
final. 扩展
成分句法分析package写了一个成分分析树的标注包:
定义成分句法分析(Constituency Parser)是将一个句子转换成由短语组成的树,为啥子要这样呢,因为人理解一句话是从这句话里面更小的成分来的,直到最小的成分(词)。 更多可以看宗成庆老师的《统计自然语言处理第二版》。 例子
反之通过小的成分慢慢递归到更高的层次(一句话),从而理解这句话的意思。 更详细的解释:
数据处理1. left binarized要使用CKY算法,首先要将标注的数据集转成满足乔姆斯基范式的二叉树。作者这里将 当然,这里你也可以使用right binarized,只要能转回原来的tree就行。 ![]() 2. factorize将 原来刷算法时有将binary tree转换成序列结构,没想到这里就有一个~。 随后将其赋值到一个上三角的临接矩阵,长度为 模型我在其中加入了 整个任务的指标在开源数据集上提升至将近86%。
作者在这里使用了
解码部分使用cky算法,来获取句子的最佳结构,然后使用 其解码过程可参考宗成庆老师的示例,其示例过程如下。 ![]() ![]() ![]() ![]() ![]() 总结目前在这块的研究或者在工业界使用的没有像dependency parser那么成熟。
再往最近基本就没啥成果出来了。 [扩展阅读]
缺失模块。 jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true
探索世界美好的存在。
|