Desolation from Tilakamañjarī

This is a mandākrānta verse from the introduction of Dhanapāla’s Tilakamañjarī, which I am reading with a few colleagues, in praise of King Bhōja of Dhārā:

Blessed are those trees that drop heaps of flowers
from their branches in worship upon those liṅgas, the stumps,
which are bathed every morning by drops of water
from the dew that finds entry into the palaces
through breaches in their shattered roofs
in the desolate city of his enemies.

प्रासादेषु त्रुटितशिखरश्वभ्रलब्धप्रवेशैः
    प्रातः प्रातस्तुहिनसलिलैः शार्वरैः स्नापितानि ।
धन्या शून्ये यदरिनगरे स्थाणुलिङ्गानि शाखा-
    हस्तस्रस्तैः कुसुमनिकरैः पादपाः पूजयन्ति ॥

prāsādēṣu truṭita-śikhara-śvabhra-labdha-pravēśaiḥ
    prātaḥ prātas tuhina-salilaiḥ śārvaraiḥ snāpitāni ~
dhanyā śūnyē yad-ari-nagarē sthāṇu-liṅgāni śākhā-
    hasta-srastaiḥ kusuma-nikaraiḥ pādapāḥ pūjayanti ~~

Gaticitra: “Omnidirectional” (sarvatōbhadra-)

The last post was about a particular kind of pattern-poem in which the same sequence of syllables could be traced out by two distinct movements through the verse: the standard one, which moves from left to right across the eight syllables of a line, then down to first syllable of the next line, and so on; and the “half-turning” motion, which moves down across the first syllables of each of the four lines, then up through the last syllables in reverse order, and then back to the second syllable in each line, and so on. There is another variety of this general type of pattern-poem which is called sarvatōbhadra-, literally “good in every direction,” where both of these movements are possible, but in addition, there are two other movements, resulting in a total of four ways of moving through the syllables of the verse and arriving at the exact same sequence of syllables.

The verse comes, once again, from Māgha’s Killing of Śiśupāla, verse 19.27:

rasāhavā vāhasāranādavādadavādanā

This verse, part of a set of syntactically-connected verses, describes an army (sēnā), and Paul Dundas translates it as follows:

… its arrows putting an end to both the maneuvers and the lives of exuberant foes of every rank, engaging in battle with a genuine passion, its military bands vying with the neighing of magnificent cavalry horses…

The first movement is the standard one, from left to right, and down each line:

The second one is the “half-turning” (ardhabhramaṇa-) movement we have already seen:

So far it is identical to the “half-turning” type. But the difference is that each eight-syllable line of the “omnidirectional” verse is also a palindrome, i.e., it can be read from right to left in addition to right to left. Hence this is the third movement:

And because of this type of symmetry, we get another one for free, which is the equivalent of the “half-turning” movement, but in the other direction: starting from the top-right syllable, going down, and then going up from the first syllable of the last line:

Just as before, we can visualize the different motions as functions of the syllables numbered according to the standard motion. Hence the three additional motions will looks as follows:

Finally, we can color-code the syllables that are required to be identical, and then it becomes very clear that whereas the “half-turning” movement required symmetry along the diagonal of both halves of the verse (top-left to bottom-center, and bottom-center to top-right), the “omnidirectional” movement requires symmetry along these diagonals, as well as along the line separating the two halves. Thus, whereas the “half-turning” movement requires all syllables but 8 to be identical to another syllable in the pattern (hence there are 8 syllables that appear once and 12 syllables that appear twice, and thus 20 unique syllables), the “omnidirectional” movement requires the same 8 syllables to be identical to their corresponding syllable across the vertical axis (hence there are 4 syllables that appear twice), and requires the other 24 syllables to be identical to corresponding syllables both across the diagonal axis and across the vertical axis (hence there are 6 syllables that appear four times). Thus there are only ten unique syllables in the “omnidirectional” movement. For more fun, the metrical pattern of the “omnidirectional” verse will always be the same: LGLGGLGL in lines 1 and 3, and GLGLLGLG in lines 2 and 4.

Gaticitra: “Half-turning” (ardhabhrama-)

