Bootstrapping不需要标注好实体和关系的句子作为训练集,不用训练分类器。Bootstrapping算法的输入是拥有某种关系的少量实体对,作为种子,输出是更多拥有这种关系的实体对。不是找到更多的关系,而是发现拥有某种关系的更多新实体对。

思路

实体对 ==》 模板 ==》 新实体对 ==》 新模板 ==》 。。。

  • “创始人”是一种关系,如果我们已经有了一个小型知识图谱,里面有3个表达这种关系的实体对:(严定贵,嘉银金科),(马云,阿里巴巴),(雷军,小米)。

  • 第一步:在一个大型的语料集中去找包含某一实体对(3个中的任意1个)的句子,全部挑出来。
    比如:严定贵于2011年创立了嘉银金科;严定贵是嘉银金科的创始人;在严定贵董事长的带领下,嘉银金科赴美上市成功。

  • 第二步:归纳实体对的前后或中间的词语,构造特征模板。
    比如:A 创立了 B;A 是 B 的创始人;在A 的带领下,B。

  • 第三步:用特征模板去语料集中寻找更多的实体对,然后给所有找到的实体对打分排序,高于阈值的实体对就加入到知识图谱中,扩展现有的实体对。
    比如:马化腾创立了腾讯;

  • 第四步:回到第一步,进行迭代,得到更多模板,发现更多拥有该关系的实体对。
    比如:(马化腾,腾讯)实体对,在语料集中,又找到了”马化腾–新关系–腾讯“,这样特征模板又增加了。

Bootstrapping的缺点

  • 一是语义漂移问题,有些关系是跟时间有关的,比如夫妻,股东。

  • 二是查准率会不断降低而且查全率太低,因为这是一种迭代算法,每次迭代准确率都不可避免会降低,80%—->60%—->40%—->20%…。所以最后发现的新实体对,还需要人工校验。

  • 顺带提一下,远程监督有一对多关系的问题。

Reference

1、 https://cloud.tencent.com/developer/article/1639705

打赏

微信 微信 支付宝 支付宝
万分感谢