обратный просмотр цифрового идентификатора объекта с учетом таблицы цитат? - PullRequest
7 голосов
/ 15 марта 2012

У меня есть таблица цитат, которая включает фамилию первого автора, название, журнал, год и номера страниц для каждой цитаты.

Я разместил первые несколько строк таблицы на google docs или csv версии (не все записи имеют doi)

Я бы хотел иметь возможность запрашивать идентификатор цифрового объекта для каждого из этих цитирований. Для заголовков было бы лучше, если бы запрос мог обрабатывать «нечеткое соответствие».

Как я могу это сделать?

Таблица в настоящее время находится в MySQL, но было бы достаточно начать и закончить файлом .csv (я был бы признателен за ответ, который идет от начала до конца) (или, поскольку я в основном использую R, фрейм данных R) ).

Ответы [ 3 ]

5 голосов
/ 15 марта 2012

Я не знаю ни одного законченного пакета или функции, которые уже делают это, но это общий подход, который я бы использовал.crossref.org предлагает веб-подход для определения DOI из библиографических данных на http://www.crossref.org/guestquery/

. На этой странице есть несколько различных способов поиска, включая последний, который использует поиск в формате XML.Страница содержит информацию о том, как создать соответствующий XML.Вам нужно будет отправить XML по HTTP (определить детали, выбрав страницу, чтобы выяснить места назначения форм и любую дополнительную информацию, которая должна быть включена), а затем проанализировать ответ.

Кроме того, вынеобходимо убедиться, что выполнение этого в автоматическом режиме не нарушает условия обслуживания сайта в любом случае.


Ниже приведена форма xml для квест-запроса перекрестной ссылки. К поисковым терминам относятся: article_title, автор, год, journal_title, том и первая страница:

<?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>
4 голосов
/ 27 марта 2012

Это открытая проблема. Есть лучшие и худшие способы атаковать его, но начните с прочтения резюме Карен Койл этой проблемы. Библиография прилагается, что в статье также отлично .

Короче говоря, проблема количественного определения сходства между двумя библиографическими записями является сложной, и значительное количество исследований в области машинного обучения сосредоточено вокруг этой темы.

2 голосов
/ 21 марта 2012

Вот два варианта

Загрузка CSV

Я нашел другое многообещающее решение, которое не так хорошо работает на практике, как в

CrossRef позволяет загружать связанный CSV напрямую, а затем выполняет текстовый запрос здесь: http://www.crossref.org/stqUpload/

Однако только 18 из 250 запросов (~ 7%) вернули doi.

XML-запрос

Основываясь на ответе Брайана Диггса, здесь сделана попытка, которая выполняет 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')

Конвертер CSV в XML

Программное обеспечение Creativyst предоставляет конвертер CSV в XML с веб-интерфейсом.

шаги:

  1. Введите названия столбцов в поле ElementID,
  2. «документ» в поле DocID
  3. «запрос» в поле RowID
  4. Копирование / вставка CSV в «Входной файл CSV».
  5. Нажмите Преобразовать

Также см. Этот связанный вопрос: Сценарий оболочки для анализа CSV-запроса в XML?

...