A section of the second chapter of Śrīvijaya’s Way of the Poet-King (Kavirājamārgaṁ) discusses citrakāvya, “pattern-poetry,” and in preparation for reading it, I have started to give myself a crash course in citrakāvya. The first topic is what is usually called gaticitra, wherein a poem is generated by particular movement (gati-) through a particular matrix of syllables. Typically the movement of reading is one-dimensional: we move from one syllable to the next, always in the same direction (in Sanskrit, left to right). This kind of reading can be called linear, or unilinear. The point of gaticitra is to introduce alternative ways of moving through a text.

The ardhabhrama-, “half-turning,” involves constructing a verse such that one can read the same text in two movements. The first movement is the one by which we generally read verses of four lines: we start at the leftmost syllable of the first line, and then move, syllable by syllable, to the right, until we have reached the end of the eight-syllable line, and then we jump to the leftmost syllable of the second line and repeat the process. In the second movement, we read the first syllable of each of the four lines in succession, and then the last syllable of the four lines in reverse order

Here is an example from Māgha’s Killing of Śiśupāla (Śiśupālavadhaḥ 19.72):

    bhītānandasya nāśanē

Here is Paul Dundas’ translation, from his recently-published translation in the Murty Classical Library of India:

The struggle caught fire among fearless fighters and extinguished the comfort of cowards; triumphant warriors basked in its glow, the uncommitted had no place there.

The following diagram, based on the one in Kalanath Jha’s Figurative Poetry in Sanskrit Literature (Delhi 1975), shows the second, “half-turning” movement:

In this diagram, I have labelled all of the syllables according to their position in the unilinear movement. By reference to these labels, we can say that the first line is represented in the case of linear movement by 1, 2, 3, 4, 5, 6, 7, 8, and in the case of the “half-turning” movement by 1, 9, 17, 25 (the descent along the first syllable of each line), 32, 24, 16, 8 (the ascent along the last syllable of each line). Similarly, the second line is represented by 9, 10, 11, 12, 13, 14, 15, 16 in the first case, and 2, 10, 18, 26, 31, 23, 15, and 7 in the second case. And so on. We can equate the two movements by representing one (say the unilinear movement) as the x-axis and the other (the half-turning movement) as the y-axis in the following chart:

A question that lays beyond my expertise is whether the positions occupied by the half-turning movement can be described as a function of the unilinear movement: since the lines are only eight syllables long, this function has a somewhat periodic appearance in the above diagram. The simultaneity of movement requires the syllables in corresponding positions in each movement to be identical to each other, and if we color-code the identical syllables, we arrive at the following diagram:

From this we can see that, if χ represents the line (1, 2, 3 or 4), then positions 8(χ-1)+χ and (8χ+1)-χ (i.e., 1 and 8, 10 and 15, etc.) are unique, and are the only positions that do not need to be matched with another position. These unique positions make up two axes, one cutting a 4 × 4 square from northwest to southeast, and the other cutting the next 4 × 4 square from southwest to northeast. If we were to fold these squares — representing the first four and last four positions, respectively, in each line — along these axes, then each position would be identical to the one that it is folded against. The squares are, in other words, axially symmetrical. This symmetry will turn out to be important when we are trying to determine the text of a particular ardhabhrama verse from corrupt manuscript readings.

A lost work on Kannada meter

I know from Jean-Luc Chevillard that a Tamil text on meter, called the Yāpparuṅkalakkārikai, has a commentary (virutti) by one Kuṇacākarar that mentions a “book on Kannada meter.” He referred me to Ulrike Niklas’ edition and translation of the Yāpparuṅkalakkārikai and its commentary (Pondicherry 1993). Kuṇacākarar there discusses the similarities between the work he is commenting on, the Yāpparuṅkalakkārikai, and this Kannada text:

kuṇakāṅkiyam eṉṉum karunāṭakac cantam-e pōla makaṭūu-muṉṉilaittāy, avai-y-aṭakkam uṭaittāy.

containing addresses to a woman and [the author’s apologetic] submission to the assembly, as the treatise on kannaḍa prosody called guṇagāṅkiyam (tr. Niklas).

Niklas notes that the kārikai was composed in the later tenth century, and the commentary was probably composed around the same time: Kuṇacākarar is, in fact, said to have been the teacher of Amitacākarar, the author of the kārikai.

I was recently reading T. V. Venkatachala Sastry’s Kannaḍa Chandassu (Mysore, 8th ed. 2011) and he relates some interesting things about this Guṇagāṅkīyaṁ (as it was probably known in Kannada). Earlier, scholars had tended to identify this work with Nāgavarman’s Chandōmbudhi, which also contains addresses to a woman. The Tamil texts, however, are likely to be earlier than Nāgavarma’s Chandōmbudhi, which was composed at the very end of the tenth century. Śēṣagiri Śāstrī, however, was the first to note that Guṇagāṅka (or simply Guṇaga) are birudas, or titles, of the Eastern Cāḷukya king Vijayāditya III, who ruled from Vengi in the middle of the ninth century (843–887). The Cāḷukyas were enemies of the Gaṅgas, who would later patronize Nāgavarman. So here we have a reference to a work on Kannada meter that is now lost, but about which we know (a) that it was named for the Eastern Cāḷukya king Vijayāditya III; (b) that it was presented to the court (presumably of the same king); (c) that it spoke to a woman in the second person (conventionally the author’s wife); (d) that it was probably composed at more or less the same time as the earliest surviving work of Kannada literature, Śrīvijaya’s Kavirājamārgaṁ.

Here is the entry that I just made on PANDiT, the Prosopographical Database for Indic Texts.

Rāma’s Last Act 1.8

किं त्वनुष्ठाननित्यत्वं स्वातन्त्र्यमपकर्षति ।
संकटा ह्याहिताग्नीनां प्रत्यवायैर्गृहस्थता ॥

But it’s the constant pull of obligations
that carries off their freedom.
For those who keep the sacred fire
even domestic life is fraught
with the danger of failing in one’s duty.

From the beginning of Bhavabhūti’s Rāma’s Last Act (Uttararāmacaritam), echoing an observation made in the course of the deontic logic project that the followers of Prabhākara would be doing rituals day in and day out out of fear of ‘breach of duty’ (adhikārātikrāntiḥ).

Google OCR for Sanskrit

Since I recently learned that Google’s Cloud Vision API is capable of recognizing text in Sanskrit in the Dēvanāgarī script, I have been excited to see what the possibilities are. Earlier this month Arun posted a comparison of Google OCR and Sanskrit OCR for Sanskrit text, and it looks like Google OCR isn’t bad. I decided to do a few tests of my own. To access the API, I needed to first sign up for Google Cloud, and then set up some authentication settings. Then I simply followed these instructions for accessing the API. I used Python to do so (more or less using this script). The script needs an input file and an output directory, both of which need to be on Google Cloud Storage. I chose a PDF containing about 20 pages of Śālikanātha’s Prakaraṇapañcikā, put it on Google Cloud Storage, and pointed the script at it. Magically, it populated the target folder (also on Google Cloud Storage) with a set of JSON files containing the OCR data. I was only interested in the text, so I grabbed it with the following Python script:

import json
import sys
import os
import io

with open(sys.argv[1]) as f:
    data = json.load(f)
    text = data['responses'][0]['fullTextAnnotation']['text']
    output = open(sys.argv[1].split('.')[0] + '.txt','w')

That put the OCR output in .txt files that I concatenated to give the “raw” text data for those pages of the PDF. The results will need a lot of cleaning up, but I think it’s a huge leap forward.

Dharmakīrti’s Poetry

Martin Straube’s excellent article (“Dharmakīrti als Dichter,” pp. 471–511 in Pāsādikadānaṃ: Festschrift für Bhikkhu Pāsādika, ed. Mitsuyo Demoto, Martin Straube, Michael Hahn, Jayandra Soni, and Roland Steiner) gathers the available evidence for Dharmakīrti’s literary, as opposed to strictly philosophical, output. It begins with a passage in Ānandavardhana’s Dhvanyālōka which, quite unusually for Sanskrit literary criticism, interprets a particular verse by taking into account the personality of the author to whom it is attributed. The verse is (3.40):

