在科研中,有时看到两个研究类似问题的工作,会希望看看是否有后续工作对二者进行了比较和评价。比如,我听说XLNet和RoBERTa是两个很牛的预训练模型,但不知道他们孰强孰弱。那我们就想找找同时引用了它们的论文,看看别人是怎么评价比较他们的?然而,Google Scholar这类的流行的搜索引擎并不直接提供找到同时引用了两篇特定文章A,B的论文,这样的搜索功能,那么我们怎么实现这一点呢?
在StackExchange的讨论中,高赞回答提供的解决方案是,从A的引文中,再搜索B的标题,然后看看得到的结果。因为一般来说引用了B的文章里应该会包括B的标题,所以这样能够找到一些符合要求的文章。不过因为这样的搜索不是精确的,也会有一些包含了与B很像的一些关键词的文章混入,总体来说不是很精确。
还有另一种方法,我们可以得到A和B各自的引文,然后再取交集。如果两篇文章的引文不多,那么我们人工比较也就能够很快确定目标了。但是如果两篇文章的引文很多,那么就需要人工整理和比较,工作量非常大。
作为一个程序员,这样大批量的问题,当然不能自己手工去做啦,我们可以编程自动解决这个问题。
这里我们用到一个好东西,Semantic Scholar提供的论文信息API。我们可以通过提供论文的标识,从其数据库中找到相关的信息,其中就包括引文,然后我们就可以实现上述思路了。
现在,我们就以XLNet(arXiv:1906.08237)和RoBERTa(arXiv:1907.11692)为例,找到同时引用了它们的论文:
import semanticscholar as sch
# XLNet
paper1 = sch.paper('arXiv:1906.08237', timeout=2