class: center, middle, inverse, title-slide # {rdracor} ## R пакет-wrapper для DraCor API ### Иван Поздняков ### НИУ ВШЭ, Devoteam Russia ### 2021-02-24 --- --- class: primary, center, middle # ШТА? --- Какой DraCor? -- Какой API? -- Какой wrapper? -- Ты че, пес? -- ... -- ...... -- Ладно. -- Давайте по порядку. --- --- class: primary, center, middle #Digital literary studies ---  ---  ---  --- class: primary, center, middle #TEI --- #TEI < Text Encoding Initiative > - digital humanities сообщество, разрабатывающее формат TEI. TEI -- разновидность XML-разметки для кодирования различных текстов. --- #Пример TEI ```{} <sp who="#gretchen"> <speaker>MARGARETE.</speaker> <lg> <l>Nun sag, wie hast du’s mit der Religion?</l> <l>Du bist ein herzlich guter Mann,</l> <l>Allein ich glaub’, du hältst nicht viel davon.</l> </lg> </sp> <sp who="#faust"> <speaker>FAUST.</speaker> <lg> <l>Laß das, mein Kind! Du fühlst, ich bin dir gut;</l> <l>Für meine Lieben ließ’ ich Leib und Blut,</l> <l>Will niemand sein Gefühl und seine Kirche rauben.</l> </lg> </sp> ``` --- class: primary, center, middle  #DraCor --- #DraCor ###DraCor - Реализация концепции ###ProgrammableCorpora https://dracor.org Цель - создание инфраструктуры для digital literary studies ---  ---  ---  ---  ---  https://shiny.dracor.org ---  --- #API-wrappers - **rdracor** - PyDraCor - HDraCor Создание удобного интерфейса для DraCor API --- class: primary, center, middle #{rdracor} https://github.com/Pozdniakov/rdracor/blob/master/README.md --- # Расчехляем {rdracor} Установка {rdracor}: ```r #install.packages("remotes") #if you don't have remotes installed remotes::install_github("Pozdniakov/rdracor") ``` -- Подключение {rdracor}: ```r library(rdracor) ``` Подключаем {tidyverse} <sup>*</sup>: ```r library(tidyverse) ``` .footnote[[*] пакет {rdracor} написан на {data.table}, я с вами, ребята-тейблисты! Но демонстрировать возможности {rdracor} удобнее в {tidyverse}] --- Проверяем версию API и что все работает: ```r get_dracor_api_info() ``` ``` ## name status existdb version ## 1 DraCor API beta 5.2.0 0.77.0 ``` Смотрим саммари по корпусам в DraCor: ```r get_dracor_meta() %>% summary() ``` ``` ## DraCor hosts 11 corpora comprising 1146 plays. ## ## The last updated corpus was German Drama Corpus (2021-02-20 23:19:39). ``` --- Посмотрим, сколько и какие корпуса есть в проекте на сегодняшний день: ```r get_dracor_meta() %>% as_tibble() ``` ``` ## # A tibble: 11 x 18 ## repository name uri title description licence licenceUrl characters female ## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <int> <int> ## 1 https://g… ger http… Germ… Edited by … CC0 https://c… 12640 2579 ## 2 https://g… rus http… Russ… Edited by … CC0 https://c… 3647 861 ## 3 https://g… ita http… Ital… Derived fr… <NA> <NA> 1535 0 ## 4 https://g… swe http… Swed… Derived fr… <NA> <NA> 769 327 ## 5 https://g… cal http… Cald… Edited by … <NA> <NA> 839 284 ## 6 https://g… greek http… Gree… Derived fr… CC BY-… https://c… 437 110 ## 7 https://g… shake http… Shak… Derived fr… CC BY-… https://c… 1433 117 ## 8 https://g… rom http… Roma… Derived fr… CC BY-… https://c… 405 104 ## 9 https://g… span http… Span… Edited by … <NA> <NA> 580 226 ## 10 https://g… als http… Alsa… Edited by … <NA> <NA> 110 33 ## 11 https://g… tat http… Tata… Edited by … <NA> <NA> 30 9 ## # … with 9 more variables: text <int>, male <int>, updated <dttm>, sp <int>, ## # stage <int>, plays <int>, wordcount.text <int>, wordcount.sp <int>, ## # wordcount.stage <int> ``` --- Полный список корпусов и количество пьес в них: ```r get_dracor_meta() %>% select(name, title, plays) ``` ``` ## name title plays ## 3 ger German Drama Corpus 527 ## 7 rus Russian Drama Corpus 211 ## 5 ita Italian Drama Corpus 139 ## 10 swe Swedish Drama Corpus 68 ## 2 cal Calderón Drama Corpus 54 ## 4 greek Greek Drama Corpus 39 ## 8 shake Shakespeare Drama Corpus 37 ## 6 rom Roman Drama Corpus 36 ## 9 span Spanish Drama Corpus 25 ## 1 als Alsatian Drama Corpus 7 ## 11 tat Tatar Drama Corpus 3 ``` --- ```r get_dracor_meta() %>% plot() ``` <!-- --> --- class: inverse # Задание! - Посчитайте суммарное количество пьес во всех корпусах DraCor. - Посчитайте долю женских персонажей для каждого из корпусов. - Отсортируйте корпуса по доле женских персонажей (по возрастанию). --- class: inverse # Решение - Посчитайте суммарное количество пьес во всех корпусах DraCor. ```r get_dracor_meta() %>% summarise(sum(plays)) ``` ``` ## sum(plays) ## 1 1146 ``` --- class: inverse # Решение - Посчитайте долю женских персонажей для каждого из корпусов. ```r get_dracor_meta() %>% mutate(female_ratio = female/(female + male)) %>% select(title, female_ratio) ``` ``` ## title female_ratio ## 3 German Drama Corpus 0.2240660 ## 7 Russian Drama Corpus 0.2518280 ## 5 Italian Drama Corpus NaN ## 10 Swedish Drama Corpus 0.4612130 ## 2 Calderón Drama Corpus 0.3405276 ## 4 Greek Drama Corpus 0.2857143 ## 8 Shakespeare Drama Corpus 0.1281490 ## 6 Roman Drama Corpus 0.2722513 ## 9 Spanish Drama Corpus 0.4057451 ## 1 Alsatian Drama Corpus 0.3437500 ## 11 Tatar Drama Corpus 0.3103448 ``` --- class: inverse # Решение ```r get_dracor_meta() %>% mutate(female_ratio = female/(female + male)) %>% select(title, female_ratio) %>% arrange(female_ratio) ``` ``` ## title female_ratio ## 1 Shakespeare Drama Corpus 0.1281490 ## 2 German Drama Corpus 0.2240660 ## 3 Russian Drama Corpus 0.2518280 ## 4 Roman Drama Corpus 0.2722513 ## 5 Greek Drama Corpus 0.2857143 ## 6 Tatar Drama Corpus 0.3103448 ## 7 Calderón Drama Corpus 0.3405276 ## 8 Alsatian Drama Corpus 0.3437500 ## 9 Spanish Drama Corpus 0.4057451 ## 10 Swedish Drama Corpus 0.4612130 ## 11 Italian Drama Corpus NaN ``` --- --- #Скачиваем метаданные пьес Скачиваем татарский корпус: ```r tat <- get_dracor("tat") summary(tat) ``` ``` ## 3 plays in Tatar Drama Corpus ## Corpus id: tat, repository: https://github.com/dracor-org/tatdracor ## Written years (range): 1908 - 1912 ## No information on premiere years ## No information on years of the first printing ``` ```r tat %>% as_tibble() ``` ``` ## # A tibble: 3 x 44 ## corpus id playName yearNormalized title subtitle firstAuthorName ## <chr> <chr> <chr> <int> <chr> <chr> <chr> ## 1 tat tat0… qamal-b… 1908 Бере… Комедия… Камал, Галиәсг… ## 2 tat tat0… qamal-k… 1912 Кайн… Пьеса 1… Камал, Галиәсг… ## 3 tat tat0… qamal-b… 1911 Безн… (Пьеса) Камал, Галиәсг… ## # … with 37 more variables: firstAuthorKey <chr>, authors <list>, source <chr>, ## # sourceUrl <chr>, writtenYearStart <lgl>, writtenYearFinish <int>, ## # printYearStart <lgl>, printYearFinish <lgl>, premiereYearStart <lgl>, ## # premiereYearFinish <lgl>, wikidataId <chr>, networkSize <int>, ## # networkdataCsvUrl <chr>, size <int>, density <dbl>, diameter <int>, ## # averageClustering <dbl>, averagePathLength <dbl>, averageDegree <dbl>, ## # maxDegree <int>, maxDegreeIds <chr>, numConnectedComponents <int>, ## # wordCountSp <int>, wordCountText <int>, wordCountStage <int>, ## # numOfSpeakers <int>, numOfSpeakersFemale <int>, numOfSpeakersMale <int>, ## # numOfSpeakersUnknown <int>, numOfPersonGroups <int>, numOfSegments <int>, ## # numOfActs <int>, wikipediaLinkCount <int>, genre <lgl>, libretto <lgl>, ## # firstAuthor <chr>, numOfCoAuthors <int> ``` --- Скачиваем сразу все корпуса: ```r all <- get_dracor() ``` Если скачивается слишком долго, используйте `full_metadata = FALSE` ```r summary(all) ``` ``` ## 1148 plays in 11 corpora: ## Corpora id: ## ger (527 plays),rus (211 plays),ita (139 plays),swe (70 plays),cal (54 plays),greek (39 plays),shake (37 plays),rom (36 plays),span (25 plays),als (7 plays),tat (3 plays) ## Written years (range): 43 - 1947 ## Premiere years (range): -472 - 1992 ## Years of the first printing (range): 1493 - 1986 ``` --- ```r all %>% as_tibble() ``` ``` ## # A tibble: 1,148 x 44 ## corpus id playName yearNormalized title subtitle firstAuthorName ## <chr> <chr> <chr> <int> <chr> <chr> <chr> ## 1 ger ger0… goethe-… 1787 Iphi… Ein Sch… Goethe, Johann… ## 2 ger ger0… hafner-… 1763 Mäge… Ein neu… Hafner, Philipp ## 3 ger ger0… wedekin… 1899 Der … – Wedekind, Frank ## 4 ger ger0… immerma… 1832 Merl… Eine My… Immermann, Karl ## 5 ger ger0… hafner-… 1764 Der … Ein Lus… Hafner, Philipp ## 6 ger ger0… gutzkow… 1839 Rich… Trauers… Gutzkow, Karl ## 7 ger ger0… mylius-… 1749 Die … Ein Lus… Mylius, Christ… ## 8 ger ger0… schille… 1781 Die … Ein Sch… Schiller, Frie… ## 9 ger ger0… gotter-… 1775 Der … Eine ko… Gotter, Friedr… ## 10 ger ger0… grillpa… 1831 Des … Trauers… Grillparzer, F… ## # … with 1,138 more rows, and 37 more variables: firstAuthorKey <chr>, ## # authors <list>, source <chr>, sourceUrl <chr>, writtenYearStart <int>, ## # writtenYearFinish <int>, printYearStart <lgl>, printYearFinish <int>, ## # premiereYearStart <int>, premiereYearFinish <int>, wikidataId <chr>, ## # networkSize <int>, networkdataCsvUrl <chr>, size <int>, density <dbl>, ## # diameter <int>, averageClustering <dbl>, averagePathLength <dbl>, ## # averageDegree <dbl>, maxDegree <int>, maxDegreeIds <chr>, ## # numConnectedComponents <int>, wordCountSp <int>, wordCountText <int>, ## # wordCountStage <int>, numOfSpeakers <int>, numOfSpeakersFemale <int>, ## # numOfSpeakersMale <int>, numOfSpeakersUnknown <int>, ## # numOfPersonGroups <int>, numOfSegments <int>, numOfActs <int>, ## # wikipediaLinkCount <int>, genre <chr>, libretto <lgl>, firstAuthor <chr>, ## # numOfCoAuthors <int> ``` --- Самые длинные (по количеству слов) пьесы из всех корпусов: ```r all %>% arrange(desc(wordCountText)) %>% select(corpus, firstAuthorName, title, wordCountText) %>% slice(1:10) ``` ``` ## corpus firstAuthorName ## 1 ger Kraus, Karl ## 2 ger Holz, Arno ## 3 ger Brentano, Clemens ## 4 ger Tieck, Ludwig ## 5 ger Holz, Arno ## 6 ita Torquato Tasso ## 7 ger Goethe, Johann Wolfgang ## 8 ger Arnim, Achim von ## 9 ger Maler Müller ## 10 ger Schiller, Friedrich ## title wordCountText ## 1 Die letzten Tage der Menschheit 186504 ## 2 Ignorabimus 105637 ## 3 Die Gründung Prags 78038 ## 4 Prinz Zerbino oder die Reise nach dem guten Geschmack 58031 ## 5 Sonnenfinsternis 56770 ## 6 Intrichi d'Amore 49229 ## 7 Faust. Der Tragödie zweiter Teil 47820 ## 8 Halle 47644 ## 9 Golo und Genovefa 47033 ## 10 Don Carlos, Infant von Spanien 44148 ``` --- class: inverse # Задание! - Найдите всех авторов, у которых больше всего произведений в корпусе, для каждого корпуса. - Найдите самые большие произведения по количеству персонажей для каждого из корпусов. --- class: inverse # Решение Найдите всех авторов, у которых больше всего произведений в корпусе, для каждого корпуса. ```r all %>% count(corpus, firstAuthorName, sort = TRUE) %>% group_by(corpus) %>% slice_max(order_by = n, n = 1) ``` ``` ## # A tibble: 13 x 3 ## # Groups: corpus [11] ## corpus firstAuthorName n ## <chr> <chr> <int> ## 1 als Gustave Stoskopf 2 ## 2 cal Calderón de la Barca, Pedro 54 ## 3 ger Goethe, Johann Wolfgang 20 ## 4 ger Scheerbart, Paul 20 ## 5 greek Euripides 13 ## 6 ita Pietro Metastasio 20 ## 7 rom Plautus 20 ## 8 rus Островский, Александр Николаевич 37 ## 9 shake William Shakespeare 37 ## 10 span Lorca, Federico García 5 ## 11 span Valle Inclán, Ramón María del 5 ## 12 swe Strindberg, August 19 ## 13 tat Камал, Галиәсгар 3 ``` --- class: inverse # Решение Найдите самые большие произведения по количеству персонажей для каждого из корпусов. ```r all %>% group_by(corpus) %>% slice_max(order_by = size, n = 1) ``` ``` ## # A tibble: 14 x 44 ## # Groups: corpus [11] ## corpus id playName yearNormalized title subtitle firstAuthorName ## <chr> <chr> <chr> <int> <chr> <chr> <chr> ## 1 als als0… bastian… 1937 D’r … Märel i… Ferdinand Bast… ## 2 cal cal0… la-auro… 1674 La a… Comedia… Calderón de la… ## 3 cal cal0… loa-a-f… 1717 Loa … <NA> Calderón de la… ## 4 ger ger0… kraus-d… 1919 Die … Tragödi… Kraus, Karl ## 5 greek gree… aristop… -411 Lysi… <NA> Aristophanes ## 6 ita ita0… dal-car… 1499 Noze… <NA> Galeotto Dal C… ## 7 ita ita0… de-medi… 1491 Rapp… <NA> Lorenzo de' Me… ## 8 ita ita0… manzoni… 1822 Adel… <NA> Alessandro Man… ## 9 rom rom0… terence… -161 Eunu… <NA> Terence ## 10 rus rus0… tolstoy… 1870 Царь… Трагеди… Толстой, Алекс… ## 11 shake shak… antony-… 1606 Anto… <NA> William Shakes… ## 12 span span… valle-a… 1907 Águi… Comedia… Valle Inclán, … ## 13 swe swe0… strindb… 1898 Till… <NA> Strindberg, Au… ## 14 tat tat0… qamal-b… 1911 Безн… (Пьеса) Камал, Галиәсг… ## # … with 37 more variables: firstAuthorKey <chr>, authors <list>, source <chr>, ## # sourceUrl <chr>, writtenYearStart <int>, writtenYearFinish <int>, ## # printYearStart <lgl>, printYearFinish <int>, premiereYearStart <int>, ## # premiereYearFinish <int>, wikidataId <chr>, networkSize <int>, ## # networkdataCsvUrl <chr>, size <int>, density <dbl>, diameter <int>, ## # averageClustering <dbl>, averagePathLength <dbl>, averageDegree <dbl>, ## # maxDegree <int>, maxDegreeIds <chr>, numConnectedComponents <int>, ## # wordCountSp <int>, wordCountText <int>, wordCountStage <int>, ## # numOfSpeakers <int>, numOfSpeakersFemale <int>, numOfSpeakersMale <int>, ## # numOfSpeakersUnknown <int>, numOfPersonGroups <int>, numOfSegments <int>, ## # numOfActs <int>, wikipediaLinkCount <int>, genre <chr>, libretto <lgl>, ## # firstAuthor <chr>, numOfCoAuthors <int> ``` --- # Работа с графами! Для каждой пьесы можно построить сеть по co-ocurance matrix. Сила связи между персонажами - количество общих сцен. ```r all %>% filter(corpus == "rus") %>% slice_max(size, n = 1) %>% select(corpus, playName) ``` ``` ## corpus playName ## 1 rus tolstoy-tsar-boris ``` --- ```r tolstoy_tsar_boris <- play_igraph("rus", "tolstoy-tsar-boris") plot(tolstoy_tsar_boris) ``` <!-- --> --- В результате выполнения функции `play_igraph()` создается объект со следующими классами: ```r class(tolstoy_tsar_boris) ``` ``` ## [1] "play_igraph" "igraph" ``` С этим объектом можно работать как с обычным объектом класса `igraph` (пакет {igraph}). ```r tolstoy_tsar_boris %>% igraph::diameter() ``` ``` ## [1] 4 ``` ```r tolstoy_tsar_boris %>% igraph::edge_density() ``` ``` ## [1] 0.2055911 ``` --- ```r igraph::page.rank(tolstoy_tsar_boris) %>% pluck("vector") %>% sort(decreasing = TRUE) %>% `[`(1:5) ``` ``` ## Царь Борис Федорович Годунов Семен Годунов ## 0.03509061 0.03487329 ## Князь Василий Иванович Шуйский Царевна Ксения ## 0.02891912 0.02702143 ## Царица Мария Григорьевна ## 0.02442523 ``` --- Но `summary()` и `plot()` для этих объектов работает особым образом: ```r summary(tolstoy_tsar_boris) ``` ``` ## rus: tolstoy-tsar-boris - network summary ## ## Size: 102 (11 FEMALES, 81 MALES, 10 UNKNOWN) ## Density: 0.21 ## Degree: ## - Maximum: 58 (Князь Василий Иванович Шуйский) ## Distance: ## - Maximum (Diameter): 4 ## - Average: 1.97 ## Clustering: ## - Global: 0.87 ## - Average local: 0.96 ## Cohesion: 0 ## Assortativity: 0.15 ``` --- ```r plot(tolstoy_tsar_boris) ``` <!-- --> --- class: inverse # Задание! Найдите самую большую пьесу из русского корпуса и визуализируйте ее граф. --- --- class: inverse # Решение Найдите самую большую пьесу из русского корпуса и визуализируйте ее граф. ```r all %>% filter(corpus == "rus") %>% slice_max(wordCountText, n = 1) %>% select(playName, wordCountText) ``` ``` ## playName wordCountText ## 1 leskov-rastochitel 29694 ``` ```r leskov_rastochitel <- play_igraph("rus", "leskov-rastochitel") plot(leskov_rastochitel) ``` <!-- --> --- #TEI и текст в {rdracor} Для каждой пьесы можно вытащить все реплики персонажей с помощью функции `get_play_spoken_text()`, а также все сценические ремарки с помощью `get_play_stage_directions()`. ```r library(magrittr) all %>% filter(corpus == "rus") %>% slice_min(wordCountText, n = 1) %$% get_play_spoken_text(corpus, playName) ``` ``` ## [1] "Да, я люблю среди лавров и роз" "Смуглых сатиров затеи." ## [3] "Да, я люблю и Лесбос и Парос." "Да, я люблю Пропилеи." ## [5] "Да, я люблю, чтоб певец Демодок" "В душу вдыхал мне свой пламень." ## [7] "Фивского мрамора белый кусок!" "Тирский увесистый камень!" ## [9] "Туники складки!" "Хламиды извив!" ## [11] "Пляску в движении мерном." "Сук, наклоненный под бременем слив." ## [13] "Чашу с душистым фалерном!" "Любо смотреть мне на группу борцов," ## [15] "Так охвативших друг друга!" "Взмахи могучих люблю кулаков!" ## [17] "Мышцы, надутые туго." "Ногу — на столько подвинуть вперед!" ## [19] "Руку — вот этак закинуть!" "Телу изящный придать поворот..." ## [21] "Ногу назад отодвинуть!" "Часто лежу я под сенью дерев." ## [23] "Внемлю кузнечиков крикам." "Нравится мне на стене барельеф." ## [25] "Я все брожу под портиком!" "Думы рождает во мне кипарис." ## [27] "Плачу под звук тетрахордин." "Страстно люблю архитрав и карниз." ## [29] "Я же — дорический орден." "Барсову кожу я гладить люблю!" ## [31] "Нюхать янтарные токи!" "Ем виноград!" ## [33] "Я ж охотно треплю" "Отрока полные щеки." ## [35] "Свесть не могу очарованных глаз" "С формы изящной котурна." ## [37] "После прогулок моих утомясь," "Я опираюсь на урну." ``` --- Наконец, можно вытащить саму пьесу в формате TEI. TEI пьеса будет распарсена пакетом {xml2}. ```r all %>% filter(corpus == "rus") %>% slice_min(wordCountText, n = 1) %$% get_play_tei(corpus, playName) %>% as.character() %>% cat() ``` ``` ## <?xml version="1.0" encoding="UTF-8"?> ## <?xml-model href="https://dracor.org/schema.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> ## <TEI xmlns="http://www.tei-c.org/ns/1.0" xml:lang="rus"> ## <teiHeader> ## <fileDesc> ## <titleStmt> ## <title type="main">Спор древних греческих философов об изящном</title> ## <title type="main" xml:lang="eng">Discourse between Two Greek Philosophers about ## Beauty</title> ## <title type="sub">Драматическая сцена из древнегреческой классической жизни в стихах</title> ## <title type="sub" xml:lang="eng">Dramatic Scene from Hellenic Classical Life in ## Verse</title> ## <author> ## <persName type="pseudo"> ## <forename>Козьма</forename> ## <surname>Прутков</surname> ## </persName> ## <persName xml:lang="eng"> ## <forename>Kozma</forename> ## <surname>Prutkov</surname> ## </persName> ## <idno type="wikidata">Q1784989</idno> ## </author> ## </titleStmt> ## <publicationStmt> ## <publisher xml:id="dracor">DraCor</publisher> ## <idno type="dracor" xml:base="https://dracor.org/id/">rus000023</idno> ## <availability> ## <licence> ## <ab>CC0 1.0</ab> ## <ref target="https://creativecommons.org/publicdomain/zero/1.0/">Licence</ref> ## </licence> ## </availability> ## <idno type="wikidata" xml:base="http://www.wikidata.org/entity/">Q16314603</idno> ## </publicationStmt> ## <sourceDesc> ## <bibl type="digitalSource"> ## <name>Wikisource</name> ## <idno type="URL">https://ru.wikisource.org/wiki/Спор_древних_греческих_философов_об_изящном_(Прутков)</idno> ## <availability> ## <licence> ## <ab>CC BY-SA 3.0</ab> ## <ref target="https://creativecommons.org/licenses/by-sa/3.0/deed.ru">Licence</ref> ## </licence> ## </availability> ## <bibl type="originalSource"> ## <title/> ## <date type="print" when="1854">"Первая опубликованная пьеса Козьмы Пруткова — ## «Современник», 1854, № 2." (Wikisource)</date> ## <date type="premiere"/> ## <date type="written"/> ## </bibl> ## </bibl> ## </sourceDesc> ## </fileDesc> ## <profileDesc> ## <particDesc> ## <listPerson> ## <person xml:id="Klefiston" sex="MALE"> ## <persName>Клефистон</persName> ## </person> ## <person xml:id="Stif" sex="MALE"> ## <persName>Стиф</persName> ## </person> ## </listPerson> ## </particDesc> ## <textClass> ## <keywords> ## <term type="genreTitle"/> ## </keywords> ## </textClass> ## </profileDesc> ## <revisionDesc> ## <listChange> ## <change when="2017-04-13">(ip) convert from source</change> ## <change when="2017-04-19">(ff) establish well-formedness</change> ## <change when="2017-05-01">(sl) check IDs, everything is ok</change> ## <change when="2017-06-03">(to) add gender info</change> ## <change when="2017-06-16">(ff) add English title</change> ## </listChange> ## </revisionDesc> ## </teiHeader> ## <text> ## <front> ## <docTitle> ## <titlePart type="main">Спор древних греческих философов об изящном</titlePart> ## <titlePart type="sub">Действие происходит в окрестностях Древних Афин.</titlePart> ## </docTitle> ## <castList> ## <head>ДЕЙСТВУЮЩИЕ ЛИЦА</head> ## <castGroup rend="braced"> ## <castItem> ## <role>Клефистон</role> ## </castItem> ## <castItem> ## <role>Стиф</role> ## </castItem> ## <roleDesc>древние греческие философы.</roleDesc> ## </castGroup> ## </castList> ## </front> ## <body> ## <div type="scene"> ## <stage>Сцена представляет восхитительное местоположение в окрестностях Древних Афин, ## украшенное всеми изумительными дарами древней благодатной греческой природы, то есть: ## анемонами, змеями, ползающими по цистернам; медяницами, сосущими померанцы; акамфами, ## платановыми темнопрохладными наметами, раскидистыми пальмами, летающими щурами, зеленеющим ## мелисом и мастикой. Вдали виден Акрополь, поражающий гармонией своих линий. На первом ## плане, у каждой стороны сцены, стоит по курящемуся жертвеннику на золоченом треножнике. ## Сцена пуста. Немного погодя из глубины сцены выходят, с противоположных сторон, два ## философа: Клефистон и Стиф. Оба в белых хламидах, с гордою осанкою и с пластическими ## телодвижениями. Медленно переставляя ноги, так что одна всегда остается далеко позади ## другой, они сближаются постепенно к середине сцены, приостанавливаются, указывают друг ## другу на жертвенник своей стороны и направляют к тому жертвеннику свои тихие шаги. Дойдя ## до жертвенников, они останавливаются, возлагают одну руку на жертвенник и ## начинают:</stage> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Да, я люблю среди лавров и роз</l> ## <l>Смуглых сатиров затеи.</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Да, я люблю и Лесбос и Парос.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Да, я люблю Пропилеи.</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Да, я люблю, чтоб певец Демодок</l> ## <l>В душу вдыхал мне свой пламень.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Фивского мрамора белый кусок!</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Тирский увесистый камень!</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Туники складки!</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l part="F"> Хламиды извив!</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Пляску в движении мерном.</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Сук, наклоненный под бременем слив.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Чашу с душистым фалерном!</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Любо смотреть мне на группу борцов,</l> ## <l>Так охвативших друг друга!</l> ## <stage>(Показывает руками.)</stage> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Взмахи могучих люблю кулаков!</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Мышцы, надутые туго.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Ногу — на столько подвинуть вперед!</l> ## <stage>Оба, смотря друг на друга, выдвигают: один левую, другой правую ногу.</stage> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Руку — вот этак закинуть!</l> ## <stage>Оба, смотря друг на друга, закидывают дугообразно: один левую, другой правую ## руку.</stage> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Телу изящный придать поворот...</l> ## <stage>Оба пластически откидываются: один влево, другой вправо.</stage> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Ногу назад отодвинуть!</l> ## <stage>Оба поспешно отодвигают выдвинутую ногу.</stage> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Часто лежу я под сенью дерев.</l> ## <stage>Оба принимают прежнее спокойное положение, опустив опять одну руку на ## жертвенник.</stage> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Внемлю кузнечиков крикам.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Нравится мне на стене барельеф.</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Я все брожу под портиком!</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Думы рождает во мне кипарис.</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Плачу под звук тетрахордин.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <l>Страстно люблю архитрав и карниз.</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <l>Я же — дорический орден.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <stage>(разгорячась)</stage> ## <l>Барсову кожу я гладить люблю!</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <stage>(с самодовольством)</stage> ## <l>Нюхать янтарные токи!</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <stage>(со злобой)</stage> ## <l>Ем виноград!</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <stage>(с гордостью)</stage> ## <l part="F"> Я ж охотно треплю</l> ## <l>Отрока полные щеки.</l> ## </sp> ## <sp who="#Klefiston"> ## <speaker>Клефистон</speaker> ## <stage>(самоуверенно)</stage> ## <l>Свесть не могу очарованных глаз</l> ## <l>С формы изящной котурна.</l> ## </sp> ## <sp who="#Stif"> ## <speaker>Стиф</speaker> ## <stage>(со спокойным торжеством и с сознанием своего достоинства)</stage> ## <l>После прогулок моих утомясь,</l> ## <l>Я опираюсь на урну.</l> ## <stage>Изящно изгибаясь всем станом, опирается локтем правой руки на кулак левой, будто на ## урну, выказывая таким образом пластическую выпуклость одного бедра и одной ## Лядвеи.</stage> ## </sp> ## <stage>Клефистон бросает на Стифа завистливый взгляд. Постояв так немного, они оба ## отворачиваются от своего жертвенника к противоположному, заднему углу стены и, злобно ## взглядывая друг на друга, направляются туда столь же медленно, как выходили на сцену. С ## уходом их сцена остается пуста. По цистернам ползают змеи, а медяницы продолжают сосать ## померанцы. Акрополь все еще виден вдали.</stage> ## </div> ## </body> ## </text> ## </TEI> ```