लावण्यद्रविणव्ययो न गणितः क्लेशो महान्स्वीकृतः
     स्वच्छन्दस्य सुखं जनस्य वसतः चिन्तानलो दीपितः ।
एषापि स्वयमेव तुल्यरमणाभावाद्वराकी हता
     कोऽर्थश्चेतसि वेधसा विनिहितस्तन्व्यास्तनुं तन्वता ॥

He didn’t even consider the expenditure
of his store of beauty.
He went to great pains.
He lit the fire of anxiety
in people who had been happy and free of care.
And still: this poor girl is done for,
since she’ll never find a suitable match.
What could the creator have had in mind
when he made this beautiful girl’s body?

Ānandavardhana rejects the interpretation of this verse as containing the ornament of vyājastutiḥ (‘praise in the guise [of a reproach]’), because it would leave several expressions unmotivated, and he proposes to interpret it as an instance of aprastutapraśaṁsā (‘talking about something that is not evident from the context’), wherein the girl is a symbol for a text, and the entire verse is a lament from the author that his efforts in writing that text have not met with suitable readers. In support of this interpretation he adduces the common believe (prasiddhiḥ) that the verse is by Dharmakīrti, and cites the well-known conclusion of the philosopher’s Pramāṇavārttikam:

     प्यदृष्टपरमार्थतत्त्वमधिकाभियोगैरपि ।
मतं मम जगत्यलब्धसदृशप्रतिग्राहकं
     प्रयास्यति पयोनिधेः पय इव स्वदेहे जराम् ॥

Its depths lay unplumbed even by one of considerable intellectual ability.
Its highest truths remain unseen even by those who devote great effort to it.
My thought has not found anyone in this world who is capable of receiving it.
It will proceed to old age in the body it has, just like the ocean’s waters.

Gendering speakers in the Sattasaī

Today’s prātaraśanaprayōgaḥ (that is, ‘breakfast experiment,’ a phrase that has apparently been trademarked by Mark Liberman at Language Log): how many verses in the Sattasaī, the famous anthology of Prakrit poetry, are put into the mouths of male speakers, and how many are put into the mouths of female speakers?

Although some verses give us pretty obvious hints (the speaker refers to herself with masculine or feminine pronouns, for example), most verses can be read in a variety of different ways. I took Gaṅgādhara’s commentary (16th century?) as a baseline, because he actually goes out of his way to identify the speaker for every single verse in the anthology. The same is not true of Bhuvanapāla (11th century), who only provides this information on occasion. Clearly not all readers of the Sattasaī were interested in ‘reading for gender.’

I had the impression that the majority of the verses are spoken by women, or at least interpreted as such by Gaṅgādhara. But in my Prakrit class I mistakenly suggested that every verse could be assigned to a female speaker: not only are there verses which almost require us to identify the speaker as a man (where ‘man’ is basically defined in terms of the text as someone who has sexual relationships with women), but there are quite a number of verses that could well by put into the mouth of a female friend (sakhī), messenger (dūtī), or procuress (kuṭṭanī) but are nevertheless ascribed to a male character, most often the ‘sophisticate’ (nāgarikaḥ).

I looked at Gaṅgādhara’s identifications for all of the verses in the third century (201–300 in Weber’s edition), and found that roughly three quarters were imagined by Gaṅgādhara to be spoken by a woman:

More syntax parsing with annodoc

I have been looking for a relatively easy way to create and visualize dependency parses for Sanskrit, and obviously the Annodoc setup (which uses the brat annotation system) is a great place to start. Annodoc is basically a Jekyll template that allows you to write parses as markdown files, using conventions like Universal Dependencies, which are then displayed in a very smart diagram.

My problem has been using these tools on a web server that I can’t actually install software like Jekyll on. Luckily, GitHub pages can run Jekyll, so all I have to do is keep an Annodoc installation on GitHub and I can access the parses through a URL like this one. I made a few styling changes to the default Annodoc setup to make them easier to embed, and I also installed iframeResizer, in anticipation of embedding iframes from GitHub, on the websites where I’ll want to use embed the parses. Now I can:

  • create parses in SD syntax and store them on GitHub, where Annodoc will automatically produce a visualization;
  • embed the visualization using an iframe anywhere I want.