Identificador de objeto digital de pesquisa reversa dada tabela de citações?
-
14-12-2019 - |
Pergunta
Tenho uma tabela de citações que inclui o sobrenome do primeiro autor, o título, o periódico, o ano e os números das páginas de cada citação.
Eu postei as primeiras linhas da tabela em documentos Google, ou o versão csv (nem todos os registros têm um doi)
Gostaria de poder consultar o identificador do objeto digital para cada uma dessas citações.Para os títulos, seria melhor se a consulta pudesse lidar com "correspondência difusa".
Como posso fazer isso?
A tabela está atualmente no MySQL, mas seria suficiente começar e terminar com um arquivo .csv (eu apreciaria uma resposta que fosse do início ao fim) (ou, como uso R principalmente, um quadro de dados R).
Solução 3
Aqui estão duas opções
Carregamento de CSV
Encontrei outra solução promissora que não funciona tão bem na prática como na
CrossRef permite que você carregue o csv vinculado diretamente e, em seguida, execute uma consulta de texto aqui: http://www.crossref.org/stqUpload/
No entanto, apenas 18 das 250 consultas (~7%) retornaram um doi.
Consulta XML
Com base na resposta de Brian Diggs, aqui está uma tentativa que faz 95% do trabalho - para escrever a consulta baseada em xml, ela ainda possui alguns bugs que exigem alguma exclusão usando sed
.Mas o maior problema é que minha "sessão expirou" quando a consulta foi enviada.
a sintaxe xml inclui uma opção para usar correspondência difusa.
o doiquery.xml contém o texto do modelo na resposta do @Brians;o citations.csv está vinculado acima.
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')
Conversor CSV para XML
O software Creativyst fornece uma solução baseada na web CSV para XML conversor.
Passos:
- Insira os nomes das colunas no campo ElementID,
- "documento" no campo DocID
- "consulta" no campo RowID
- Copie/cole csv em "Arquivo CSV de entrada".
- Clique em Converter
Além disso, veja esta pergunta relacionada: Script de shell para analisar CSV em uma consulta XML?
Outras dicas
Não conheço nenhum pacote ou função completo que já faça isso, mas esta é a abordagem geral que eu usaria.crossref.org oferece uma abordagem baseada na web para determinar um DOI a partir de dados bibliográficos em http://www.crossref.org/guestquery/
Nessa página existem várias maneiras diferentes de pesquisar, incluindo a última que faz uma pesquisa formatada em XML.A página inclui informações sobre como criar o XML apropriado.Você precisaria enviar o XML por HTTP (determinando os detalhes separando a página para descobrir os destinos do formulário e quaisquer informações adicionais que precisem ser incluídas) e então analisar a resposta.
Além disso, você precisaria verificar se fazer isso de forma automatizada não viola de forma alguma os termos de serviço do site.
Abaixo está o formulário xml para a consulta crossref, os termos pesquisáveis incluem:título_do_artigo, autor, ano, título_da revista, volume e primeira página:
<?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>
Este é um problema aberto.Há maneiras melhores e piores de atacá-lo, mas, comece lendo resumo de Karen Coyle desse problema.A bibliografia anexada que no artigo também é excelente .
Em suma, o problema de quantificar a mesmice entre dois registros bibliográficos é difícil, e uma quantidade substancial de aprendizagem de máquina centrou-se em torno desse tópico.