Кто-нибудь может поделиться простым примером использования Mathematica и ученого Google для извлечения академической исследовательской информации
Как я могу использовать Mathematica и Google scholar, чтобы узнать количество статей, опубликованных человеком в 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 возвращает множество хитов, включая цитаты, книги, перепечатки и многое другое. Так что, на самом деле, это не очень полезно для подсчета.
Немного объяснения:
Ученый разделяет инициалы и имена авторов и соавторов по нескольким author:
поля в сочетании с +. StringDrop[StringJoin @@ ("author:" <> # <> "+" & /@ StringSplit[author]), -1]
часть кода заботится об этом. StringDrop
удаляет последний +
,
Stringcases
часть содержит большой текстовый шаблон, который в основном ищет текст, который ученый помещает в верхней части каждой страницы результатов и который содержит количество совпадений. Этот номер затем изолируется и возвращается.