Domanda

Ho una tabella di citazioni che include il cognome del primo autore, il titolo, il diario, l'anno e i numeri di pagina per ogni citazione.

Ho pubblicato le prime linee del tavolo su Google Docs o il Versione CSV (non tutti i record hanno un DOI) .

Vorrei essere in grado di interrogare l'identificativo dell'oggetto digitale per ciascuna di queste citazioni.Per i titoli, sarebbe meglio se la query possa gestire " corrispondenza fuzzy ".

Come posso fare questo?

La tabella è attualmente in MySQL, ma sarebbe sufficiente iniziare e terminare con un file .csv (apprezzerei una risposta che passa dall'inizio alla fine) (o, dal momento che lo scopo di utilizzare per lo più R, un frame di dati R).

È stato utile?

Soluzione 3

Ecco due opzioni

Carica CSV

Ho trovato un'altra soluzione promettente che non funziona anche in pratica come in

Crossref consente di caricare direttamente il CSV collegato, quindi esegue una query di testo qui: http:// www.crossref.org/stqupload/

Tuttavia, solo 18 delle 250 query (~ 7%) restituirono un doi.

query xml

Sulla base della risposta di Brian Diggs, qui un tentativo che fa il 95% del lavoro - per scrivere la query basata su XML, ha ancora alcuni bug che richiedono una certa eliminazione utilizzando sed. Ma il più grande problema che la mia "sessione è scaduta" quando la query è stata presentata.

La sintassi XML include un'opzione per utilizzare la corrispondenza fuzzy.

The Dhiquery.xml contiene il testo del modello in @brians Risposta; Le citazioni.csv è collegata sopra.

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')
.

Convertitore CSV a XML

Creativyst Software fornisce un Web CSV a XML convertitore.

Passaggi:

    .
  1. Inserisci i paralumi nel campo Elementid,
  2. "Documento" nel campo Docid
  3. "Query" nel campo Rowid
  4. copia / incolla CSV in "Input CSV File".
  5. Fai clic su Converti
  6. Inoltre, consulta questa domanda correlata: Script Shell per analizzare CSV a una query XML?

Altri suggerimenti

Non conosco pacchetti o funzioni completi che lo fanno già, ma questo è l'approccio generale che userei. Crossref.org offre un approccio basato sul web per determinare un DOI dai dati bibliografici su http://www.crossref.org/ Guesttery /

In quella pagina sono diversi modi per cercare, incluso l'ultimo che prende una ricerca formattata XML. La pagina include informazioni su come creare l'XML appropriato. Avresti bisogno di inviare l'XML su HTTP (determinare i dettagli prelevando a parte la pagina per capire le destinazioni del modulo e eventuali informazioni aggiuntive che devono essere incluse) e analizza la risposta.

Inoltre, è necessario verificare che farlo in modo automatico non violi i termini del servizio del sito web in alcun modo.


.

Di seguito è riportato il modulo XML per The CrossRef QuestQuery, i termini ricercabili includono: articolo_title, autore, anno, journal_title, volume e prima pagina:

<?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>
.

Questo è un problema aperto.Ci sono modi migliori e peggiori per attaccarlo ma, iniziando leggendo Riassunto di Karen Coyle di questo problema.La bibliografia ha attaccato che all'articolo pure è eccellente .

In breve, il problema della quantificazione della compensazione tra due record bibliografici è dura e una sostanziale ricerca della macchina di apprendimento della macchina che ha centrato attorno a questo argomento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top