arXiv 是一个线上学术论文库,主要收录物理学、数学、计算机科学与生物学等领域的研究论文,用户可以通过关键词搜索或分类浏览找到感兴趣的论文。作为一个权威的学术资源,arXiv 已成为科研工作者查阅最新研究成果和交流学术观点的重要平台。
在开始爬取之前,我们需要进行一些准备工作。
安装依赖库
pip install arxiv
pip install beautifulsoap4
pip install requests
确定爬取的论文关键词
利用arxiv包,以Natural Language Processing为关键词,提交时间作为排序条件,获取最近提交的NLP领域最新的20篇论文。
arxiv_search = arxiv.Search(
query = "Natural Language Processing",
max_results = 20,
sort_by=arxiv.SortCriterion.SubmittedDate
)
获取论文的基础信息
通过代码获取论文的ID、标题、摘要、第一作者、发布时间、更新时间等信息。
for result in arxiv_search.results():
paper_id = result.get_short_id() # 文章id
paper_title = result.title # 文章标题
paper_url = result.entry_id # 文章url
paper_summary = result.summary.replace("\n", "") # 文章摘要需要剔除格式
paper_first_author = result.authors[0] # 文章的第一作者
publish_time = result.published.date() # 文章的发布时间
update_time = result.updated.date() # 文章的更新时间
获取论文的代码地址和github上stars
根据论文的id获取代码链接,并通过解析github链接获取代码仓库的stars数量,评估项目热度。
def get_paper_code_url(paper_id):
base_url = "https://arxiv.paperswithcode.com/api/v0/papers/"
code_url = base_url + paper_id
code_response = requests.get(code_url, verify=False).json()
if "official" in code_response and code_response[]:
github_code_url = code_response[]["url"]
return github_code_url
获取github上项目的stars数量
def get_stars(github_code_url):
try:
# requests访问github上代码仓库主页
code_html = requests.get(github_code_url, verify=False)
# 利用BeautifulSoup库解析主页,爬取stars
soup = BeautifulSoup(code_html.text, "html.parser")
# stargazers /network/members /watchers
a_stars = soup.find_all("a",
href=github_code_url.split("https://github.com")[-1]+"stargazers")
# 获取github上项目标星数
stars = a_stars[0].text.strip().split()[0]
except:
stars = 0
return stars
翻译论文的摘要
从Edge浏览器对一篇英文文章进行翻译时,按下F12获取鉴权与翻译的API,以及对应的headers和API的调用方式。
获取Edge浏览器的鉴权信息
def get_edge_token():
auth_url = "https://edge.microsoft.com/translate/auth"
auth_headers = {
"Content-Type": "text/plain; charset=utf-8"
}
Authorization = requests.get(auth_url, headers=auth_headers).text
return Authorization
向翻译API发送预检信息
调用Edge浏览器的翻译接口,需要发送options预检请求,开放API的POST方法,将浏览器中的options操作下的所有headers复制到请求的headers中
def url_option():
url = "https://api-edge.cognitive.microsofttranslator.com/translate?from=en&to=zh-CHS&api-version=3.0&includeSentenceLength=true"
headers = { 用户的headers }
# 发送请求
requests.options(url, headers=headers)
调用翻译API
def get_translate(token, body):
# 翻译API
translate_url =
translate_headers = {
"Authorization": "Bearer " + str(token),
"Content-Length": str(len(json.dumps(body, separators=(",", ":")))),
: "application/json",
"User-Agent": "浏览器代理"
}
res = requests.post(translate_url, headers=translate_headers, data=json.dumps(body, separators=(, )), verify=False)
return res
翻译内容
def translate_zh_to_en(contents):
trans_contents = []
trans_contents.append({"Text": contents})
token = get_edge_token() # 获取翻译API的使用Token
url_option() # 向API发送预检信息
# 翻译摘要内容
trans_text = get_translate(token, body=trans_contents).json()
return trans_text[0]["translations"][0]["text"]
翻译论文摘要
调用edge浏览器免费的英文翻译API,对摘要进行翻译:
# 翻译中文摘要
paper_zh_summary = translate_zh_to_en(paper_summary)
调用近期最火的大模型,对中文摘要进行总结归纳,得到通俗易懂的中文创新点。
大模型选择
本文选择清华大学开源的ChatGLM2-6B模型,直接利用内测网页chatglm.cn
进行创作。
设计模型的Prompt
你是一个科技领域的权威作家,你正在阅读一篇论文摘要:
{paper_zh_summary}
请从摘要中分点提取出论文的关键内容,要求提取文案简洁明了、清晰易懂,符合原意。
提取论文的关键内容
以经典的transformers论文为例,提取论文的关键点:
transformers 英文摘要:
The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration.
The best performing models also connect the encoder and decoder through an attention mechanism.
We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train.
Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles by over 2 BLEU.
On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature.
We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.
transformers 中文翻译摘要:
由于语言间的表达差异,简单中英文翻译后的中文摘要,无法直观看出论文的关键点:
主导序列转导模型基于编码器-解码器配置中的复杂递归或卷积神经网络。性能最好的模型还通过注意力机制连接编码器和解码器。我们提出了一种新的简单网络架构,即Transformer,它完全基于注意力机制,完全省去了递归和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上优越,同时更具并行性,并且需要更少的训练时间。我们的模型在WMT 2014英语到德语翻译任务中实现了28.4 BLEU,比现有的最佳结果有所改进,包括超过2个BLEU的合奏。在WMT 2014英法翻译任务中,我们的模型在八个GPU上训练了3.5天后,建立了一个新的单模型最先进的BLEU得分41.8,这只是文献中最佳模型训练成本的一小部分。我们通过将Transformer成功地应用于大量和有限训练数据的英语选区解析,表明它可以很好地推广到其他任务。
chatglm提取的transformers关键内容:
让我们将它送入chatglm模型,提取关键内容:
提出了一种新的简单网络架构:Transformer,完全基于注意力机制,省去了递归和卷积。
在两个机器翻译任务上的实验表明,Transformer 模型在质量上优越,具有更高的并行性和更少的训练时间。
在 WMT 2014 英语到德语翻译任务中,Transformer 模型实现了 28.4 BLEU,比现有最佳结果改进了 2 个 BLEU 以上。
在 WMT 2014 英法翻译任务中,Transformer 模型在八个 GPU 上训练了 3.5 天后,建立了一个新的单模型最先进的 BLEU 得分 41.8,训练成本远低于文献中最佳模型。
Transformer 模型成功应用于大量和有限训练数据的英语选区解析,表明其具有良好的推广能力。
在经过大模型归纳总结之后,这篇论文的创新点是不是一目了然了呢!
本文利用python构建一个自动爬取arXiv论文、翻译摘要,并利用大模型提取文章创新点的工具,你学会了吗?
赶快来关注公众号【AI财智通】,一起探索更多有趣又实用的科技技巧吧!