{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Week 2" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Today\n", "\n", "In this lecture, we will continue to work on the data. \n", "\n", "* **Part 1:** We will learn the differences between **different kinds of data sources**. We will go a bit through the theory, and then work on an exercise. \n", "\n", "* **Part 2:** In the second part of this class, I will introduce you to **APIs**. We will use one API to gather some data on Computational Social Scientists and their works. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 1: Data Sources for Computational Social Science\n", "\n", "\n", "We have seen how __DATA__ is central to Computational Social Science. But what data sources are we talking about? What are the limitations of different types of data sources? In the video below, I will give you an introduction to different types of data sources. As an example, I will introduce you to two studies that use two very different datasets to answer a similar question. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "> **_Video lecture_**: Watch the video below about Data Sources in Computational Social Science\n", ">\n", "> *Optional Reading: [The Spread of Behavior in an Online Social Network Experiment.](https://www.science.org/doi/full/10.1126/science.1185231)* This is the article describing the first study I talk about in the video. \n", "> *Optional Reading: [Exercise contagion in a global social network.](https://www.nature.com/articles/ncomms14753)* This is the article describing the second study I talk about in the video. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo(\"Hr5yKJaQUhE\",width=600, height=337.5)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this course, we are going to focus mostly on observational data collected online to address social science questions. So, I would like us to reflect a little bit more on what it means to use *Ready made* data in the social science, and understand its advantages and challenges. This is something that you can read about in Sections 2.1 to 2.3 of the book _Bit by Bit_. \n", "\n", "> *Reading*: [Bit by Bit, sections 2.1 to 2.3](https://www.bitbybitbook.com/en/1st-ed/observing-behavior/observing-intro/) Read sections 2.1 to 2.3. I don't expect you to read all the details, but to have a general understanding of advantages and challenges of large observational datasets (a.k.a. Big Data/Ready made data) for social science research." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 2: Using APIs to download data\n", "\n", "In this class, we will work with *Ready made* data. The second thing we will learn today is how to get data ready made data using APIs. We will do it using the Academic Graph API provided by Semantic Scholar. The Academic Graph API enables you to gather information on scientists and their publications. \n", "\n", "I made a short video for you to get familiar with the API. Check it out here below. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "> **_Video lecture_**: Watch the video below about APIs ([here is the notebook I used in the video](https://nbviewer.org/github/lalessan/comsocsci2023/blob/master/additional_notebooks/API_example.ipynb) ) " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo(\"7AQO3vJptvg\",width=600, height=337.5)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **Exercise: A list APIs for Computational Social Science research.** Work in pairs. \n", ">\n", "> - Use the web to look for two APIs that could be used for gathering interesting data (from a Computational Social Science perspective). \n", "> - *Data description*: describe in a couple of lines the data types that you can gather using this API\n", "> - *Rate limits*: What are the rate limits of the free version of the API? \n", "> - Add your APIs to [this list](https://docs.google.com/spreadsheets/d/1LHdU-E6msMduqIHOvWGqn1uAbo5YjVwft2YkVu5subY/edit?usp=sharing) (**note: if someone had your same idea before you, just add your resource to the list a second time**). \n", ">\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prelude to part 3: Pandas Dataframes\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before starting, we will learn a bit about [pandas dataframes](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html), a very user-friendly data structure that you can use to manipulate tabular data. Pandas dataframes are built using numpy, which is in turn built in C, so they are a quite efficient data structure. You will find it quite useful :)\n", "\n", "Pandas dataframes should be intuitive to use. **I suggest you to go through the [10 minutes to Pandas tutorial](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) to learn what you need to solve the next exercise.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 3: Getting data from the Semantic Scholar API" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All right, so now we will start gathering some data on Computational Social Scientists and their publications. \n", "We will do this in steps. \n", "There is a lot of data to gather and process, so be patient. \n", "Feel free to team up if you find it useful and if you have any issues, come and ask me or the TAs. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **Exercise : Find potential Computational Social Scientists** In this exercise, we are going to find a list of potential authors of Computational Social Science papers using the Semantic Scholar API. The idea here is that we will find the researchers who have been to a conference on Computational Social Science or have worked with someone who has.\n", ">\n", "> 1. Consider the set of unique researcher names that you collected in Week 1, Exercise 3 (considering all years). Use the _author_ endpoint of the [Academic Graph API](https://api.semanticscholar.org/api-docs/graph#tag/Author-Data) to _search_ these researchers in the database based on their names. For each researcher in your list, find: \n", "> - their _authorId_ (the unique identifier in the Semantic Scholar API). **Hint**: the first result is typically the one the better matches your query. \n", "> - the _authorId_ of their collaborators. **Hint**: check out the field papers.authors\n", "> 2. Save the list of ids of the authors and their collaborators. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **Exercise : Find potential Computational Social Science papers** Now, we are going to look for works by these researchers. \n", ">\n", "> 1. Consider the list of author ids you have found in the exercise above. For each author, use the Academic Graph API to find:\n", ">\n", "> - their _aliases_\n", "> - their _name_\n", "> - their _papers_, where for each paper we want to retain: \n", "> - _title_ \n", "> - _abstract_ \n", "> - the _year_ of publication\n", "> - the _externalIds_ (this is because there are universal identifiers for scientific works called DOI that we can use across platforms)\n", "> - _s2FieldsOfStudy_ the fields of study\n", "> - _citationCount_ the number of times that this paper was cited \n", "> (**Hint**: you can find authors in batches)\n", "> \n", ">\n", "> 2. Create three dataframes to store the data you have collected. \n", "> \n", "> - **Author dataset:** in the author dataset, one raw is one unique author, and each row contains the following information: \n", "> - *authorId*: (str) the id of the author\n", "> - *name*: (str) the name of the author\n", "> - *aliases*: (list) the aliases of the author\n", "> - *citationCount*: (int) the total number of citations received by an author\n", "> - *field*: (str) the _s2FieldsOfStudy_ that occurs most times across an author's papers (you should first obtain the *category* for each _s2FieldsOfStudy_)\n", "> - **Paper dataset:** in the paper dataset, one row is one unique paper, and each row contains the following information:\n", "> - *paperId*: (str) the id of the paper\n", "> - *title*: (str) the title of the paper\n", "> - *year*: (int) the year of publication\n", "> - *externalId.DOI:* (str) the DOI of the paper\n", "> - *citationCount*: (int) the number of citations\n", "> - *fields*: (list) the fields included in the paper (you should first obtain the *category* for each _s2FieldsOfStudy_)\n", "> - *authorIds:* (list) this is a list of *author Ids*, including all the authors of this paper that are in our author dataset\n", "> - **Paper abstract dataset:** in the paper abstract dataset, one row is one unique paper, and each row contains the following information: \n", "> - *paperId*: (str) the id of the paper\n", "> - *abstract*: (str) the abstract of the paper \n", "> (Note: we keep the abstract separate to keep the size of files more manageable)\n", "> \n", "> 3. Save the three dataframes to file.\n", "> 4. How long is the _Author_ dataframe? How long is the _Paper_ dataframe? \n", "> 5. One person per pair: go to [DTU Learn](https://learn.inside.dtu.dk/d2l/home/145262) and fill the Survey \"_Week 2 - Semantic Scholar API data_\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Your Feedback\n", "I hope you enjoyed today's class. It would be awesome if you could spend a few minutes to share your feedback. \n", "**Go to [DTU Learn](https://learn.inside.dtu.dk/d2l/home/145262) and fill the Survey \"_Week 2 - Feedback\"_.**" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" }, "vscode": { "interpreter": { "hash": "5c7b89af1651d0b8571dde13640ecdccf7d5a6204171d6ab33e7c296e100e08a" } } }, "nbformat": 4, "nbformat_minor": 1 }