Welcome to Story Analyzer, an application that blends NLP with data visualization to demonstrate the maxim: "a picture tells a thousand words."
These dashboards help you navigate through the
Stanford Encyclopedia of Philosophy.
Story Analyzer extracted information from over 1700 articles from the Stanford Encyclopedia of Philosophy. From this data, dashboards were created focusing on the following topics.
Happy "reading"!
These dashboards help you navigate through official government reports regarding Donald Trump's actions and alleged misbehaviors prior to, during, and after his presidency. The reports include the Mueller report investigation Russian influence in the 2016 election; Congress's report of Trump's first impeachment regarding his actions with respect to Ukraine during his term in office; and the Jan 6 report regarding insurrectionist allegations about Trump and his allies along with memo from committee staff regarding the role of social media prior to the January 6 riot. Also, check out the dashboard of Donald Trump's indictments post-presidency .
This video shows a demo using the Jan6 Report dashboard
Story Analyzer is an app that helps users visualize and understand a story through the use of natural language processing (NLP) and data visualization. Specifically, Story Analyzer uses Stanford’s CoreNLP Java library for performing information extraction on a story, and uses D3 and Google JavaScript visualization APIs to generate a dashboard of results involving several interrelated data visualizations.
The term “story” refers to a narrative that involves people, groups, organizations, or other entities (subjects) performing actions that can affect other people, organizations, or entities (objects). These events occur in certain places and at certain times, and they may include other contextual features of interest.
The term “story analysis” pertains to identifying these key elements of the story (subject, objects, actions, time, place, and other contexts), and moreover to represent the relationships between these elements for each event that takes place in the story. Story Analyzer helps to visually and interactively answer this question: Who did what to whom, where and when did it happen, and what else was going on at the time?
This page includes links to many dashboards, including dashboards from public impeachment-related documents as shown below. You can also see dashboards of other documents from the "Dashboards" menu at the top.
For information about how Story Analyzer works, you can read this presentation, which I gave at the 2020 Southeast Decision Science Institute (SEDSI) conference in Charleston, SC. Also, check out this video to get a feel for how to use Story Analyzer dashboards.
These dashboards were created using earlier data visualization dashboard design. I did these prior to the 2020 election, so only the first impeachment is included.
Story Analyzer dashboards are divided into several expandable/collapsible sections containing visualizations. Clicking a bar allows you to expand or collapse its corresponding section, so you can choose which sections to make visible.
When you first open a dashboard, you will see the Narrative and Highlighted Information section. The other sections are: People, Groups, Interactions, and Narrative Web, Dates and Times, Locations, Subjects, Actions, and Objects, and Verbs, Nouns, and Contexts.
Scroll through the overview of each of the sections in the carousel below:
These visualizations are highly interactive, both within a section and between sections. As your mouse hovers over an element of a visualization, related elements in the other visualizations are highlighted, and the relevant sentences display in the Narrative and Highlighted Information section.
Clicking on an element freezes everything, so that your mouse hover won't make changes, although hovering still brings up tooltips. Clicking again on an element unfreezes everything, and you can again hover to bring related elements and text into view.
In general, hovering over any element causes all other related elements throughout all sections of the dashboard to be highlighted. You can see this happen if you have multiple sections open and start moving your mouse over the different visualizations. The idea is that you will quickly narrow in on the topics related to the selected item from multiple perspectives.
The narrative web uses a force graph visualization, and you can reposition a cluster of nodes by clicking and dragging; others will follow. I think it produces a pleasing effect for the user. Play with all the visualizations for a little while and you'll see what I mean.
Each text element of the dashboard (e.g. person, group, action, subject, object, time/date, location) is a word or phrase from the narrative. Each includes a suffix consisting of two numbers separated by dashes. For example, in the Mueller report you may see a text element like FBI Director James Comey-15-9. The rightmost number (9 in this case) is the sequential number of the earliest sentence of the narrative where Comey appears as a character in the story. The number to its left (15) is the token number within that sentence. Tokens are words or punctuation characters in the sentence, so these numbers indicate that the word "Comey" is at position 15 of the 9th sentence in the narrative being displayed.
Color coding abounds in a Story Analyzer dashboard. In the Narrative and Highlighted Information section, blue represents people,
red is for groups, yellow is for locations (cities, countries, etc.), and green is for dates and times.
Within the People, Groups, Interactions and Narrative Web section, the bands on the circumference of the Interactions visualization are either blue (for people)
or red (for groups).
In the Narrative Web, coloring is similar, with blue nodes for people, red nodes for groups, yellow nodes for countries, etc. By hovering over a node in the narrative web you will see a tool tip showing what
kind of entity it represents.
You'll find word clouds in several sections of the dashboard. There are six word clouds, one for each: actions, subjects of actions, objects of actions, times, places, and other contexts. These clouds are all related and interactive. Hovering over an element of one cloud will cause related elements in all the other clouds to be highlighted. Words and phrases in the word clouds will be color-coded to link actions to related subjects, objects, times, places, and contexts. When you select an element (subject, object, time, place, context, or action) in a cloud, that element appears in black. Other clouds will show related elements according to their relationships.
For example, select an element in the Subjects cloud. In all other clouds, elements related to that subject are highlighted in a color. The colors of the actions performed by that subject will match the colors of the objects, times, places, and contexts in which the actions occur in ths story. You can click on the Subject to freeze the dashboard elements. In this frozen state, hovering over an action that the subject performed will highlight all the objects, times, places, and contexts for that action by making them bigger.
Here you can see several dashboards of the Mueller Report, which tells the story of the 2016 presidential campaign and post-campaign period. Volume 1 depicts Russian efforts to influence this campaign. Volume 2 describes findings related to potential obstruction of justice during the investigation of these events.
An overview dashboard with a "bird's eye" view of the report can be found here. This dashboard includes a tree map for visualizing the main actors (people are blue and groups are red) of the report, a calendar depicting a timeline of events, and word clouds containing the main nouns, verbs, and adjectives in the report. Hovering over any of these elements brings relevant sentences into focus, with links to related dashboards of the Mueller report.
The dashboards below are generated from Senate Intelligence Report,
Here are some sample dashboards depicting Wikipedia articles. Abraham Lincoln before his presidency, and during. The Civil War, parts 1 and 2. Check this out if you're a Harry Potter fan.
My name is Mike Mitri. I recently retired as a professor at James Madison University, where I taught Computer Information Systems in the College of Business.
My research interests focus on AI, natural language processing, and data visualization. I am also interested in pedagogical/curricular issues and methods, especially related to the information systems discipline. In my spare time, I like to read, play online chess, exercise, spend some time with family and friends, and of course, code.
If you're interested, check out my LinkedIn profile. From there you can read a few other things I wrote about Story Analyzer.
Many thanks go to Kevin Kotowski, Eli Rosequist, Connor Manyx, Kenny Nguyen, and Ved Sheth, who were all students at James Madison University. They contributed invaluable help as research assistants under James Madison University's REU Program.
Thanks to the CIS majors taking Fall 2021's capstone course CIS 484. These students built systems interfacing with the Story Analyzer web service and in so doing helped to establish a proof-of-concept that any application can utilize Story Analyzer services through a REST-based API. Two students in particular, Vinson (Vinnie) Sack and Tumur (Todd) Sukhee, made significant coding contributions that will ultimately be used in the Story Analyzer project. Many thanks to my colleague Dr. Jeremy Ezell for leading the class.
Thanks also to my son, Brendan Mitri, who made contributions with refinements to the new web application and designed the page you are currently looking at. Brendan also did this video.
Thanks to James Madison University for contributing REU funding and for providing me an educational leave in Fall 2015, during which I learned how to work with NLP and visualization APIs.
Story Analyzer is built using many useful software APIs and code snippets. Stanford's CoreNLP does the heavy AI lifting. Dashboards are built using Data Driven Documents (D3), as well as Google's Visualization and Map APIs. Some specific code examples were particularly useful for the Story Analyzer dashboard. For example, the Timeline visualization is heavily influenced by this D3 code. The Interactions visualization is an example of a chord diagram, and was adapted from this code. The word clouds rely on this code.