Computational Satire Humanities

Amy L. Friedman, 
Temple University English Department

ABSTRACT

In my upcoming book, Postcolonial Satire (Lexington Press 2020), I argue for the importance of satire literacy in the current cultural-political media climate. The banned Iranian satirist Mahmūd Farjāmī has asserted that “political satire is often one of the first targets in press crackdowns and other attempts to limit political freedom owing to its critical examination of power and authority. As such, political satire can be regarded as an index of the freedom of speech” (2014). 
	My talk considers approaches to quantitative analysis of push-back directed towards satire, exploring possible metrics for measuring the efficacy of satiric literatures of resistance.  I am using Mathematica to try to extend the modes of analysis currently on offer via extant textual analytic tools such as those found at HathiTrust and Voyant.
	Though my coding abilities are nascent, my aim is to illustrate as strongly as possible some of the types of queries that drive the research of literature scholars, and which will inevitably contribute to the future shape of the evolving discipline of computational humanities.

Writing ≅ Writing Code ?

Suppose you are asked to teach a writing-intensive class for a university.
Writing is one of the core skills we expect students to get better at during an undergraduate education. Most future employers expect to hire graduates who can write; they will happily teach in-house protocols and practices to new hires, but not writing skills.


Different academic disciplines use writing differently. In the Social Sciences you’d expect to use writing to record interviews, data, findings, and relevant connections to extant research efforts.
In the Lab Sciences writing is the tool for recording hypotheses, steps in planned experiments, and empirical outcomes. 
In the Humanities, though, writing IS our process. Writing is a means to articulate, examine, analyze, compare and contrast, and most importantly develop our ideas and observations. It is common to expect the process of writing a project to have the potential to reveal new ideas as we write, to enable the unfolding of new connections and the generation of new ideas.

In Humanities writing is how we work, in addition to ultimately also being a record and a way to communicate our work. 
 We do not have proof of concept. But we are okay with that; we just keep trying to generate new and better questions.

What is satire?

Satire is a genre / mode / type of literature and image; satire's method is to attack using ridicule. Satire is not the same as comedy, but sometimes satire is funny. Literary satires can be poetry, prose, graphic novels. Cartoons represent a lengthy satiric heritage. Today we have to add modern media, such as film, video, mockumentary, memes, blogs, and so on.

data=WikipediaData["Satire"];
WordCloud[data]

Troublesome Literary Satire: 
The Rushdie Affair

Salman Rushdie’s Satanic Verses (1988) 
There are not many extant metrics for examining the impacts of satiric writing, and satiric writing of resistance, as a measure for freedom of expression. But we can start with the question of how to begin to measure the impact of such writing. 
Salman Rushdie’s satiric novel, The Satanic Verses, was published in 1988 and almost immediately encountered pushback for its satiric content regarding its fictional origin story of Islam. Many know that a fatwa was issued against the author for this book by the the Supreme Leader of Iran, on 14 February 1989.
Salman Rushdie spent most of the next decade in hiding, in exile, surrounded by police protection and later private security guards, and operating at times under an alias. 
How much did the banning of Salman Rushdie’s The Satanic Verses impact the world? 
How can one visualize this as a condition, and as a discussion- and question-generating problem?

countryDates=\[LeftAssociation](Entity["India", Entity["Country","India"], "Entity[\"Country\", \"India\"]", "country"])->DateObject[{1988, 10}],(Entity["Bangladesh", Entity["Country","Bangladesh"], "Entity[\"Country\", \"Bangladesh\"]", "country"])->DateObject[{1988, 11}],(Entity["Sudan", Entity["Country","Sudan"], "Entity[\"Country\", \"Sudan\"]", "country"])->DateObject[{1988, 11}],(Entity["South Africa", Entity["Country","SouthAfrica"], "Entity[\"Country\", \"SouthAfrica\"]", "country"])->DateObject[{1988, 11}],(Entity["Sri Lanka", Entity["Country","SriLanka"], "Entity[\"Country\", \"SriLanka\"]", "country"])->DateObject[{1988, 12}],(Entity["Kenya", Entity["Country","Kenya"], "Entity[\"Country\", \"Kenya\"]", "country"])->DateObject[{1989, 3}],(Entity["Thailand", Entity["Country","Thailand"], "Entity[\"Country\", \"Thailand\"]", "country"])->DateObject[{1989, 3}],(Entity["Tanzania", Entity["Country","Tanzania"], "Entity[\"Country\", \"Tanzania\"]", "country"])->DateObject[{1989, 3}],(Entity["Indonesia", Entity["Country","Indonesia"], "Entity[\"Country\", \"Indonesia\"]", "country"])->DateObject[{1989, 3}],(Entity["Singapore", Entity["Country","Singapore"], "Entity[\"Country\", \"Singapore\"]", "country"])->DateObject[{1989, 3}],(Entity["Venezuela", Entity["Country","Venezuela"], "Entity[\"Country\", \"Venezuela\"]", "country"])->DateObject[{1989, 6}]\[RightAssociation];
KeyValueMap[Tooltip,countryDates]

