{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Visualizing the Corpus of ACL 2017 Paper Titles\n",
"\n",
"There was a significant variation topics covered in long and short papers in ACL 2017. Below is an application of Scattertext, written up in an ACL 2017 demo paper, on visualizing the differences in these paper titles.\n",
"\n",
"Jason S. Kessler. Scattertext: a Browser-Based Tool for Visualizing how Corpora Differ. To appear in ACL Demos. Vancouver, BC. 2017.\n",
"\n",
"https://github.com/JasonKessler/scattertext\n",
"\n",
"https://arxiv.org/abs/1703.00565"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Let's first, parse the accepted papers blog post using Beautiful Soup and load it into a Pandas data frame"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import requests\n",
"from bs4 import BeautifulSoup\n",
"import re\n",
"import pygal\n",
"import scattertext as st\n",
"from IPython.display import IFrame\n",
"from IPython.core.display import display, HTML\n",
"import seaborn as sns\n",
"display(HTML(\"\"))\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"url = 'https://chairs-blog.acl2017.org/2017/04/05/accepted-papers-and-demonstrations/'\n",
"soup = BeautifulSoup(requests.get(url).text, 'lxml')\n",
"content = soup.find_all('div', class_='entry-content')[0]\n",
"\n",
"def split_authors(author_list):\n",
" return re.split('(?:\\W+and|\\,)\\W+', author_list)\n",
"\n",
"assert split_authors('Sayan Ghosh, Mathieu Chollet, Eugene Laksana, Stefan Scherer and Louis-Philippe Morency') \\\n",
" == ['Sayan Ghosh', 'Mathieu Chollet', 'Eugene Laksana', 'Stefan Scherer', 'Louis-Philippe Morency']\n",
"assert split_authors('Sayan Ghosh, Mathieu Chollet, Eugene Laksana, Stefan Scherer, and Louis-Philippe Morency') \\\n",
" == ['Sayan Ghosh', 'Mathieu Chollet', 'Eugene Laksana', 'Stefan Scherer', 'Louis-Philippe Morency']\n",
" \n",
"data = []\n",
"for paper_length in content.find_all('h2'):\n",
" length_name = paper_length.text.strip()\n",
" field = 'N/A'\n",
" for sib in paper_length.findNextSiblings():\n",
" if sib.name == 'h2':\n",
" break\n",
" if sib.name == 'h3':\n",
" field = sib.text.strip()\n",
" if sib.name == 'ol':\n",
" for paper in sib.find_all('li'):\n",
" try:\n",
" title, authors = paper.text.split('Authors:')\n",
" except:\n",
" continue\n",
" data.append({'Paper Type': length_name,\n",
" 'Field': field,\n",
" 'Title': title.strip(),\n",
" 'Authors': split_authors(authors.strip())})\n",
"df = pd.DataFrame(data)\n",
"df['author count'] = df.Authors.apply(len) \n",
"df['Paper Type']= df['Paper Type'].apply(lambda x: {'Accepted Long Papers':'Long', \n",
" 'Accepted Short Papers':'Short',\n",
" 'Accepted Software Demonstrations':'Demo',\n",
" 'Transactions of the ACL articles to be presented at ACL 2017':'TACL'}[x])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Long', 'Short', 'Demo', 'TACL'], dtype=object)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Paper Type'].unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Let's use Scattertext to see how the titles of long and short papers differ\n",
"End-to-end modeling, joint modeling, adversarial learning, and reading comprehension were particularly characteristic of long papers. \n",
"\n",
"Case studies, social media, multilingual analysis and were more prevalent in short papers. The term \"temporal\" fell victim to polysemy-- both temporal relation mining and trend-over-time analysis were common in short papers.\n",
"\n",
"Learning, neural, and translation were very common in both sets. \n",
"\n",
"Click around on the plot below to see other findings."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Parsed'] = df['Title'].apply(st.whitespace_nlp)\n",
"long_short_df = df[df['Paper Type'].isin(['Long', 'Short'])]\n",
"long_short_corpus = (st.CorpusFromParsedDocuments(long_short_df, \n",
" category_col = 'Paper Type', \n",
" parsed_col = 'Parsed', \n",
" feats_from_spacy_doc = st.FeatsFromSpacyDoc(strip_final_period=True))\n",
" .build()\n",
" .get_stoplisted_unigram_corpus())\n",
"html = st.produce_scattertext_explorer(long_short_corpus, \n",
" category='Long', \n",
" category_name='Long Papers', \n",
" not_category_name='Short Papers',\n",
" minimum_term_frequency=1,\n",
" metadata=long_short_df.apply(lambda x: ', '.join(x['Authors']) + '('+x['Field']+')', axis=1),\n",
" use_full_doc=True,\n",
" width_in_pixels=1000)\n",
"file_name = \"ACL2017LongShort.html\"\n",
"open(file_name, 'wb').write(html.encode('utf-8'))\n",
"IFrame(src=file_name, width = 1200, height=1000)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from scattertext.termsignificance import LogOddsRatioUninformativeDirichletPrior\n",
"term_freq_df = long_short_corpus.get_term_freq_df()\n",
"frequencies = term_freq_df.sum(axis=1).values\n",
"frequencies_scaled = frequences/frequences.max()\n",
"p_vals = LogOddsRatioUninformativeDirichletPrior().get_p_vals(term_freq_df.values)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## As requested by Min-Yen Kan, let's look at how TACL differs from long papers\n",
"\n",
"Interesting finding: no TACL paper uses the word \"networks\" in its title, but lots of long papers do. \n",
"\n",
"Two TACL papers talked about \"effects\", while no long papers did:\n",
"- \"evaluating visual representations for topic understanding and their effects on manually generated labels\"\n",
"- \"winning on the merits: the joint effects of content and style on debate outcomes\"\n",
"\n",
"\"LSTMs\" appears to be a false positive for TACL, since the unmarked \"LSTM\" appeared four times in long papers. (I'm safely assuming the long papers used multiple LSTM nodes.)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Parsed'] = df['Title'].apply(st.whitespace_nlp)\n",
"long_short_df = df[df['Paper Type'].isin(['Long', 'TACL'])]\n",
"long_short_corpus = (st.CorpusFromParsedDocuments(long_short_df, \n",
" category_col = 'Paper Type', \n",
" parsed_col = 'Parsed', \n",
" feats_from_spacy_doc = st.FeatsFromSpacyDoc(strip_final_period=True))\n",
" .build()\n",
" .get_stoplisted_unigram_corpus())\n",
"def get_metadata(x):\n",
" meta = ', '.join(x['Authors']) \n",
" if x['Field'].strip():\n",
" meta += ' ('+x['Field']+')'\n",
" return meta\n",
" \n",
"html = st.produce_scattertext_explorer(long_short_corpus, \n",
" category='TACL', \n",
" category_name='TACL Papers', \n",
" not_category_name='Long Papers',\n",
" minimum_term_frequency=1,\n",
" metadata=long_short_df.apply(get_metadata, axis=1),\n",
" use_full_doc=True,\n",
" width_in_pixels=1000)\n",
"file_name = \"ACL2017TACLLong.html\"\n",
"open(file_name, 'wb').write(html.encode('utf-8'))\n",
"IFrame(src=file_name, width = 1200, height=1000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Let's see how the papers the area chairs published differed from the rest of the set\n",
"\n",
"The 53 papers were co-authored by an area chair, and 290 were only authored by average joes. \n",
"\n",
"\"Fast and accurate\" was a phrase used by two area chairs and nobody else.\n",
"\n",
"Lots of people worked on Chinese, but no area chairs had \"Chinese\" in their paper titles. \"Dialog\" and \"adpatation\" were strongly associated with average joes. "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Average Joe 291\n",
"Area Chair 53\n",
"Name: AC, dtype: int64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import itertools\n",
"area_chairs = set(itertools.chain(*[x.split(':')[1].strip().split(', ') for x in '''Biomedical: Aurélie Névéol, Karin Verspoor\n",
"Cognitive Modeling and Psycholinguistics: Roger Levy, Anders Søgaard\n",
"Dialogue and Interactive Systems: Ron Artstein, Raquel Fernandez, Oliver Lemon\n",
"Discourse and Pragmatics: Yangfeng Ji, Sujian Li, Bonnie Webber\n",
"Information Extraction and NLP Applications: Eugene Agichtein, Chia-Hui Chang, Jing Jiang, Sarvnaz Karimi, Zornitsa Kozareva, Kang Liu, Tie-Yan Liu, Mausam, Alessandro Moschitti, Smaranda Muresan\n",
"Machine Learning: Grzegorz Chrupała, Amir Globerson, Tommi Jaakkola, Sujith Ravi, William Yang Wang\n",
"Machine Translation: Yang Liu, Minh-Thang Luong, Haitao Mi, Graham Neubig, Deyi Xiong\n",
"Multidisciplinary: Michael Piotrowski, Karën Fort\n",
"Multilinguality: Omri Abend, Mona Diab\n",
"Phonology, Morphology and Word Segmentation: Jason Eisner, Hinrich Schütze\n",
"Resources and Evaluation: Sophie Rosset, Wajdi Zaghouani\n",
"Semantics: Manaal Faruqui, Hannaneh Hajishirzi, Anna Korhonen, Preslav Nakov, Mehroosh Sadrzadeh, Aline Villavicencio\n",
"Sentiment Analysis and Opinion Mining: Alexandra Balahur, Lun-Wei Ku, Saif M Mohammad\n",
"Social Media: Zhiyuan Liu, Shimei Pan, Svitlana Volkova\n",
"Speech: Chiori Hori, Chia-ying Lee\n",
"Summarization and Generation: Wenjie Li, Alexander M Rush, Verena Rieser\n",
"Tagging, Chunking, Syntax and Parsing: Emily Pitler, Barbara Plank, Yue Zhang, Hai Zhao\n",
"Vision, Robotics and Grounding: Mohit Bansal, Nate Kushman'''.split('\\n')]))\n",
"df['AC'] = df.Authors.apply(lambda x: 'Area Chair' if set(x) & area_chairs != set() else 'Average Joe')\n",
"df['AC'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"area_chair_corpus = (st.CorpusFromParsedDocuments(df, \n",
" category_col = 'AC', \n",
" parsed_col = 'Parsed', \n",
" feats_from_spacy_doc = st.FeatsFromSpacyDoc(strip_final_period=True))\n",
" .build()\n",
" .get_stoplisted_unigram_corpus())\n",
"def get_metadata(x):\n",
" meta = ', '.join(x['Authors']) \n",
" meta += '('+x['Paper Type']+'; '+x['Field']+')'\n",
" return meta\n",
" \n",
"html = st.produce_scattertext_explorer(area_chair_corpus, \n",
" category='Area Chair', \n",
" category_name='Area Chair', \n",
" not_category_name='Average Joe',\n",
" minimum_term_frequency=1,\n",
" metadata=df.apply(get_metadata, axis=1),\n",
" use_full_doc=True,\n",
" width_in_pixels=1000)\n",
"file_name = \"ACL2017AC.html\"\n",
"open(file_name, 'wb').write(html.encode('utf-8'))\n",
"IFrame(src=file_name, width = 1200, height=1000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Let's look at some descriptive statistics about the set accepted papers, and look at variations in paper categories\n",
"The vast majority of papers are long papers. MT, Semantics, and Gen. Summarization were more associated with Long Papers, while ML, Social Media, and Multidisciplinary dominated short papers. "
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
""
],
"text/plain": [
""
]
},
"execution_count": 224,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"HTML(pygal.HorizontalStackedBar(explicit_size=5, \n",
" height=100,\n",
" x_labels = list(df['Paper Type'].value_counts().index),\n",
" style=pygal.style.DefaultStyle(value_font_size=10), print_values=True)\n",
" .add('Paper Type', df['Paper Type'].value_counts())\n",
" .render(is_unicode=True))"
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pct_df['Field %'] = pct_df['Title_x']/pct_df['Title_y']\n",
"type_field_df = df.groupby(['Paper Type', 'Field'])['Title'].count().reset_index()\n",
"type_field_df.columns = ['Count' if c == 'Title' else c for c in type_field_df.columns]\n",
"_=sns.countplot(data=df, y='Field', hue='Paper Type')"
]
},
{
"cell_type": "code",
"execution_count": 227,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
""
],
"text/plain": [
""
]
},
"execution_count": 227,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"long_short_type_field_df = (type_field_df[type_field_df['Paper Type'].isin(('Long', 'Short'))]\n",
" .pivot(index='Field',columns='Paper Type')['Count'].fillna(0).astype(int))\n",
"\n",
"data = [{'value': tuple(vals), 'label': lab} for vals, lab in zip(long_short_type_field_df.values, long_short_type_field_df.index)]\n",
"chart = (pygal\n",
" .XY(print_labels=True, print_values=True, stroke=False, legend_at_bottom=True, x_title='Long Papers', y_title=\"Short Papers\",\n",
" style=pygal.style.DefaultStyle(value_font_size=10, label_font_size=10,legend_font_size=10, value_label_font_size=10, major_label_font_size=10), explicit_size=10))\n",
"\n",
"for vals, lab in zip(long_short_type_field_df.values, long_short_type_field_df.index):\n",
" chart.add(lab, [{'value':vals,'label':lab[:20]}])\n",
"HTML(chart.render(is_unicode=True))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [Root]",
"language": "python",
"name": "Python [Root]"
},
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}