2021SC@SDUSC
自从大约半个月之前更换到了新课题——“基于常识知识的推理问题”之后,我就一直在对这一新课题进行摸索。虽然我负责的项目是OpenCSR这一论文项目的源代码解析与运行,但是我还是花了一些时间去稍微了解一下梁同学负责的ACP_CSQA项目,一方面是处于好奇,另一方面也是希望能够起到一些触类旁通的作用。目前来说,虽然不能对我自己负责的项目有所助力,但是我依旧从中收获了不少,在日后的代码解析过程中如果有相关相似的内容或者可以借鉴的地方,我会拿出来讲一讲。
接下来讲述这次源代码分析的内容。某种意义上来说,这是我更换课题以来的第一篇正式意义上的源代码分析报告,它主要的解析对象是corpus_prepro.py这个python脚本,其作用是对语料库进行预处理。当然,在讲述具体的代码的作用以及意义之前,我需要重申一遍,我所认定的核心源代码,是drfact这一模型的相关源代码。而drfact的算法原理需要基于一定的数据结构来实现其数学原理,因此对于原始语料库进行一定程度的预处理是必要的,我会在这篇报告中首先讲述其必要性。
一、模型思想与预处理的必要性
在阐述模型思想之前,首先需要理解OpenCSR项目所针对的是开放性的常识推理问题,即没有候选答案的常识推理,因此,它的任务定义也会和有候选答案的常识推理有所不同。基于这个任务定义,模型思想也会发生一些改变。
1.1 任务定义
F: 一个文本格式的事实知识语料库,其中每个文本描述了一段客观事实。
V:由语料库处理得到的概念集合(字典), 表示一个名词或者名词短语。
输入q: 一个常识问题(示例:什么可以缓解全球变暖)。
输出Output:{ (,, )……}
1.2 模型思想
以一个超图的形式建模推理过程,超图的节点为概念,包含概