8

各引用の最初の著者の姓、タイトル、ジャーナル、年、およびページ番号を含む引用の表があります。

表の最初の数行をGoogle Docsに投稿しました。また、 CSV ファイルの形式でも入手できます。(一部のレコードにはDOIがないことに注意してください。)

これらの引用ごとに DOI を照会できるようにしたいと考えています。タイトルについては、クエリが何らかの形式のファジー マッチングを処理できれば最適です。

これどうやってするの?

テーブルは現在MySQLにありますが、CSVファイルで開始および終了するか、Rを主に使用しているため、Rデータフレームで十分です。(最初から最後まで答えていただければ幸いです。)

4

3 に答える 3

5

これは未解決の問題です。それを攻撃するには、より良い方法と悪い方法があります。Karen Coyle による問題の要約を読むことから始めます。その記事の最後にある参考文献は優れています。

要するに、2 つの書誌レコード間の同一性を定量化する問題は困難であり、このトピックに関してかなりの量の機械学習研究が行われてきました。

于 2012-03-27T01:07:37.833 に答える
5

これを行う完全なパッケージや機能についてはまだ知りませんが、これは私が使用する一般的なアプローチです。Crossref DOI 登録機関は、 https : //www.crossref.org/guestquery/で書誌データから DOI を決定するための Web ベースのアプローチを提供しています。

そのページには、XML 形式の検索を行う最後の方法を含め、いくつかの異なる検索方法があります。このページには、適切な XML の作成方法に関する情報が含まれています。HTTP 経由で XML を送信する必要があります (フォームの送信先と含める必要がある追加情報を把握するためにページをバラバラにして詳細を決定します)。その後、応答を解析します。

さらに、自動化された方法でこれを行うことが、Web サイトの利用規約に違反していないことを確認する必要があります。


以下は、Crossref フリー DOI ルックアップの XML 形式です。検索可能な用語には、、、、、、およびが含まれarticle_titleます。authoryearjournal_titlevolumefirst_page

<?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>
于 2012-03-14T23:28:58.397 に答える
3

ここに2つのオプションがあります

CSVアップロード

CSV を直接アップロードし、 http://www.crossref.org/stqUpload/でテキスト クエリを実行するのと同じように実際にはうまく機能しない別の有望なソリューションを見つけました。

ただし、250 件のクエリのうち 18 件 (≈7%) のみが DOI を返しました。

XML クエリ

Brian Diggs による回答に基づいて、XML ベースのクエリを作成する作業の 95% を行う試みを次に示します。を使用して削除する必要があるバグがまだいくつかありますsed。しかし、最大の問題は、クエリが送信されたときに発生した「セッション タイムアウト」エラーです。

XML 構文には、あいまい一致を使用するオプションが含まれています。

このファイルには、ブライアンの回答doiquery.xmlのテンプレート テキストが含まれています。ファイルは上にリンクされています。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 ソフトウェアは、Web ベースのCSV から XML へのコンバーターを提供します。

必要な手順は次のとおりです。

  1. ElementIDsフィールドに列名を入力します。
  2. DocIDフィールドに入力documentします。
  3. RowIDフィールドに入力queryします。
  4. CSV ファイルをコピーして [入力 CSV ファイル]フィールドに貼り付けます。
  5. [変換]をクリックします。

関連する質問も参照してください: CSV を XML クエリに解析するためのシェル スクリプト?

于 2012-03-20T22:27:32.197 に答える