我有一个引用表,其中包括第一作者的姓氏,每个引文的标题,期刊,年份和页码。
我已在google docs或csv version上发布了表格的前几行(并非所有记录都有doi)
我希望能够查询每个引文的数字对象标识符。对于标题,最好是查询可以处理“模糊匹配”。
我该怎么做?
该表目前在MySQL中,但以.csv文件开始和结束就足够了(我希望从开始到结束都能得到答案)(或者,因为我主要使用R,一个R数据帧) )。
答案 0 :(得分:5)
我不知道有任何完整的软件包或函数已经执行此操作,但这是我将使用的一般方法。 crossref.org提供了一种基于网络的方法,用于根据http://www.crossref.org/guestquery/
的书目数据确定DOI在该页面上有几种不同的搜索方式,包括最后一种采用XML格式搜索的方式。该页面包含有关如何创建适当的XML的信息。您需要通过HTTP提交XML(通过挑选页面以确定表单目的地以及需要包含的任何其他信息来确定详细信息),然后解析响应。
此外,您需要验证以自动方式执行此操作不会以任何方式违反网站的服务条款。
以下是crossref questquery的xml表单,可搜索的术语包括:article_title,author,year,journal_title,volume和first 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>
答案 1 :(得分:4)
这是一个悬而未决的问题。有更好和更糟的方法来攻击它,但首先要阅读Karen Coyle's summary这个问题。参考文献附带的文章也是优秀。
简而言之,量化两个书目记录之间相同性的问题很难,并且大量的机器学习研究围绕着这个主题。
答案 2 :(得分:2)
我找到了另一个有希望的解决方案,在实践中不如
那样有效CrossRef允许您直接上传链接的csv,然后在此处执行文本查询:http://www.crossref.org/stqUpload/
然而,250个查询中只有18个(约7%)返回了一个doi。
根据Brian Diggs的回答,这里尝试95%的工作 - 编写基于xml的查询,它仍然有一些需要使用sed
进行删除的错误。但是在提交查询时我的“会话超时”的最大问题。
xml语法包含使用模糊匹配的选项。
doiquery.xml包含@Brians答案中的模板文本; 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')
Creativyst软件提供基于网络的CSV to XML转换器。
步骤: