Natural Language Summary for Scholarly Line Graphs

This is a line graph extracted from a recent paper (by Hassan and Ng) that compares several methods for unsupervised keyphrase extraction. As most line graphs, it was produced from a data table. Our goal is to summarize the graph based on that data. This example shows both the strength and the limitations of our system. Overlapping color curves are extracted perfectly, but a black curve is not (See below). Also, some words are "wrongly" identified as legends in one step, but these errors are removed in the curve legend association step.

Steps to produce this summary:

1. Getting the figure location: a. The original code by AllenAI or b. Our re-implimentation of their code in Scala . We used an old snapshot of their reposiory ( drop me an email if you want to use that). Also, we extracted more than 15 Million such figures using AllenAI's code from 7 Million papers in CiteSeerX repository. That data can be shared.

2. Creating an SVG file for the figure: Github Link. .

3. Generating the natural language summary: Github Link. The code is in Python and uses some other repositories for interim steps: a. detect if the figure is a compound figure (contains sub figure) or not,b. detect if it is a line graph or not, c. classify the text inside the figure in classes such as axes labels, values, legends etc .

Some limitations:

1. During PDF generation, a figure can be included in a raster graphics (PNG/JPEG) or a vector graphics format (PS/EPS/PDF). You can only use our system on a figure that was included as a vector graphics. But most (>70%) scholarly figures (we analyzed 10,000 CS papers published between 2004 and 2014 in top 50 CS conferences) are included as vector graphics.

2. We only handle color graphs (curves drawn with separate color other than black) now. If a black curve exists in a color graph, we won't extract it. This limits the recall of the process but NOT the precision. Our future work will handle black curves as well, and the code will possibly be written in Scala :) (See our GitHub repo for this problem, WIP. ). Stay tuned!!

Original Image


This plot shows Precision (%) v/s Recall (%) curves for following methods: 1. TextRank, 2. SingleRank+Window size=2, 3. SingleRank+Unweighted, 4. SingleRank, .

The curve trends are:

Curve TextRank has increasing trend

Curve SingleRank+Window size=2 has decreasing trend

Curve SingleRank+Unweighted has decreasing trend

Curve SingleRank has decreasing trend

The X axis values are: 20,40,60,80,100

The Y axis values are: 50,40,30,20,10,0,0

The Caption for the figure is:

Figure 2: Ablation results for SingleRank on In- spec


Curve Separation

Word Classification (Only Legend Words are Shown)

Combining Legend Words into Strings

Curve Legend Association