MathematicaとGoogleの学者を使って、2011年に出版された論文の数を見つけるにはどうすればよいですか?
1 に答える
Google Scholar は正式な API AFAIK を持っていないため、この目標にはあまり適していません。また、構造化された (XML などの) 形式で結果を提供しません。したがって、次のような迅速な (そして非常に壊れやすい!) テキスト パターン マッチング ハックに頼る必要があります。
searchGoogleScholarAuthor[author_String] :=
First[StringCases[
Import["http://scholar.google.com/scholar?start=0&num=1&q=" <>
StringDrop[
StringJoin @@ ("author:" <> # <> "+" & /@
StringSplit[author]), -1] <> "&hl=en&as_sdt=1,5"], ___ ~~
"Results" ~~ ___ ~~ "of about" ~~ Shortest[___] ~~
p : Longest[(DigitCharacter | ",") ..] ~~ ___ ~~ "." ~~ ___ ~~
"(" ~~ ___ :> p]]
In[191]:= searchGoogleScholarAuthor["A Einstein"]
Out[191]= "6,400"
In[190]:= searchGoogleScholarAuthor["Einstein"]
Out[190]= "9,400"
In[192]:= searchGoogleScholarAuthor["Wizard"]
Out[192]= "197"
In[193]:= searchGoogleScholarAuthor["Vries"]
Out[193]= "70,700"
ToExpression
文字列の結果が気に入らない場合は追加してください。発行年を制限したい場合は&as_ylo=2011&as_yhi=2011&
、検索文字列に追加して、開始年と終了年を適切に変更できます。
単一の著者を一意に識別する方法がないため、一般的な名前の著者は多くの偽のヒットを生成することに注意してください。さらに、Scholar は、引用、書籍、再版などを含むさまざまなヒットを返します。つまり、実際には、これはカウントにはあまり役に立ちません。
少し説明:
Scholar は、著者および共著者のイニシャルと名前author:
を、+ で結合されたいくつかのフィールドに分割します。StringDrop[StringJoin @@ ("author:" <> # <> "+" & /@ StringSplit[author]), -1]
コードの一部がそれを処理します。は最後のをStringDrop
削除し+
ます。
パーツには、Scholar が各結果ページのStringcases
上部に配置するテキストを基本的に検索し、ヒット数を含む大きなテキスト パターンが含まれています。この番号は分離されて返されます。