Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quadrismegistus/cadence
Rhythm analysis toolkit in Python
https://github.com/quadrismegistus/cadence
nlp python rhythm
Last synced: 28 days ago
JSON representation
Rhythm analysis toolkit in Python
- Host: GitHub
- URL: https://github.com/quadrismegistus/cadence
- Owner: quadrismegistus
- License: mit
- Created: 2021-02-19T15:18:45.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-09-29T00:11:12.000Z (about 1 year ago)
- Last Synced: 2024-10-04T16:17:52.580Z (about 2 months ago)
- Topics: nlp, python, rhythm
- Language: Jupyter Notebook
- Homepage:
- Size: 3.96 MB
- Stars: 12
- Watchers: 5
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.ipynb
- License: LICENSE
Awesome Lists containing this project
README
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cadence\n",
"\n",
"A rhythm analysis toolkit, gathering multiple parsing engines:\n",
"* [Prosodic](https://github.com/quadrismegistus/prosodic) for fast English and Finnish metrical scansion.\n",
"* Cadence itself for slower but exhaustive, MaxEnt-able metrical scansion."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Quickstart"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Install\n",
"\n",
"#### 1. Install python package\n",
"```\n",
"# install from pypi\n",
"pip install -U cadences # \"cadence\" was taken :-/\n",
"\n",
"# or from github very latest\n",
"pip install -U git+https://github.com/quadrismegistus/cadence\n",
"```\n",
"\n",
"#### 2. Insteall espeak (TTS)\n",
"\n",
"Install espeak, free TTS software, to 'sound out' unknown words. See [here](http://espeak.sourceforge.net/download.html) for all downloads. For Mac or Linux, you can use:\n",
"```\n",
"apt-get install espeak # linux\n",
"brew install espeak # mac\n",
"```\n",
"If you're on mac and don't have brew installed, do so [here](https://brew.sh/)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# this should work following installation\n",
"import cadence as cd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load texts"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"sonnetXIV = \"\"\"\n",
"How can I then return in happy plight,\n",
"That am debarred the benefit of rest?\n",
"When day’s oppression is not eased by night,\n",
"But day by night and night by day oppressed,\n",
"And each, though enemies to either’s reign,\n",
"Do in consent shake hands to torture me,\n",
"The one by toil, the other to complain\n",
"How far I toil, still farther off from thee.\n",
"I tell the day, to please him thou art bright,\n",
"And dost him grace when clouds do blot the heaven:\n",
"So flatter I the swart-complexiond night,\n",
"When sparkling stars twire not thou gildst the even.\n",
"But day doth daily draw my sorrows longer,\n",
"And night doth nightly make grief’s length seem stronger.\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# These are identical\n",
"sonnet = cd.Verse(sonnetXIV)\n",
"sonnet = cd.Text(sonnetXIV, linebreaks=True, phrasebreaks=False)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n","
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" word_ispunc\n",
" \n",
" \n",
" para_i\n",
" sent_i\n",
" sentpart_i\n",
" line_i\n",
" word_i\n",
" word_str\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1\n",
" 1\n",
" 1\n",
" 1\n",
" 1\n",
" How\n",
" 0\n",
" \n",
" \n",
" 2\n",
" can\n",
" 0\n",
" \n",
" \n",
" 3\n",
" I\n",
" 0\n",
" \n",
" \n",
" 4\n",
" then\n",
" 0\n",
" \n",
" \n",
" 5\n",
" return\n",
" 0\n",
" \n",
" \n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" \n",
" \n",
" 4\n",
" 17\n",
" 14\n",
" 15\n",
" grief's\n",
" 0\n",
" \n",
" \n",
" 16\n",
" length\n",
" 0\n",
" \n",
" \n",
" 17\n",
" seem\n",
" 0\n",
" \n",
" \n",
" 18\n",
" stronger\n",
" 0\n",
" \n",
" \n",
" 19\n",
" .\n",
" 1\n",
" \n",
" \n",
"\n",
"135 rows × 1 columns
\n",
"
],
"text/plain": [
" word_ispunc\n",
"para_i sent_i sentpart_i line_i word_i word_str \n",
"1 1 1 1 1 How 0\n",
" 2 can 0\n",
" 3 I 0\n",
" 4 then 0\n",
" 5 return 0\n",
"... ...\n",
" 4 17 14 15 grief's 0\n",
" 16 length 0\n",
" 17 seem 0\n",
" 18 stronger 0\n",
" 19 . 1\n",
"\n",
"[135 rows x 1 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Tokenize\n",
"sonnet.words()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n","
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" prom_strength\n",
" prom_stress\n",
" prom_weight\n",
" word_isfunc\n",
" word_ispunc\n",
" word_nsyll\n",
" \n",
" \n",
" para_i\n",
" sent_i\n",
" sentpart_i\n",
" line_i\n",
" word_i\n",
" word_str\n",
" word_tok\n",
" word_ipa_i\n",
" word_ipa\n",
" syll_i\n",
" syll_str\n",
" syll_ipa\n",
" syll_stress\n",
" syll_weight\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1\n",
" 1\n",
" 1\n",
" 1\n",
" 1\n",
" How\n",
" how\n",
" 1\n",
" haʊ\n",
" 1\n",
" How\n",
" haʊ\n",
" U\n",
" H\n",
" NaN\n",
" 0.0\n",
" 1.0\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 2\n",
" can\n",
" can\n",
" 1\n",
" kæn\n",
" 1\n",
" can\n",
" kæn\n",
" U\n",
" H\n",
" NaN\n",
" 0.0\n",
" 1.0\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 3\n",
" I\n",
" i\n",
" 1\n",
" 'aɪ\n",
" 1\n",
" I\n",
" 'aɪ\n",
" P\n",
" H\n",
" 1.0\n",
" 1.0\n",
" 1.0\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 2\n",
" aɪ\n",
" 1\n",
" I\n",
" aɪ\n",
" U\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 1.0\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 4\n",
" then\n",
" then\n",
" 1\n",
" 'ðɛn\n",
" 1\n",
" then\n",
" 'ðɛn\n",
" P\n",
" H\n",
" 1.0\n",
" 1.0\n",
" 1.0\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" \n",
" \n",
" 4\n",
" 17\n",
" 14\n",
" 16\n",
" length\n",
" length\n",
" 1\n",
" 'lɛŋkθ\n",
" 1\n",
" length\n",
" 'lɛŋkθ\n",
" P\n",
" H\n",
" NaN\n",
" 1.0\n",
" 1.0\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 17\n",
" seem\n",
" seem\n",
" 1\n",
" 'siːm\n",
" 1\n",
" seem\n",
" 'siːm\n",
" P\n",
" H\n",
" NaN\n",
" 1.0\n",
" 1.0\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 18\n",
" stronger\n",
" stronger\n",
" 1\n",
" 'strɔːŋ.ɛː\n",
" 1\n",
" stron\n",
" 'strɔːŋ\n",
" P\n",
" H\n",
" 1.0\n",
" 1.0\n",
" 1.0\n",
" 0.0\n",
" 0\n",
" 2\n",
" \n",
" \n",
" 2\n",
" ger\n",
" ɛː\n",
" U\n",
" L\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0\n",
" 2\n",
" \n",
" \n",
" 19\n",
" .\n",
" \n",
" 0\n",
" \n",
" 0\n",
" .\n",
" \n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" 1\n",
" 0\n",
" \n",
" \n",
"\n",
"186 rows × 6 columns
\n",
"
],
"text/plain": [
" prom_strength ... word_nsyll\n",
"para_i sent_i sentpart_i line_i word_i word_str word_tok word_ipa_i word_ipa syll_i syll_str syll_ipa syll_stress syll_weight ... \n",
"1 1 1 1 1 How how 1 haʊ 1 How haʊ U H NaN ... 1\n",
" 2 can can 1 kæn 1 can kæn U H NaN ... 1\n",
" 3 I i 1 'aɪ 1 I 'aɪ P H 1.0 ... 1\n",
" 2 aɪ 1 I aɪ U H 0.0 ... 1\n",
" 4 then then 1 'ðɛn 1 then 'ðɛn P H 1.0 ... 1\n",
"... ... ... ...\n",
" 4 17 14 16 length length 1 'lɛŋkθ 1 length 'lɛŋkθ P H NaN ... 1\n",
" 17 seem seem 1 'siːm 1 seem 'siːm P H NaN ... 1\n",
" 18 stronger stronger 1 'strɔːŋ.ɛː 1 stron 'strɔːŋ P H 1.0 ... 2\n",
" 2 ger ɛː U L 0.0 ... 2\n",
" 19 . 0 0 . NaN NaN NaN ... 0\n",
"\n",
"[186 rows x 6 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Syllabify\n",
"sonnet.sylls()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n","
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" dep_head\n",
" dep_type\n",
" pos_case\n",
" pos_definite\n",
" pos_degree\n",
" pos_gender\n",
" pos_mood\n",
" pos_number\n",
" pos_person\n",
" pos_polarity\n",
" pos_poss\n",
" pos_prontype\n",
" pos_tense\n",
" pos_upos\n",
" pos_verbform\n",
" pos_voice\n",
" pos_xpos\n",
" word_depth\n",
" \n",
" \n",
" para_i\n",
" sent_i\n",
" word_i\n",
" word_str\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1\n",
" 1\n",
" 1\n",
" How\n",
" 5\n",
" advmod\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Int\n",
" \n",
" ADV\n",
" \n",
" \n",
" WRB\n",
" 4\n",
" \n",
" \n",
" 2\n",
" can\n",
" 5\n",
" aux\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" AUX\n",
" Fin\n",
" \n",
" MD\n",
" 4\n",
" \n",
" \n",
" 3\n",
" I\n",
" 5\n",
" nsubj\n",
" Nom\n",
" \n",
" \n",
" \n",
" \n",
" Sing\n",
" 1\n",
" \n",
" \n",
" Prs\n",
" \n",
" PRON\n",
" \n",
" \n",
" PRP\n",
" 5\n",
" \n",
" \n",
" 4\n",
" then\n",
" 5\n",
" advmod\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Dem\n",
" \n",
" ADV\n",
" \n",
" \n",
" RB\n",
" 5\n",
" \n",
" \n",
" 5\n",
" return\n",
" 0\n",
" root\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" VERB\n",
" Inf\n",
" \n",
" VB\n",
" 5\n",
" \n",
" \n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" \n",
" \n",
" 4\n",
" 15\n",
" grief's\n",
" 16\n",
" compound\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Plur\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" NOUN\n",
" \n",
" \n",
" NNS\n",
" 8\n",
" \n",
" \n",
" 16\n",
" length\n",
" 14\n",
" obj\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Sing\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" NOUN\n",
" \n",
" \n",
" NN\n",
" 8\n",
" \n",
" \n",
" 17\n",
" seem\n",
" 14\n",
" xcomp\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" VERB\n",
" Inf\n",
" \n",
" VB\n",
" 10\n",
" \n",
" \n",
" 18\n",
" stronger\n",
" 17\n",
" xcomp\n",
" \n",
" \n",
" Cmp\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ADJ\n",
" \n",
" \n",
" JJR\n",
" 12\n",
" \n",
" \n",
" 19\n",
" .\n",
" 5\n",
" punct\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" PUNCT\n",
" \n",
" \n",
" .\n",
" 3\n",
" \n",
" \n",
"\n",
"135 rows × 18 columns
\n",
"
],
"text/plain": [
" dep_head dep_type ... pos_xpos word_depth\n",
"para_i sent_i word_i word_str ... \n",
"1 1 1 How 5 advmod ... WRB 4\n",
" 2 can 5 aux ... MD 4\n",
" 3 I 5 nsubj ... PRP 5\n",
" 4 then 5 advmod ... RB 5\n",
" 5 return 0 root ... VB 5\n",
"... ... ... ... ... ...\n",
" 4 15 grief's 16 compound ... NNS 8\n",
" 16 length 14 obj ... NN 8\n",
" 17 seem 14 xcomp ... VB 10\n",
" 18 stronger 17 xcomp ... JJR 12\n",
" 19 . 5 punct ... . 3\n",
"\n",
"[135 rows x 18 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Syntax-parse\n",
"sonnet.syntax()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": "ROOT/0SBARQ/0WHADVP/0WRB/0HowSQ/0MD/0canNP/0PRP/0IADVP/0RB/0thenVP/0VB/0returnPP/0IN/0inNP/0NP/0JJ/0happyNN/0plight,/0,SBAR/0WHNP/0WDT/0ThatS/0VP/0VBP/0amVP/0VBN/0debarredNP/0NP/0DT/0theNN/0benefitPP/0IN/0ofNP/0NN/0rest./0?",
"text/plain": [
"CadenceMetricalTree('ROOT/0', [CadenceMetricalTree('SBARQ/0', [CadenceMetricalTree('WHADVP/0', [CadenceMetricalTree('WRB/0', ['How'])]), CadenceMetricalTree('SQ/0', [CadenceMetricalTree('MD/0', ['can']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('PRP/0', ['I'])]), CadenceMetricalTree('ADVP/0', [CadenceMetricalTree('RB/0', ['then'])]), CadenceMetricalTree('VP/0', [CadenceMetricalTree('VB/0', ['return']), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['in']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NP/0', [CadenceMetricalTree('JJ/0', ['happy']), CadenceMetricalTree('NN/0', ['plight'])]), CadenceMetricalTree(',/0', [',']), CadenceMetricalTree('SBAR/0', [CadenceMetricalTree('WHNP/0', [CadenceMetricalTree('WDT/0', ['That'])]), CadenceMetricalTree('S/0', [CadenceMetricalTree('VP/0', [CadenceMetricalTree('VBP/0', ['am']), CadenceMetricalTree('VP/0', [CadenceMetricalTree('VBN/0', ['debarred']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NP/0', [CadenceMetricalTree('DT/0', ['the']), CadenceMetricalTree('NN/0', ['benefit'])]), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['of']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NN/0', ['rest'])])])])])])])])])])])]), CadenceMetricalTree('./0', ['?'])])])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Show sentences\n",
"sentence = sonnet.sent(1)\n",
"sentence.mtree()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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unVU//79/969e/d9fn7zAz6poUOHrolEIo9v3779vwcNGnRb27Ztj3tdkyQFg0G3Y8eODsXFxfe3a9du2gUXXPBCeXl5m4ULF/519+7drZxzNnLkyHdGjRr1zFtvvWUHDhz4YnFx8fr8/PyyhIQE/o+iSejQoUNVu3bt3isvL29TX1/feejQod+TpGAwWJuRkTF38ODBz/lhwASnVrx7IBwO2+uvv36dpEBCQkL1yJEjX7nssst+8corr4Q3bNjwcCAQuKugoGCDFA0/Hpf9seTl5W3Oy8vb7HUdgMQMmu8FAgElJyeHu3bt+vfKyspJCxcuvDQQCCgQCGjhwoWXHTx48AtmFiGcoTkaPnz4ynHjxn3TD+Esvn5Mkvbv3981LS1t+QUXXPBCTU1N4htvvPHD1NTUN80stGvXrv966623Rrdu3bpmxIgRz6anp79WVFT0v0VFRX2ZPUNTEggEFAqFgvX19XkbN268+PXXX5986NChKf3793+xS5cuh72uD6dePJzNmDHjf2tqavqFQqHWVVVVg2bPnv10XV1dcOTIkX9IT09/bd26dU8UFRX19bpeoKliBq2JGD58+Krq6upH9+3b9+0XX3xxfCAQqG5oaOiZl5f33ZycnE+1rTHgZxkZGXVe/dnx0eL4rxUVFakZGRm1w4YNe6+8vHxLfX19cN68efclJibumzhx4sNLliy5cM+ePTdXV1dnBwIBdejQoWr48OF/XrlyZUNKSornIRP4pLp06XL49NNPf/zAgQNXBgKBmgEDBtzNZ07LNn/+/KkJCQn7J02a9D+SNHPmzHvNrCE5OTmcnJxcfc455zz95ptvhnjPA04cAa0JOe+882aXlpau27dvX//ExMRjXbp02dCjR49yr+sCmqO33377jNra2qyCgoIlWVlZx9avX5+zfv36uwKBwNGEhISDw4YNe8rMXDgcbjNs2LAHJamqqiq3Q4cO/2/MmDEvxX+fjh07Vl500UW/Z/YMTdWYMWPmHj16dJFzTmya0PI03ko/9n1yWlraWikazurr63tOmDDhxsrKypSioqLhZ5555hvjx49/it1pgRNHQGticnNztzW+aS+AkyMhIaGuvLz8xuLi4oYuXbqsLy4ufiAzM3NOQkLC8crKyiFLly59eMiQIQ8FAoGq5cuXP/Lee+/tra+v73HRRRf9JhgMuvhujVJ0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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Stress grid of sentence inferred from syntactic tree\n",
"# using metricaltree\n",
"sentence.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parse text"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "68801072ee594378800c0b07337c961e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Metrically parsing line units: 0%| | 0/14 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" How can I then return in happy plight,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" That am debarred the benefit of rest?"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" When day's oppression is not eased by night,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" But day by night and night by day oppressed,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" And each, though enemies to either's reign,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" Do in consent shake hands to torture me,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" The one by toil, the other to complain"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" How far I toil, still farther off from thee."
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" I tell the day, to please him thou art bright,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" And dost him grace when clouds do blot the heaven:"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" So flatter I the swart- complexiond night,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" When sparkling stars twire not thou gildst the even."
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" But day doth daily draw my sorrows longer,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" And night doth nightly make grief's length seem stronger."
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n","
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" *total\n",
" *s_unstressed\n",
" *unres_across\n",
" *unres_within\n",
" *w_peak\n",
" *w_stressed\n",
" dep_head\n",
" dep_type\n",
" mtree_ishead\n",
" num_parses\n",
" pos_case\n",
" pos_definite\n",
" pos_degree\n",
" pos_gender\n",
" pos_mood\n",
" pos_number\n",
" pos_person\n",
" pos_polarity\n",
" pos_poss\n",
" pos_prontype\n",
" pos_tense\n",
" pos_upos\n",
" pos_verbform\n",
" pos_voice\n",
" pos_xpos\n",
" prom_lstress\n",
" prom_pstrength\n",
" prom_pstress\n",
" prom_strength\n",
" prom_stress\n",
" prom_tstress\n",
" prom_weight\n",
" word_depth\n",
" word_isfunc\n",
" word_ispunc\n",
" word_nsyll\n",
" \n",
" \n",
" para_i\n",
" unit_i\n",
" parse_rank\n",
" is_troch\n",
" parse_i\n",
" parse\n",
" parse_str\n",
" sent_i\n",
" sentpart_i\n",
" line_i\n",
" combo_i\n",
" slot_i\n",
" slot_meter\n",
" syll_str_parse\n",
" word_i\n",
" word_str\n",
" word_tok\n",
" word_ipa_i\n",
" word_ipa\n",
" syll_i\n",
" syll_str\n",
" syll_ipa\n",
" syll_stress\n",
" syll_weight\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1\n",
" 1\n",
" 1\n",
" 0\n",
" 1\n",
" wwSSwSwSwS\n",
" 𝖧𝗈𝗐 𝖼𝖺𝗇 𝗜 𝙩𝙝𝙚𝙣 𝗋𝖾𝘁𝘂𝗿𝗻 𝗂𝗇 𝗵𝗮𝗽𝗉𝗒 𝗽𝗹𝗶𝗴𝗵𝘁,\n",
" 1\n",
" 1\n",
" 1\n",
" 1\n",
" 1\n",
" w\n",
" 𝖧𝗈𝗐\n",
" 1\n",
" How\n",
" how\n",
" 1\n",
" haʊ\n",
" 1\n",
" How\n",
" haʊ\n",
" U\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 5\n",
" advmod\n",
" NaN\n",
" 4\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Int\n",
" \n",
" ADV\n",
" \n",
" \n",
" WRB\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 0.000000\n",
" 1.0\n",
" 4\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 2\n",
" w\n",
" 𝖼𝖺𝗇\n",
" 2\n",
" can\n",
" can\n",
" 1\n",
" kæn\n",
" 1\n",
" can\n",
" kæn\n",
" U\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 5\n",
" aux\n",
" NaN\n",
" 4\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" AUX\n",
" Fin\n",
" \n",
" MD\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 0.333333\n",
" 1.0\n",
" 4\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 3\n",
" s\n",
" 𝗜\n",
" 3\n",
" I\n",
" i\n",
" 1\n",
" 'aɪ\n",
" 1\n",
" I\n",
" 'aɪ\n",
" P\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 5\n",
" nsubj\n",
" NaN\n",
" 4\n",
" Nom\n",
" \n",
" \n",
" \n",
" \n",
" Sing\n",
" 1\n",
" \n",
" \n",
" Prs\n",
" \n",
" PRON\n",
" \n",
" \n",
" PRP\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 1.0\n",
" 1.0\n",
" 0.000000\n",
" 1.0\n",
" 5\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 4\n",
" s\n",
" 𝙩𝙝𝙚𝙣\n",
" 4\n",
" then\n",
" then\n",
" 1\n",
" 'ðɛn\n",
" 1\n",
" then\n",
" 'ðɛn\n",
" P\n",
" H\n",
" 1.0\n",
" 0.0\n",
" 1.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 5\n",
" advmod\n",
" NaN\n",
" 4\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Dem\n",
" \n",
" ADV\n",
" \n",
" \n",
" RB\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 1.0\n",
" 1.0\n",
" 0.000000\n",
" 1.0\n",
" 5\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 5\n",
" w\n",
" 𝗋𝖾\n",
" 5\n",
" return\n",
" return\n",
" 1\n",
" rɪ.'tɛːn\n",
" 1\n",
" re\n",
" rɪ\n",
" U\n",
" L\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0\n",
" root\n",
" NaN\n",
" 4\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" VERB\n",
" Inf\n",
" \n",
" VB\n",
" NaN\n",
" NaN\n",
" NaN\n",
" 0.0\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 5\n",
" 0.0\n",
" 0\n",
" 2\n",
" \n",
" \n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" \n",
" \n",
" 14\n",
" 2\n",
" 0\n",
" 1\n",
" wSwSwSSwSSw\n",
" 𝖠𝗇𝖽 𝗻𝗶𝗴𝗵𝘁 𝖽𝗈𝗍𝗁 𝗻𝗶𝗴𝗵𝗍𝗅𝗒 𝗺𝗮𝗸𝗲 𝙜𝙧𝙞𝙚𝙛'𝙨 𝘭𝘦𝘯𝘨𝘵𝘩 𝘀𝗲𝗲𝗺 𝙨𝙩𝙧𝙤𝙣𝗀𝖾𝗋.\n",
" 4\n",
" 17\n",
" 14\n",
" 1\n",
" 8\n",
" w\n",
" 𝘭𝘦𝘯𝘨𝘵𝘩\n",
" 16\n",
" length\n",
" length\n",
" 1\n",
" 'lɛŋkθ\n",
" 1\n",
" length\n",
" 'lɛŋkθ\n",
" P\n",
" H\n",
" 1.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 1.0\n",
" 14\n",
" obj\n",
" NaN\n",
" 2\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Sing\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" NOUN\n",
" \n",
" \n",
" NN\n",
" 1.0\n",
" 0.0\n",
" 0.0\n",
" NaN\n",
" 1.0\n",
" 0.750000\n",
" 1.0\n",
" 8\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 9\n",
" s\n",
" 𝘀𝗲𝗲𝗺\n",
" 17\n",
" seem\n",
" seem\n",
" 1\n",
" 'siːm\n",
" 1\n",
" seem\n",
" 'siːm\n",
" P\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 14\n",
" xcomp\n",
" NaN\n",
" 2\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" VERB\n",
" Inf\n",
" \n",
" VB\n",
" 1.0\n",
" 0.0\n",
" 0.0\n",
" NaN\n",
" 1.0\n",
" 0.750000\n",
" 1.0\n",
" 10\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 10\n",
" s\n",
" 𝙨𝙩𝙧𝙤𝙣\n",
" 18\n",
" stronger\n",
" stronger\n",
" 1\n",
" 'strɔːŋ.ɛː\n",
" 1\n",
" stron\n",
" 'strɔːŋ\n",
" P\n",
" H\n",
" 1.0\n",
" 0.0\n",
" 1.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 17\n",
" xcomp\n",
" NaN\n",
" 2\n",
" \n",
" \n",
" Cmp\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ADJ\n",
" \n",
" \n",
" JJR\n",
" 1.0\n",
" 1.0\n",
" 1.0\n",
" 1.0\n",
" 1.0\n",
" 1.000000\n",
" 1.0\n",
" 12\n",
" 0.0\n",
" 0\n",
" 2\n",
" \n",
" \n",
" 11\n",
" w\n",
" 𝗀𝖾𝗋\n",
" 18\n",
" stronger\n",
" stronger\n",
" 1\n",
" 'strɔːŋ.ɛː\n",
" 2\n",
" ger\n",
" ɛː\n",
" U\n",
" L\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 17\n",
" xcomp\n",
" NaN\n",
" 2\n",
" \n",
" \n",
" Cmp\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ADJ\n",
" \n",
" \n",
" JJR\n",
" NaN\n",
" NaN\n",
" NaN\n",
" 0.0\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 12\n",
" 0.0\n",
" 0\n",
" 2\n",
" \n",
" \n",
" 12\n",
" NaN\n",
" .\n",
" 19\n",
" .\n",
" \n",
" 0\n",
" \n",
" 0\n",
" .\n",
" \n",
" NaN\n",
" NaN\n",
" 0.0\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" 5\n",
" punct\n",
" NaN\n",
" 2\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" PUNCT\n",
" \n",
" \n",
" .\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" 3\n",
" NaN\n",
" 1\n",
" 0\n",
" \n",
" \n",
"\n",
"303 rows × 36 columns
\n",
"
],
"text/plain": [
" *total ... word_nsyll\n",
"para_i unit_i parse_rank is_troch parse_i parse parse_str sent_i sentpart_i line_i combo_i slot_i slot_meter syll_str_parse word_i word_str word_tok word_ipa_i word_ipa syll_i syll_str syll_ipa syll_stress syll_weight ... \n",
"1 1 1 0 1 wwSSwSwSwS 𝖧𝗈𝗐 𝖼𝖺𝗇 𝗜 𝙩𝙝𝙚𝙣 𝗋𝖾𝘁𝘂𝗿𝗻 𝗂𝗇 𝗵𝗮𝗽𝗉𝗒 𝗽𝗹𝗶𝗴𝗵𝘁, 1 1 1 1 1 w 𝖧𝗈𝗐 1 How how 1 haʊ 1 How haʊ U H 0.0 ... 1\n",
" 2 w 𝖼𝖺𝗇 2 can can 1 kæn 1 can kæn U H 0.0 ... 1\n",
" 3 s 𝗜 3 I i 1 'aɪ 1 I 'aɪ P H 0.0 ... 1\n",
" 4 s 𝙩𝙝𝙚𝙣 4 then then 1 'ðɛn 1 then 'ðɛn P H 1.0 ... 1\n",
" 5 w 𝗋𝖾 5 return return 1 rɪ.'tɛːn 1 re rɪ U L 0.0 ... 2\n",
"... ... ... ...\n",
" 14 2 0 1 wSwSwSSwSSw 𝖠𝗇𝖽 𝗻𝗶𝗴𝗵𝘁 𝖽𝗈𝗍𝗁 𝗻𝗶𝗴𝗵𝗍𝗅𝗒 𝗺𝗮𝗸𝗲 𝙜𝙧𝙞𝙚𝙛'𝙨 𝘭𝘦𝘯𝘨𝘵𝘩 𝘀𝗲𝗲𝗺... 4 17 14 1 8 w 𝘭𝘦𝘯𝘨𝘵𝘩 16 length length 1 'lɛŋkθ 1 length 'lɛŋkθ P H 1.0 ... 1\n",
" 9 s 𝘀𝗲𝗲𝗺 17 seem seem 1 'siːm 1 seem 'siːm P H 0.0 ... 1\n",
" 10 s 𝙨𝙩𝙧𝙤𝙣 18 stronger stronger 1 'strɔːŋ.ɛː 1 stron 'strɔːŋ P H 1.0 ... 2\n",
" 11 w 𝗀𝖾𝗋 18 stronger stronger 1 'strɔːŋ.ɛː 2 ger ɛː U L 0.0 ... 2\n",
" 12 NaN . 19 . 0 0 . NaN NaN 0.0 ... 0\n",
"\n",
"[303 rows x 36 columns]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Parse lines (verse)\n",
"sonnet.parse()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prose"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"melville=\"\"\"Is it that by its indefiniteness it shadows forth the heartless voids\n",
"and immensities of the universe, and thus stabs us from behind with the thought of annihilation,\n",
"when beholding the white depths of the milky way? Or is it, that as in essence\n",
"whiteness is not so much a colour as the visible absence of colour; and at the same time the concrete of all colours;\n",
"is it for these reasons that there is such a dumb blankness, full of meaning,\n",
"in a wide landscape of snows: a colourless, all-colour of atheism from which we shrink?\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# So are these\n",
"text = cd.Text(melville, linebreaks=False, phrasebreaks=True)\n",
"text = cd.Prose(melville)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": "ROOT/0SQ/0VBZ/0IsNP/0PRP/0itNP/0IN/0thatPP/0IN/0byNP/0PRP$/0itsNN/0indefinitenessNP/0PRP/0itVP/0VP/0VBZ/0shadowsPRT/0RP/0forthNP/0NP/0DT/0theJJ/0heartlessNNS/0voidsCC/0andNP/0NP/0NNS/0immensitiesPP/0IN/0ofNP/0DT/0theNN/0universe,/0,CC/0andADVP/0RB/0thusVP/0VBZ/0stabsNP/0PRP/0usPP/0IN/0fromPP/0IN/0behindPP/0IN/0withNP/0NP/0DT/0theNN/0thoughtPP/0IN/0ofNP/0NN/0annihilation,/0,SBAR/0WHADVP/0WRB/0whenS/0VP/0VBG/0beholdingNP/0NP/0DT/0theJJ/0whiteNNS/0depthsPP/0IN/0ofNP/0DT/0theJJ/0milkyNN/0way./0?",
"text/plain": [
"CadenceMetricalTree('ROOT/0', [CadenceMetricalTree('SQ/0', [CadenceMetricalTree('VBZ/0', ['Is']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('PRP/0', ['it'])]), CadenceMetricalTree('NP/0', [CadenceMetricalTree('IN/0', ['that'])]), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['by']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('PRP$/0', ['its']), CadenceMetricalTree('NN/0', ['indefiniteness'])])]), CadenceMetricalTree('NP/0', [CadenceMetricalTree('PRP/0', ['it'])]), CadenceMetricalTree('VP/0', [CadenceMetricalTree('VP/0', [CadenceMetricalTree('VBZ/0', ['shadows']), CadenceMetricalTree('PRT/0', [CadenceMetricalTree('RP/0', ['forth'])]), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NP/0', [CadenceMetricalTree('DT/0', ['the']), CadenceMetricalTree('JJ/0', ['heartless']), CadenceMetricalTree('NNS/0', ['voids'])]), CadenceMetricalTree('CC/0', ['and']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NP/0', [CadenceMetricalTree('NNS/0', ['immensities'])]), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['of']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('DT/0', ['the']), CadenceMetricalTree('NN/0', ['universe'])])])])])]), CadenceMetricalTree(',/0', [',']), CadenceMetricalTree('CC/0', ['and']), CadenceMetricalTree('ADVP/0', [CadenceMetricalTree('RB/0', ['thus'])]), CadenceMetricalTree('VP/0', [CadenceMetricalTree('VBZ/0', ['stabs']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('PRP/0', ['us'])]), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['from']), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['behind']), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['with']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NP/0', [CadenceMetricalTree('DT/0', ['the']), CadenceMetricalTree('NN/0', ['thought'])]), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['of']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NN/0', ['annihilation'])])])])])])]), CadenceMetricalTree(',/0', [',']), CadenceMetricalTree('SBAR/0', [CadenceMetricalTree('WHADVP/0', [CadenceMetricalTree('WRB/0', ['when'])]), CadenceMetricalTree('S/0', [CadenceMetricalTree('VP/0', [CadenceMetricalTree('VBG/0', ['beholding']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('NP/0', [CadenceMetricalTree('DT/0', ['the']), CadenceMetricalTree('JJ/0', ['white']), CadenceMetricalTree('NNS/0', ['depths'])]), CadenceMetricalTree('PP/0', [CadenceMetricalTree('IN/0', ['of']), CadenceMetricalTree('NP/0', [CadenceMetricalTree('DT/0', ['the']), CadenceMetricalTree('JJ/0', ['milky']), CadenceMetricalTree('NN/0', ['way'])])])])])])])])]), CadenceMetricalTree('./0', ['?'])])])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"text.sent(1).mtree()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5f42d3049c974a33931ff3e256f3dbb9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Metrically parsing line units: 0%| | 0/14 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" Is it that by its indefiniteness it shadows forth"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" the heartless voids and immensities of the universe,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" and thus"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" stabs us from behind with the thought of annihilation,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" when beholding the white depths of the milky way?"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" Or is it,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" that as in essence whiteness is not so"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" much a colour as the visible absence of colour;"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" and at the same time the concrete of all colours;"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" is it for these reasons that there is such a dumb blankness,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" full of meaning,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" in a wide landscape of snows:"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" a colourless,"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
" all- colour of atheism from which we shrink?"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n","
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" *total\n",
" *s_unstressed\n",
" *unres_across\n",
" *unres_within\n",
" *w_peak\n",
" *w_stressed\n",
" dep_head\n",
" dep_type\n",
" mtree_ishead\n",
" num_parses\n",
" pos_case\n",
" pos_definite\n",
" pos_degree\n",
" pos_gender\n",
" pos_mood\n",
" pos_number\n",
" pos_person\n",
" pos_polarity\n",
" pos_poss\n",
" pos_prontype\n",
" pos_tense\n",
" pos_upos\n",
" pos_verbform\n",
" pos_xpos\n",
" prom_lstress\n",
" prom_pstrength\n",
" prom_pstress\n",
" prom_strength\n",
" prom_stress\n",
" prom_tstress\n",
" prom_weight\n",
" word_depth\n",
" word_isfunc\n",
" word_ispunc\n",
" word_nsyll\n",
" \n",
" \n",
" para_i\n",
" unit_i\n",
" parse_rank\n",
" is_troch\n",
" parse_i\n",
" parse\n",
" parse_str\n",
" sent_i\n",
" sentpart_i\n",
" line_i\n",
" combo_i\n",
" slot_i\n",
" slot_meter\n",
" syll_str_parse\n",
" word_i\n",
" word_str\n",
" word_tok\n",
" word_ipa_i\n",
" word_ipa\n",
" syll_i\n",
" syll_str\n",
" syll_ipa\n",
" syll_stress\n",
" syll_weight\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1\n",
" 1\n",
" 1\n",
" 0\n",
" 1\n",
" wSwwSwSwSwwSSw\n",
" 𝖨𝗌 𝗶𝘁 𝗍𝗁𝖺𝗍 𝖻𝗒 𝙞𝙩𝙨 𝗂𝗇𝗱𝗲𝖿𝗂𝙣𝙞𝗍𝖾𝗇𝖾𝗌𝗌 𝘪𝘵 𝘀𝗵𝗮𝗱𝗼𝘄𝘀 𝘧𝘰𝘳𝘵𝘩\n",
" 1\n",
" 1\n",
" 1\n",
" 12\n",
" 1\n",
" w\n",
" 𝖨𝗌\n",
" 1\n",
" Is\n",
" is\n",
" 2\n",
" ɪz\n",
" 1\n",
" Is\n",
" ɪz\n",
" U\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 8\n",
" aux\n",
" 0.0\n",
" 27\n",
" \n",
" \n",
" \n",
" \n",
" Ind\n",
" Sing\n",
" 3\n",
" \n",
" \n",
" \n",
" Pres\n",
" AUX\n",
" Fin\n",
" VBZ\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.666667\n",
" 1.0\n",
" 3\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 2\n",
" s\n",
" 𝗶𝘁\n",
" 2\n",
" it\n",
" it\n",
" 1\n",
" 'ɪt\n",
" 1\n",
" it\n",
" 'ɪt\n",
" P\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 8\n",
" nsubj\n",
" NaN\n",
" 27\n",
" Nom\n",
" \n",
" \n",
" Neut\n",
" \n",
" Sing\n",
" 3\n",
" \n",
" \n",
" Prs\n",
" \n",
" PRON\n",
" \n",
" PRP\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 1.0\n",
" 1.0\n",
" 0.333333\n",
" 1.0\n",
" 4\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 3\n",
" w\n",
" 𝗍𝗁𝖺𝗍\n",
" 3\n",
" that\n",
" that\n",
" 2\n",
" ðət\n",
" 1\n",
" that\n",
" ðət\n",
" U\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 8\n",
" mark\n",
" NaN\n",
" 27\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" SCONJ\n",
" \n",
" IN\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.333333\n",
" 1.0\n",
" 4\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 4\n",
" w\n",
" 𝖻𝗒\n",
" 4\n",
" by\n",
" by\n",
" 1\n",
" baɪ\n",
" 1\n",
" by\n",
" baɪ\n",
" U\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 6\n",
" case\n",
" NaN\n",
" 27\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ADP\n",
" \n",
" IN\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 0.333333\n",
" 1.0\n",
" 4\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 5\n",
" s\n",
" 𝙞𝙩𝙨\n",
" 5\n",
" its\n",
" its\n",
" 1\n",
" ɪts\n",
" 1\n",
" its\n",
" ɪts\n",
" U\n",
" H\n",
" 1.0\n",
" 1.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 6\n",
" nmod:poss\n",
" 0.0\n",
" 27\n",
" \n",
" \n",
" \n",
" Neut\n",
" \n",
" Sing\n",
" 3\n",
" \n",
" Yes\n",
" Prs\n",
" \n",
" PRON\n",
" \n",
" PRP$\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 0.333333\n",
" 1.0\n",
" 5\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" ...\n",
" \n",
" \n",
" 14\n",
" 8\n",
" 0\n",
" 8\n",
" wSwwSwSwwSwS\n",
" 𝖺𝗅𝗅- 𝗰𝗼𝗅𝗈𝗎𝗋 𝘰𝘧 𝗮𝘁𝗁𝖾𝗶𝗌𝗆 𝘧𝘳𝘰𝘮 𝘄𝗵𝗶𝗰𝗵 𝗐𝖾 𝘀𝗵𝗿𝗶𝗻𝗸?\n",
" 2\n",
" 11\n",
" 6\n",
" 14\n",
" 10\n",
" w\n",
" 𝘧𝘳𝘰𝘮\n",
" 66\n",
" from\n",
" from\n",
" 1\n",
" frʌm\n",
" 1\n",
" from\n",
" frʌm\n",
" U\n",
" H\n",
" 1.0\n",
" 0.0\n",
" 1.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 67\n",
" case\n",
" NaN\n",
" 8\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ADP\n",
" \n",
" IN\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 0.250000\n",
" 1.0\n",
" 13\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 11\n",
" s\n",
" 𝘄𝗵𝗶𝗰𝗵\n",
" 67\n",
" which\n",
" which\n",
" 1\n",
" 'wɪʧ\n",
" 1\n",
" which\n",
" 'wɪʧ\n",
" P\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 69\n",
" obl\n",
" NaN\n",
" 8\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Rel\n",
" \n",
" PRON\n",
" \n",
" WDT\n",
" 0.0\n",
" NaN\n",
" 0.0\n",
" 1.0\n",
" 1.0\n",
" 0.000000\n",
" 1.0\n",
" 14\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 12\n",
" w\n",
" 𝗐𝖾\n",
" 68\n",
" we\n",
" we\n",
" 2\n",
" wiː\n",
" 1\n",
" we\n",
" wiː\n",
" U\n",
" L\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 69\n",
" nsubj\n",
" NaN\n",
" 8\n",
" Nom\n",
" \n",
" \n",
" \n",
" \n",
" Plur\n",
" 1\n",
" \n",
" \n",
" Prs\n",
" \n",
" PRON\n",
" \n",
" PRP\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.250000\n",
" 0.0\n",
" 14\n",
" 1.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 13\n",
" s\n",
" 𝘀𝗵𝗿𝗶𝗻𝗸\n",
" 69\n",
" shrink\n",
" shrink\n",
" 1\n",
" 'ʃrɪŋk\n",
" 1\n",
" shrink\n",
" 'ʃrɪŋk\n",
" P\n",
" H\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 0.0\n",
" 63\n",
" acl:relcl\n",
" NaN\n",
" 8\n",
" \n",
" \n",
" \n",
" \n",
" Ind\n",
" Plur\n",
" 1\n",
" \n",
" \n",
" \n",
" Pres\n",
" VERB\n",
" Fin\n",
" VBP\n",
" 1.0\n",
" 1.0\n",
" 1.0\n",
" NaN\n",
" 1.0\n",
" 1.000000\n",
" 1.0\n",
" 14\n",
" 0.0\n",
" 0\n",
" 1\n",
" \n",
" \n",
" 14\n",
" NaN\n",
" ?\n",
" 70\n",
" ?\n",
" \n",
" 0\n",
" \n",
" 0\n",
" ?\n",
" \n",
" NaN\n",
" NaN\n",
" 0.0\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" 3\n",
" punct\n",
" NaN\n",
" 8\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" PUNCT\n",
" \n",
" .\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" NaN\n",
" 3\n",
" NaN\n",
" 1\n",
" 0\n",
" \n",
" \n",
"\n",
"1241 rows × 35 columns
\n",
"
],
"text/plain": [
" *total ... word_nsyll\n",
"para_i unit_i parse_rank is_troch parse_i parse parse_str sent_i sentpart_i line_i combo_i slot_i slot_meter syll_str_parse word_i word_str word_tok word_ipa_i word_ipa syll_i syll_str syll_ipa syll_stress syll_weight ... \n",
"1 1 1 0 1 wSwwSwSwSwwSSw 𝖨𝗌 𝗶𝘁 𝗍𝗁𝖺𝗍 𝖻𝗒 𝙞𝙩𝙨 𝗂𝗇𝗱𝗲𝖿𝗂𝙣𝙞𝗍𝖾𝗇𝖾𝗌𝗌 𝘪𝘵 𝘀𝗵𝗮𝗱𝗼𝘄𝘀 𝘧𝘰𝘳𝘵𝘩 1 1 1 12 1 w 𝖨𝗌 1 Is is 2 ɪz 1 Is ɪz U H 0.0 ... 1\n",
" 2 s 𝗶𝘁 2 it it 1 'ɪt 1 it 'ɪt P H 0.0 ... 1\n",
" 3 w 𝗍𝗁𝖺𝗍 3 that that 2 ðət 1 that ðət U H 0.0 ... 1\n",
" 4 w 𝖻𝗒 4 by by 1 baɪ 1 by baɪ U H 0.0 ... 1\n",
" 5 s 𝙞𝙩𝙨 5 its its 1 ɪts 1 its ɪts U H 1.0 ... 1\n",
"... ... ... ...\n",
" 14 8 0 8 wSwwSwSwwSwS 𝖺𝗅𝗅- 𝗰𝗼𝗅𝗈𝗎𝗋 𝘰𝘧 𝗮𝘁𝗁𝖾𝗶𝗌𝗆 𝘧𝘳𝘰𝘮 𝘄𝗵𝗶𝗰𝗵 𝗐𝖾 𝘀𝗵𝗿𝗶𝗻𝗸? 2 11 6 14 10 w 𝘧𝘳𝘰𝘮 66 from from 1 frʌm 1 from frʌm U H 1.0 ... 1\n",
" 11 s 𝘄𝗵𝗶𝗰𝗵 67 which which 1 'wɪʧ 1 which 'wɪʧ P H 0.0 ... 1\n",
" 12 w 𝗐𝖾 68 we we 2 wiː 1 we wiː U L 0.0 ... 1\n",
" 13 s 𝘀𝗵𝗿𝗶𝗻𝗸 69 shrink shrink 1 'ʃrɪŋk 1 shrink 'ʃrɪŋk P H 0.0 ... 1\n",
" 14 NaN ? 70 ? 0 0 ? NaN NaN 0.0 ... 0\n",
"\n",
"[1241 rows x 35 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"text.parse()"
]
}
],
"metadata": {
"interpreter": {
"hash": "96e96d1fcde428da9c8322daedfd0e8890a2dfa3c4fb6b7de685db4b856c7b39"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.8.11"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}