2021SC@SDUSC

本篇文章将针对eval.py函数进行进一步分析,

def evaluate(self, get_scores=True, live=False, **kwargs):
        if live:
            temp_ref = kwargs.pop('ref', {})
            cand = kwargs.pop('cand', {})
        else:
            reference_path = kwargs.pop('ref', '')
            candidate_path = kwargs.pop('cand', '')

# load caption data
            with open(reference_path, 'rb') as f:
                temp_ref = pickle.load(f)
            with open(candidate_path, 'rb') as f:
                cand = pickle.load(f)

首先判断当前目标是否存活,如果存活则从kwargs中移出ref和cand 赋值给局部变量temp_ref和cand

如果不存在,则将关联路径设置为ref并将候选路径设置为cand,并读取相应路径的文件,调用pickle.load函数,实现原python对象的重构

# make dictionary
        hypo = {}
        ref = {}
        i = 0
        for vid, caption in cand.items():
            hypo[i] = [caption]
            ref[i] = temp_ref[vid]
            i += 1

这部分代码的主要作用是构建字典,计算出人工评价, 初始化三个空集合分别为hypo表示推测,ref表示实际结果,i表示索引

遍历cand中的每个项,获得vid和caption,存放在hypo和ref集合中,集合可自动实现去重,获取到所有不重复的字符集合。

# compute scores
        final_scores = self.score(ref, hypo)
        #"""
        # print out scores
        print ('Bleu_1:\t', final_scores['Bleu_1'])
        print ('Bleu_2:\t', final_scores['Bleu_2'])
        print ('Bleu_3:\t', final_scores['Bleu_3'])
        print ('Bleu_4:\t', final_scores['Bleu_4'])
        print ('METEOR:\t', final_scores['METEOR'])
        print ('ROUGE_L:', final_scores['ROUGE_L'])
        #print ('CIDEr:\t', final_scores['CIDEr'])
        # """

if get_scores:
            return final_scores

调用self对象的score函数计算出最终结果存放进final_score数组中,分别打印出最后的结果,包括BLUE,METEOR,ROUGE_L,CIDEr

if __name__ == '__main__':
    '''
    cands = {'generated_description1': 'how are you', 'generated_description2': 'Hello how are you'}
    refs = {'generated_description1': ['what are you', 'where are you'],
           'generated_description2': ['Hello how are you', 'Hello how is your day']}
    '''
    with open(sys.argv[1]) as f:
      cands = {'generated_description'+str(i):x.strip() for i,x in enumerate(f.readlines())}
    with open(sys.argv[2]) as f:
      refs = {'generated_description'+str(i):[x.strip()] for i,x in enumerate(f.readlines())}
    x = Evaluate()
    x.evaluate(live=True, cand=cands, ref=refs)

在主函数中载入相关数据集,调用evaluate函数,得出最后的评估结果,并对不同模型的结果进行比较 ,最终结果如下图所示

实验中将图变换网络替换为图注意力网络,将其模型表示为GAT;将不使用知识图信息而只使用图中实体的网络表示为EntityWriter。另外与baseline方法Rewriter做了比较。根据此表数据可见,利用了知识图信息的GraphWriter和GAT模型整体结果好于另外两个未考虑图信息的模型。另外GraphWriter模型结果好于GAT模型结果,说明图变换网络的效果要好于图注意力网络。

