цифровой идентификатор объекта с обратным поиском, заданная таблица цитат?

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

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

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

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

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

3 ответов


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

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

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


Ниже приведена форма xml для запроса crossref, поисковые термины включают: 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>

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

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


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

загрузкой CSV

Я нашел еще одно перспективное решение, которое не работает на практике как в

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

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

XML-запроса

основываясь на ответе Брайана Диггса, здесь попытка это делает 95% работы-к написанию запроса на основе xml, у него все еще есть несколько ошибок, которые требуют некоторого удаления с помощью sed. Но самая большая проблема, что мой "сеанс тайм-аут", когда запрос был отправлен.

синтаксис xml включает в себя возможность использования нечеткого сопоставления.

в doiquery.xml содержит текст шаблона в ответе @Brians; цитаты.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. введите columnames в поле идентификатор элемента, в
  2. "документ" в поле DocID
  3. "запрос" в поле RowID
  4. копировать / вставить csv в "входной файл CSV".
  5. Нажмите Кнопку "Конвертировать"

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