Кто-нибудь может поделиться простым примером использования 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 часть содержит большой текстовый шаблон, который в основном ищет текст, который ученый помещает в верхней части каждой страницы результатов и который содержит количество совпадений. Этот номер затем изолируется и возвращается.

Другие вопросы по тегам