AssociationThread[KeyValueMap[Tooltip,countryDates],Ordering@countryDates]//FullForm

countryOrderTooltips=AssociationThread[KeyValueMap[Tooltip,countryDates],Ordering@countryDates]

Animate[GeoRegionValuePlot[countryOrderTooltips[[;;index]],GeoRange->"World",PlotLegends->None,ImageSize->Scaled[.8],PlotLabel->Keys[countryOrderTooltips][[index,2]]],{index,1,Length@countryDates,1},AnimationRunning->False,AnimationRepetitions->1,SaveDefinitions->True]

Expansion of question, in a Humanities manner...

What does the global impact look like if I add, to the national-level book bannings of Rushdie’s Satanic Verses (1988-89), the additional events which the publication and subsequent translation of the book prompted, up to 1995? These events comprised: book burnings, protests, firebombings, attacks on individuals and locations, and assassinations of translators and editors.

RushdieGlobalcountryDates=;

%12

Association[(Entity["India", Entity["Country","India"], "Entity[\"Country\", \"India\"]", "country"])->DateObject[{1988,10}],(Entity["Bangladesh", Entity["Country","Bangladesh"], "Entity[\"Country\", \"Bangladesh\"]", "country"])->DateObject[{1988,11}],(Entity["Sudan", Entity["Country","Sudan"], "Entity[\"Country\", \"Sudan\"]", "country"])->DateObject[{1988,11}],(Entity["South Africa", Entity["Country","SouthAfrica"], "Entity[\"Country\", \"SouthAfrica\"]", "country"])->DateObject[{1988,11}],(Entity["Saudi Arabia", Entity["Country","SaudiArabia"], "Entity[\"Country\", \"SaudiArabia\"]", "country"])->DateObject[{1988,12}],(Entity["Egypt", Entity["Country","Egypt"], "Entity[\"Country\", \"Egypt\"]", "country"])->DateObject[{1988,12}],(Entity["Qatar", Entity["Country","Qatar"], "Entity[\"Country\", \"Qatar\"]", "country"])->DateObject[{1988,12}],(Entity["Somalia", Entity["Country","Somalia"], "Entity[\"Country\", \"Somalia\"]", "country"])->DateObject[{1988,12}],(Entity["Malaysia", Entity["Country","Malaysia"], "Entity[\"Country\", \"Malaysia\"]", "country"])->DateObject[{1988,12}],(Entity["Sri Lanka", Entity["Country","SriLanka"], "Entity[\"Country\", \"SriLanka\"]", "country"])->DateObject[{1988,12}],(Entity["Kenya", Entity["Country","Kenya"], "Entity[\"Country\", \"Kenya\"]", "country"])->DateObject[{1989,3}],(Entity["Thailand", Entity["Country","Thailand"], "Entity[\"Country\", \"Thailand\"]", "country"])->DateObject[{1989,3}],(Entity["Tanzania", Entity["Country","Tanzania"], "Entity[\"Country\", \"Tanzania\"]", "country"])->DateObject[{1989,3}],(Entity["Indonesia", Entity["Country","Indonesia"], "Entity[\"Country\", \"Indonesia\"]", "country"])->DateObject[{1989,3}],(Entity["Singapore", Entity["Country","Singapore"], "Entity[\"Country\", \"Singapore\"]", "country"])->DateObject[{1989,3}],(Entity["Venezuela", Entity["Country","Venezuela"], "Entity[\"Country\", \"Venezuela\"]", "country"])->DateObject[{1989,6}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1988,12}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1989,1}],(Entity["India", Entity["Country","India"], "Entity[\"Country\", \"India\"]", "country"])->DateObject[{1989,2}],(Entity["Pakistan", Entity["Country","Pakistan"], "Entity[\"Country\", \"Pakistan\"]", "country"])->DateObject[{1989,2}],(Entity["India", Entity["Country","India"], "Entity[\"Country\", \"India\"]", "country"])->DateObject[{1989,2}],(Entity["India", Entity["Country","India"], "Entity[\"Country\", \"India\"]", "country"])->DateObject[{1989,2}],(Entity["United States", Entity["Country","UnitedStates"], "Entity[\"Country\", \"UnitedStates\"]", "country"])->DateObject[{1989,2}],(Entity["United States", Entity["Country","UnitedStates"], "Entity[\"Country\", \"UnitedStates\"]", "country"])->DateObject[{1989,2}],(Entity["United States", Entity["Country","UnitedStates"], "Entity[\"Country\", \"UnitedStates\"]", "country"])->DateObject[{1989,2}],(Entity["Zanzibar", Entity["Island","Zanzibar"], "Entity[\"Island\", \"Zanzibar\"]", "island"])->DateObject[{1989,3}],(Entity["New Guinea", Entity["Island","NewGuinea"], "Entity[\"Island\", \"NewGuinea\"]", "island"])->DateObject[{1989,3}],(Entity["Thailand", Entity["Country","Thailand"], "Entity[\"Country\", \"Thailand\"]", "country"])->DateObject[{1989,3}],(Entity["Sri Lanka", Entity["Country","SriLanka"], "Entity[\"Country\", \"SriLanka\"]", "country"])->DateObject[{1989,3}],(Entity["Kenya", Entity["Country","Kenya"], "Entity[\"Country\", \"Kenya\"]", "country"])->DateObject[{1989,3}],(Entity["Tanzania", Entity["Country","Tanzania"], "Entity[\"Country\", \"Tanzania\"]", "country"])->DateObject[{1989,3}],(Entity["Liberia", Entity["Country","Liberia"], "Entity[\"Country\", \"Liberia\"]", "country"])->DateObject[{1989,3}],(Entity["Sierra Leone", Entity["Country","SierraLeone"], "Entity[\"Country\", \"SierraLeone\"]", "country"])->DateObject[{1989,3}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1989,5}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1989,8}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1990,1}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1990,3}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1990,5}],(Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"]) (Entity["England, United Kingdom", Entity["AdministrativeDivision",{"England","UnitedKingdom"}], "Entity[\"AdministrativeDivision\", {\"England\", \"UnitedKingdom\"}]", "administrative division"])->DateObject[{1990,9}],(Entity["Japan", Entity["Country","Japan"], "Entity[\"Country\", \"Japan\"]", "country"])->DateObject[{1991,11}],(Entity["Italy", Entity["Country","Italy"], "Entity[\"Country\", \"Italy\"]", "country"])->DateObject[{1991,11}],(Entity["Turkey", Entity["Country","Turkey"], "Entity[\"Country\", \"Turkey\"]", "country"])->DateObject[{1993,7}],(Entity["Norway", Entity["Country","Norway"], "Entity[\"Country\", \"Norway\"]", "country"])->DateObject[{1993,10}]]

KeyValueMap[Tooltip,RushdieGlobalcountryDates]

RushdieGlobalcountryOrderTooltips=AssociationThread[KeyValueMap[Tooltip,RushdieGlobalcountryDates],Ordering@RushdieGlobalcountryDates]

Animate[GeoRegionValuePlot[RushdieGlobalcountryOrderTooltips[[;;index]],GeoRange->"World",PlotLegends->None,ImageSize->Scaled[.8],PlotLabel->Keys[RushdieGlobalcountryOrderTooltips][[index,2]]],{index,1,Length@RushdieGlobalcountryDates,1},AnimationRunning->False,AnimationRepetitions->1,SaveDefinitions->True]

Some Other Tools for Digital Humanities Work

HathiTrust+Bookworm
“Create a line graph showing word use trends in 13.7 million HathiTrust volumes.”

Voyant Tools

Not all of these methods and tools make sense to me -- because they seem to  represent quantitative analysis deployed purely for the iteration of quantitative analysis: “Here are some tools we made -- what can you do with them?” My initial take is that they have been deployed from the Digital side of Digital Humanities, without much consultation with the Humanities side.

I am often not exactly sure what to do with them.

A Demonstration: A Digital Humanities Query

What can I communicate about the current state of censorship against satirical publications and media, and against satirists, in the world today?
How can I convey this information in quantitative terms?
I want to consider events from 2018-2019, so that my focus remains current.
I want to share a sense of an historical moment which can generate new lines of inquiry.
So I read online a bit, and I start to notice a trend.

Jun 11, 2019
“The New York Times cuts all political cartoons, and cartoonists are not happy”
Michael Cavna ,The Washington Post (Online), Washington, D.C. Jun 11, 2019.

Longtime contributor Patrick Chappatte, among others, got a week’s notice that cartoonist contracts would be cut.

3 JULY 2019
“Art of offence: the political cartoon controversy,” 
Will Dunn, The New Statesman 
After a public furore, the New York Times has ceased publishing political cartoons altogether
The Washington Post declared that “editorial cartoons are democracy’s canary in a coal mine.”

A Patrick Chapatte cartoon:

Sources: Reporters w/o Borders, various newspaper reports
2018-2019 : Attacks on satiric writers, cartoonists, satiric publications, satiric radio shows/stations, satiric tv shows
Detained–  Imprisoned– Publication Obstructed– Radio blocked from broadcast–TV blocked from broadcast– 
Newspaper shut down–  Fired for Producing Satiric Content -Threatened – Murdered

Flatten[{(Entity["Chad", Entity["Country","Chad"], "Entity[\"Country\", \"Chad\"]", "country"])-> Darker[Brown],
{(Entity["France", Entity["Country","France"], "Entity[\"Country\", \"France\"]", "country"]) ->RGBColor[131/255, 57/85, 59/85],
{(Entity["Algeria", Entity["Country","Algeria"], "Entity[\"Country\", \"Algeria\"]", "country"]) ->LightOrange, 
{(Entity["Azerbaijan", Entity["Country","Azerbaijan"], "Entity[\"Country\", \"Azerbaijan\"]", "country"])->Darker[ColorData["HTML"]["Violet"]], (Entity["China", Entity["Country","China"], "Entity[\"Country\", \"China\"]", "country"])->Darker[ColorData["HTML"]["Violet"]],(Entity["Taiwan", Entity["Country","Taiwan"], "Entity[\"Country\", \"Taiwan\"]", "country"])->Darker[ColorData["HTML"]["Violet"]],(Entity["Hong Kong", Entity["City",{"HongKong","HongKong","HongKong"}], "Entity[\"City\", {\"HongKong\", \"HongKong\", \"HongKong\"}]", "city"]) ->Darker[ColorData["HTML"]["Violet"]],{(Entity["Belarus", Entity["Country","Belarus"], "Entity[\"Country\", \"Belarus\"]", "country"]) ->ColorData["Legacy"]["NavyBlue"],
{ (Entity["Mexico", Entity["Country","Mexico"], "Entity[\"Country\", \"Mexico\"]", "country"]) ->  RGBColor[1., 0., 0.498039],
{(Entity["India", Entity["Country","India"], "Entity[\"Country\", \"India\"]", "country"]) ->ColorData["HTML"]["OliveDrab"],(Entity["France", Entity["Country","France"], "Entity[\"Country\", \"France\"]", "country"])->ColorData["HTML"]["OliveDrab"], (Entity["Myanmar", Entity["Country","Myanmar"], "Entity[\"Country\", \"Myanmar\"]", "country"])->ColorData["HTML"]["OliveDrab"],(Entity["Egypt", Entity["Country","Egypt"], "Entity[\"Country\", \"Egypt\"]", "country"])->ColorData["HTML"]["OliveDrab"], (Entity["Nepal", Entity["Country","Nepal"], "Entity[\"Country\", \"Nepal\"]", "country"])->ColorData["HTML"]["OliveDrab"], (Entity["Malaysia", Entity["Country","Malaysia"], "Entity[\"Country\", \"Malaysia\"]", "country"])->ColorData["HTML"]["OliveDrab"], (Entity["Lebanon", Entity["Country","Lebanon"], "Entity[\"Country\", \"Lebanon\"]", "country"])->ColorData["HTML"]["OliveDrab"],(Entity["Venezuela", Entity["Country","Venezuela"], "Entity[\"Country\", \"Venezuela\"]", "country"]) ->ColorData["HTML"]["OliveDrab"],

{(Entity["United States", Entity["Country","UnitedStates"], "Entity[\"Country\", \"UnitedStates\"]", "country"]) ->RGBColor[1., 0.458824, 0.0941176], (Entity["Canada", Entity["Country","Canada"], "Entity[\"Country\", \"Canada\"]", "country"]) -> Orange  }}}}}}}}]

