цифровой идентификатор объекта с обратным поиском, заданная таблица цитат?
У меня есть таблица цитат, которая включает фамилию первого автора, название, журнал, год и номера страниц для каждой цитаты.
Я написал первые несколько строк таблицы на 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 конвертер.
действия:
- введите columnames в поле идентификатор элемента, в
- "документ" в поле DocID
- "запрос" в поле RowID
- копировать / вставить csv в "входной файл CSV".
- Нажмите Кнопку "Конвертировать"
кроме того, см. Этот связанный вопрос:сценарий оболочки для анализа CSV в XML-запрос?