R语言 给定一个引文表,如何反向查找每个引文的数字对象标识符?

i34xakig  于 2022-12-06  发布在  其他
关注(0)|答案(4)|浏览(121)

我有一个引文表,其中包括第一作者的姓氏,标题,期刊,年份和每个引文的页码。
我已经在Google Docs上发布了表的前几行;它还可以CSV file的形式提供。(请注意,有些记录 * 没有 * DOI。)
我希望能够查询这些引文的DOI。对于标题,如果查询可以处理某种形式的模糊匹配就最好了。
我该怎么做?
该表目前在MySQL中,但以CSV文件开始和结束就足够了,或者,因为我主要使用R,所以以R Dataframe 结束就足够了。

w7t8yxp5

w7t8yxp51#

我还不知道有什么完整的包或函数可以做到这一点,但这是我将使用的通用方法。Crossref DOI注册机构提供了一种基于Web的方法,用于从https://www.crossref.org/guestquery/的书目数据确定DOI。
在该页上有几种不同的搜索方式,包括最后一种采用XML格式的搜索。该页包含有关如何创建适当XML的信息。您需要通过HTTP提交XML(通过拆开该页来确定详细信息,以找出表单目标和需要包含的任何附加信息),然后解析出响应。
此外,您还需要验证以自动方式执行此操作不会以任何方式违反网站的服务条款。
以下是交叉引用自由DOI查找的XML表单,其中可搜索的术语包括article_titleauthoryearjournal_titlevolumefirst_page

<?xml version = "1.0" encoding="UTF-8"?>
<query_batch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xmlns="http://www.crossref.org/qschema/2.0"
  xsi:schemaLocation="http://www.crossref.org/qschema/2.0 http://www.crossref.org/qschema/crossref_query_input2.0.xsd">
<head>
   <email_address>test@crossref.org</email_address>
   <doi_batch_id>test</doi_batch_id>
</head>
<body>
  <query enable-multiple-hits="false|exact|multi_hit_per_rule|one_hit_per_rule|true"
            list-components="false"
            expanded-results="false" key="key">
    <article_title match="fuzzy"></article_title>
    <author search-all-authors="false"></author>
    <component_number></component_number>
    <edition_number></edition_number>
    <institution_name></institution_name>
    <isbn></isbn>
    <issn></issn>
    <volume></volume>
    <issue></issue>
    <year></year>
    <first_page></first_page>
    <journal_title></journal_title>
    <proceedings_title></proceedings_title>
    <series_title></series_title>
    <volume_title></volume_title>
    <unstructured_citation></unstructured_citation>
  </query>
</body>
</query_batch>
xmakbtuz

xmakbtuz2#

这是一个开放的问题。有更好的和更坏的方法来解决它。从阅读问题的Karen Coyle’s summary开始。那篇文章结尾的参考书目非常好。
简而言之,量化两个书目记录之间的相同性是一个困难的问题,围绕这个主题已经做了大量的机器学习研究。

ryevplcw

ryevplcw3#

这里有两个选项

CSV上传

我发现了另一个很有前途的解决方案,它在实践中不如直接上传CSV并在http://www.crossref.org/stqUpload/执行文本查询那么好用。
然而,250个查询中只有18个(≈7%)返回DOI。

XML查询

基于answer by Brian Diggs,这里是一个用R编程语言编写基于XML的查询的尝试,它完成了95%的工作。它仍然有一些bug需要使用sed来消除。但是最大的问题是我在提交查询时遇到的“会话超时”错误。
XML语法包括使用模糊匹配的选项。
doiquery.xml文件包含来自Brian’s answer的模板文本;上面链接了citations.csv文件。

library(XML)
doiquery.xml <- xmlTreeParse('doiquery.xml')

query <- doiquery.xml$doc$children$query_batch[["body"]]

citations <- read.csv("citations.csv")

new.query <- function(citation, query = query){
  xmlValue(query[["author"]]) <- as.character(citation$author)
  xmlValue(query[["year"]]) <- as.character(citation$year)
  xmlValue(query[["article_title"]][["text"]]) <- citation$title
  xmlValue(query[["journal_title"]]) <- citation$journal
  return(query)
}

for (i in 1:nrow(citations)){
  q <- addChildren(q, add.query(citations[i,]))
}
axml <- addChildren(doiquery.xml$doc$children$query_batch, q )

saveXML(axml, file = 'foo.xml')

CSV到XML转换器

Creativyst软件提供基于Web的CSV to XML converter
需要采取的必要步骤如下。
1.在 ElementIDs 字段中输入列名。
1.在 DocID 字段中输入document
1.在 RowID 字段中输入query
1.将CSV文件复制并粘贴到 * 输入CSV文件 * 字段中。
1.单击“转换”。
另请参阅相关问题:Shell script to parse CSV to an XML query?

vhmi4jdf

vhmi4jdf4#

转贴自学术交流
2022年更新:对我来说最简单的是使用网站,在那里你可以复制和粘贴你的参考资料:https://search.crossref.org/references
我还研究了一些python库,以便与crossref REST API进行交互,例如:
https://pypi.org/project/habanero/
https://gitlab.com/crossref/crossref_commons_py
这些库总体上很容易使用,但如何〉基于标题获得DOI并不是很直接,而且对于这个〉任务也没有真正的好例子。

相关问题