首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何搜索同时引用了两篇特定文章的论文?

如何搜索同时引用了两篇特定文章的论文?

作者头像
blmoistawinde
发布2021-12-06 14:31:57
7840
发布2021-12-06 14:31:57
举报

在科研中,有时看到两个研究类似问题的工作,会希望看看是否有后续工作对二者进行了比较和评价。比如,我听说XLNetRoBERTa是两个很牛的预训练模型,但不知道他们孰强孰弱。那我们就想找找同时引用了它们的论文,看看别人是怎么评价比较他们的?然而,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)
paper1.keys()
dict_keys(['abstract', 'arxivId', 'authors', 'citationVelocity', 'citations', 'corpusId', 'doi', 'fieldsOfStudy', 'influentialCitationCount', 'isOpenAccess', 'isPublisherLicensed', 'is_open_access', 'is_publisher_licensed', 'numCitedBy', 'numCiting', 'paperId', 'references', 'title', 'topics', 'url', 'venue', 'year'])

可以看到,这里包括了论文相关的很多信息,这里我们主要专注于引用相关的内容。

paper1["title"]
'XLNet: Generalized Autoregressive Pretraining for Language Understanding'
paper1["influentialCitationCount"]
462
len(paper1["citations"])
2616
paper1["citations"][0]
{'arxivId': None,
 'authors': [{'authorId': '1519065273', 'name': 'Jia-ying Zhang'},
  {'authorId': '3021771', 'name': 'Z. Zhang'},
  {'authorId': '49724519', 'name': 'H. Zhang'},
  {'authorId': '148431487', 'name': 'Z. Ma'},
  {'authorId': '2075311652', 'name': 'Qi Ye'},
  {'authorId': '145848393', 'name': 'P. He'},
  {'authorId': '2613015', 'name': 'Yangming Zhou'}],
 'doi': '10.1016/j.jbi.2020.103628',
 'intent': [],
 'isInfluential': False,
 'paperId': '0031e24987fcdb8cfb0a2b842417c1d0a43a5d06',
 'title': 'From electronic health records to terminology base: A novel knowledge base enrichment approach',
 'url': 'https://www.semanticscholar.org/paper/0031e24987fcdb8cfb0a2b842417c1d0a43a5d06',
 'venue': 'J. Biomed. Informatics',
 'year': 2021}
# RoBERTa
paper2 = sch.paper('arXiv:1907.11692', timeout=2)
paper2["title"]
'RoBERTa: A Robustly Optimized BERT Pretraining Approach'
paper2["influentialCitationCount"]
1107

现在,有了两篇文章各自的信息,我们就来找到引用它们的文章的交集。

由于两篇文章都很有影响力,引文很多,我们还可以利用其中isInfluential的标签,帮助我们筛选出其中有影响力的文章来进行考察。

co_citations = list(set(x['title'] for x in paper1['citations'] if x['isInfluential']) & set(x['title'] for x in paper2['citations'] if x['isInfluential']))
len(co_citations)
158
print("\n".join(co_citations[:10]))
Exploring Discourse Structures for Argument Impact Classification
STEP: Sequence-to-Sequence Transformer Pre-training for Document Summarization
Parameter-Efficient Transfer Learning with Diff Pruning
Maximal Multiverse Learning for Promoting Cross-Task Generalization of Fine-Tuned Language Models
Defending against Backdoor Attacks in Natural Language Generation
Transformers to Learn Hierarchical Contexts in Multiparty Dialogue for Span-based Question Answering
Improving BERT Fine-Tuning via Self-Ensemble and Self-Distillation
AR-LSAT: Investigating Analytical Reasoning of Text
memeBot: Towards Automatic Image Meme Generation
ARES: A Reading Comprehension Ensembling Service

大功告成,现在我们就可以在上面的文献里研究自己感兴趣的问题啦。希望这个小技巧能够在诸位工作磕盐中带来帮助~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档