Извлечение аннотации / полного текста из научной литературы с указанием DOI или заголовка
Существует довольно много инструментов для извлечения текста из файлов PDF [1-4]. Однако проблема с большинством научных работ заключается в том, что доступ к PDF-файлам напрямую затруднен в основном из-за необходимости платить за них. Существуют инструменты, которые обеспечивают легкий доступ к информации, такой как метаданные или bibtex, помимо информации о bibtex [5-6]. То, что я хочу, это сделать шаг вперед и выйти за рамки только мета-данных:
Предполагая, что нет прямого доступа к файлам PDF публикаций, есть ли способ получить хотя бы реферат научной статьи с учетом DOI или названия статьи? В результате моих поисков я обнаружил, что были предприняты некоторые попытки [7] для аналогичной цели. Кто-нибудь знает сайт / инструмент, который может помочь мне получить / извлечь реферат или полный текст научных работ? Если таких инструментов нет, не могли бы вы дать мне несколько советов, как мне поступить после решения этой проблемы?
Спасибо
[1] http://stackru.com/questions/1813427/extracting-information-from-pdfs-of-research-papers
[2] https://stackru.com/questions/6731735/extracting-the-actual-in-text-title-from-a-pdf
[3] http://stackru.com/questions/6731735/extracting-the-actual-in-text-title-from-a-pdf?lq=1
[4] http://stackru.com/questions/14291856/extracting-article-contents-from-pdf-magazines?rq=1
[5] https://stackru.com/questions/10507049/get-metadata-from-doi
[6] https://github.com/venthur/gscholar
[7] https://stackru.com/questions/15768499/extract-text-from-google-scholar
4 ответа
Вы можете взглянуть на службу перекрестного цитирования и обработки данных (tdm) ( http://tdmsupport.crossref.org/). Эта организация предоставляет RESTful API бесплатно. Есть более 4000 издателей, вносящих свой вклад в этот сервис TDM. Вы можете найти несколько примеров по ссылке ниже:
https://github.com/CrossRef/rest-api-doc/blob/master/rest_api_tour.md
Но привести очень простой пример:
Если вы перейдете по ссылке
http://api.crossref.org/works/10.1080/10260220290013453
вы увидите, что помимо некоторых базовых метаданных, есть два других метаданных, а именно: лицензия и ссылка, где первый дает, под какую лицензию предоставляется данная публикация, а второй дает URL полного текста. В нашем примере вы увидите в метаданных лицензии, что лицензия является creativecommons (CC), что означает, что она может свободно использоваться для целей tdm. При поиске публикаций с лицензиями CC в CrossRef вы можете получить доступ к сотням тысяч публикаций с их полными текстами. Из моего последнего исследования я могу сказать, что публикация на хиндави - самый дружелюбный издатель. Даже они предоставляют более 100 тысяч публикаций с лицензией CC. И последнее, что полные тексты могут быть предоставлены в формате xml или pdf. Для этих форматов XML очень структурированы, поэтому легко извлекать данные.
Подводя итог, вы можете автоматически получить доступ ко многим полным текстам через службу перекрестной ссылки tdm, используя их API и просто написав запрос GET. Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать.
Приветствия.
Crossref может стоить проверить. Они позволяют участникам включать тезисы в метаданные, но это необязательно, поэтому это не полный охват. Согласно их службе поддержки, когда я спросил, у них есть тезисы для 450 000 DOI, зарегистрированных на июнь 2016 года.
Если в их метаданных существует реферат, вы можете получить его в формате UNIXML. Вот один конкретный пример:
curl -LH "Accept:application/vnd.crossref.unixref+xml" http://dx.crossref.org/10.1155/2016/3845247
Использование curl (работает в моем Linux):
curl http://api.crossref.org/works/10.1080/10260220290013453 2>&1 | # doi after works
grep -o -P '(?<=abstract":").*?(?=","DOI)' | # get text between abstract":" and ","DOI
sed -E 's/<jats:p>|<\\\/jats:p>/\n/g' | # substitute paragraph tags
sed 's/<[^>]*>/ /g' # remove other tags
# add "echo" to show unicode characters
echo -e $(curl http://api.crossref.org/works/10.1155/2016/3845247 2>&1 | # doi after works
grep -o -P '(?<=abstract":").*?(?=","DOI)' | # get text between abstract":" and ","DOI
sed -E 's/<jats:p>|<\\\/jats:p>/\n/g' | # substitute paragraph tags
sed 's/<[^>]*>/ /g') # remove other tags
используя R:
library(rcrossref)
cr_abstract(doi = '10.1109/TASC.2010.2088091')
Если статья находится на PubMed (которая содержит около 25 миллионов документов), вы можете использовать пакет Python Entrez для получения тезисов.