知识图到文本的生成(十一)相关推荐

  1. 知识图到文本的生成——叁

    2021SC@SDUSC 上篇博客我们提到了RawField类除了__init__函数外,还内含了两个函数,分别为preprocess(self, x)和process(self, batch, *a ...

  2. 知识图到文本的生成(六)

    2021SC@SDUSC 本文将就数据迭代部分和数据集产生部分的代码进行详细分析 首先我们对mkiters函数进行分析,详细分析如下 args = self.args     train = data ...

  3. 图形化文本编辑器_使用图形转换器从知识图生成文本

    图形化文本编辑器 A summary of the structure 结构总结 This 2019 paper is a bit of an anachronism, given the speed ...

  4. 从知识图谱到文本:结合局部和全局图信息生成更高质量的文本

    论文标题: Modeling Global and Local Node Contexts for Text Generation from Knowledge Graphs 论文作者: Leonar ...

  5. 强烈推荐十大NLP主流经典项目:预训练BERT、知识图谱、智能问答、机器翻译、文本自动生成等...

    自然语言处理技术近几年发展非常快,像BERT.GPT-3.图神经网络.知识图谱等技术被大量应用于项目实践中. 今年大厂的NLP面试中对项目方面的考察深度也随之提升了很多,经常会被面试官揪着细节一步一步 ...

  6. 根据文本自动生成UML时序图(draw.io格式)

    1. 前言 已有一些工具可以根据文本自动生成UML时序图,如PlantUML(https://plantuml.com/zh/).Mermaid(https://mermaid-js.github.i ...

  7. 《预训练周刊》第11期:全球最大智能模型“悟道2.0”重磅发布、谷歌KELM:将知识图与语言模型预训练语料库集成...

    No.11 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第11期&l ...

  8. 论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模

    笔记整理 | 韩振峰,天津大学硕士 链接:https://arxiv.org/pdf/1911.02707.pdf 动机 人类对话自然地围绕相关概念发展,并分散到多跳概念.本文提出了一种新的会话生成模 ...

  9. 生物医学文献知识图创建的关系提取

    生物医学文献知识图创建的关系提取 Paper: https://arxiv.org/pdf/2201.01647 摘要 生物医学研究正以如此指数级的速度增长,以致于科学家.研究人员和从业人员不再能够处 ...

  10. 论文浅尝 | 常识问答中的忠诚知识图解释

    笔记整理:邹铭辉,天津大学硕士,研究方向为知识图谱 链接:https://aclanthology.org/2022.emnlp-main.743 动机 知识图谱通常被用作常识问答的信息来源,同时也可 ...

最新文章

  1. java23中设计模式——结构模式——Composite(组合)
  2. 表格内部的文本对齐类
  3. [ ArcGIS for Server 10.1 系列 ] - 重新创建Site
  4. Delphi 7 定义你自己的事件
  5. 【李宏毅2020 ML/DL】P62-65 More about Auto-encoder
  6. Linux驱动设置log打印开关
  7. 产品经理的常见分类和术语
  8. 在线验证18位身份证
  9. [经验教程]拼多多退店保证金多久到账 拼多多退店正确操作35天内保证金到账
  10. 耳机插头3.5与2.5三段与四段i版与n版等详解
  11. Shader toy (顺手写两个Gyro)(纯代码写3D)
  12. Java提供的网络支持
  13. 网络:以太网类型(EthernetType)整理
  14. PyTorch 自然语言处理(Natural Language Processing with PyTorch)翻译完成 | ApacheCN
  15. 我国长征系列航天飞船剖解
  16. 英特尔第十代处理器为什么不支持win7_新硬件不支持Win7怎么回事? 新CPU仅兼容Win10的原因解析...
  17. 2017.0311.数字电路与系统-数据选择器分配器的理解
  18. BeautifulSoup抓取百思不得姐图片
  19. W3C代码标准规范--
  20. 不盲目选择定购直播系统,不要单看价格——云豹直播分析

热门文章

  1. 【狂神】JavaScript笔记
  2. KMplayer字幕
  3. 「游戏」c++贪吃蛇1.1
  4. tp框架获取服务器信息,tp5获取服务器地址
  5. 百度网盘 linux 上传文件大小限制,Linux 下载百度网盘大文件的方法
  6. MHL接口是一种废品接口
  7. Yara、Snort和Sigma规则
  8. expect巡检服务器_linux 巡检报告
  9. 常用的vim命令,主要是写给宝贝儿方便工作查看的
  10. bzoj 2109: [Noi2010]Plane 航空管制 贪心+拓扑排序