GeoRegionValuePlot[Flatten[{(Entity["Chad", Entity["Country","Chad"], "Entity[\"Country\", \"Chad\"]", "country"])->,(Entity["France", Entity["Country","France"], "Entity[\"Country\", \"France\"]", "country"])->,(Entity["Algeria", Entity["Country","Algeria"], "Entity[\"Country\", \"Algeria\"]", "country"])->,(Entity["Azerbaijan", Entity["Country","Azerbaijan"], "Entity[\"Country\", \"Azerbaijan\"]", "country"])->,(Entity["China", Entity["Country","China"], "Entity[\"Country\", \"China\"]", "country"])->,(Entity["Taiwan", Entity["Country","Taiwan"], "Entity[\"Country\", \"Taiwan\"]", "country"])->,(Entity["Hong Kong", Entity["City",{"HongKong","HongKong","HongKong"}], "Entity[\"City\", {\"HongKong\", \"HongKong\", \"HongKong\"}]", "city"])->,(Entity["Belarus", Entity["Country","Belarus"], "Entity[\"Country\", \"Belarus\"]", "country"])->,(Entity["Mexico", Entity["Country","Mexico"], "Entity[\"Country\", \"Mexico\"]", "country"])->,(Entity["India", Entity["Country","India"], "Entity[\"Country\", \"India\"]", "country"])->,(Entity["France", Entity["Country","France"], "Entity[\"Country\", \"France\"]", "country"])->,(Entity["Myanmar", Entity["Country","Myanmar"], "Entity[\"Country\", \"Myanmar\"]", "country"])->,(Entity["Egypt", Entity["Country","Egypt"], "Entity[\"Country\", \"Egypt\"]", "country"])->,(Entity["Nepal", Entity["Country","Nepal"], "Entity[\"Country\", \"Nepal\"]", "country"])->,(Entity["Malaysia", Entity["Country","Malaysia"], "Entity[\"Country\", \"Malaysia\"]", "country"])->,(Entity["Lebanon", Entity["Country","Lebanon"], "Entity[\"Country\", \"Lebanon\"]", "country"])->,(Entity["Venezuela", Entity["Country","Venezuela"], "Entity[\"Country\", \"Venezuela\"]", "country"])->,(Entity["United States", Entity["Country","UnitedStates"], "Entity[\"Country\", \"UnitedStates\"]", "country"])->,(Entity["Canada", Entity["Country","Canada"], "Entity[\"Country\", \"Canada\"]", "country"])->}]]

Detained– Chad  - DARKER BROWN 
Imprisoned– China,Algeria,Turkey,Congo,Egypt,Kurdistan,Equitorial Guinea,Saudi Arabia - DARKER VIOLET 
Publication Obstructed– France   -TURQUOISE 
Radio blocked from broadcast– Algeria     - LIGHT ORANGE 
TV blocked from broadcast– Azerbaijan,China,Taiwan,Hong Kong  - BROWN 
Newspaper shut down–  Belarus  - BLUE 
Murdered - Mexico  -ROSE 
Threatened– India,France,Burma,Egypt,Nepal,Malaysia,Lebanon,Venezuela     - OLIVE GREEN  
Fired–USA ,Canada  -   ORANGE

Initial Discoveries

This map is somewhat  troubling. There are incidents of repression of satire in my global hemisphere. 
Why are there incidents of repression of satire in my global hemisphere?
I expect few, because I assume a somewhat static degree of freedom of expression in certain countries.
I must look into this.
And how does this map compare with my Rushdie map of satiric repressions? How can I demonstrate that significant relationship? [Stay tuned.]

Overall Discoveries

In general, Code seems to be primarily outcome - oriented; the correctly constructed code produces a definitive end result, rather than being anticipated as potentially generative of a new, creative starting point. But writing code, bringing the quantitative to bear on qualitative modes of analysis,  also prompts one to formulate questions in radically new ways, and this energizes and innovates established disciplinary practices. This is a wonderful outcome.

Many of the presentations delivered so far under the rubric of Computational Humanities at this conference, denoted by the vibrant violet color in the program, have struck a common note.

They have brought to this event the incredible vivacity of arts and culture, and the inspiring innovations of human - centered scholarship, through Russell Foltz - Smith's investigations of Art and AI, Jay Weininger' s narrative of using code to incite awareness of creativity in the study of math, and the mind - altering Mindfulness explorations of Stella and Philip Maymin.

And in each case, to which I am adding my own emphasis, they have stressed that 
Humanities brings to Computation significantly different ways of thinking and processing information. 

Specific to the concept of writing, I tender the argument that Computational Humanities needs to step in the direction of acknowledging the role of writing code as the generative tool that writing words already comprises for Humanities scholars. Can Computational Humanities develop to recognize the act of writing code as a creative, generative, developmental process, rather than as a means to reach and record desired outcome? What can the role of code be to illustrate and quantify abstract ideas and real - world problems, and to generate new questions? [Stay tuned.]