“Длинная телеграмма” - один из ключевых документов внешней политики США на заре Холодной Войны (Ullman 2005). Это телеграмма была напревлена послом США в СССР Д. Кеннаном 26 февраля 1946 года в ответ на запрос из Казначейства США. Она получила своё навазние потому что это большой текст на 8 тысяч слов. Обычно, телеграммы более короткие.
Благодаря своему содержанию телеграмма распространилась далеко за пределы кабинетов для которых она готовилась. А Д. Кеннан стал “архитектором”доктрины сдерживания СССР и признанным лидером в деле формирования внешнеполитического курса США.
Дипломаты и чиновники создают сотни телеграмм в день и обениваются ими. Эта телеграмма наряду с такими документами как “Телеграмма Циммерманна”, которая убедила США вступить в 1 Мировую Войну и “Эмсская депеша”, которая спровоцировала начало войны Пруссии и Франции представляет собой исключительно важный единичный документ, который своим появлением оказал существенное влияние на ход истории.
Все вышеупомянутые документы, а также истории их возникновения изучаются и читаются историками и специалистами в сфере международных отношений. Часто происходит так, что за деревьями не видно леса, а за словами смысла. Д.Кеннан, американский дипломат, который занимал высокопоставленный пост в Государственном департаменте США в документе датированом 1946 годом упортребляет слова Soviet Union, USSR и Russia по отношению к одному и тому же актору. В строгих документах, а дипломатическая телеграмма относится к таковым, делают всё, чтобы избежать двойственных толкований и запутанностей. Текст должен быть ясным и кратким. Как уже понятно, текст длинный. А ясный - это категория оценочная. Зачем Д. Кеннан употребляет оба слова для обозначения одного актора?
Более того, в 1941 году будущий президент США Г. Трумэн, а на тот момент сенатор говорит следующее:
If we see that Germany is winning we ought to help Russia and if Russia is winning we ought to help Germany and that way let them kill as many as possible, although I don’t want to see Hitler victorious under any circumstances. Neither of them think anything of their pledged word.
Опустим моральные дискуссии такого высказывания. Большая политика не знает такого подхода. Здесь мы снова видим Russia, хотя на дворе 1941 год и логичнее было бы назвать USSR или Soviets. Несмотря на то, что Г. Трумэн слыл “деревенщиной”, его так называли его же коллеги, маловероятно, что он не знал о существовании СССР, тем более будучи сенатором США.
Сенатор США “путает” страну, посол США в СССР называет страну своего пребывания и Россия и СССР, в чём причина такого помешательства? Никакого помешательства нет. Мы же называем жителей Германии немцами, хотя они германцы. Потому что со времён Петра 1 за всеми иностранцами закрепилось слово немцы, которое происходит от слова немой, то есть тот, который не говорит по-русски и жили они в немецкой слободе. А так как среди иностранцев выходцы из территории нынешей Германии представляли большинство, то в русском языке так и сохранилось за ними - немцы.
Более того, каждый англичанин - житель Великобритании, но не каждый житель Великобритании англичанин. Великобритания состоит из 4 провинций: Англия, Шотлнадия, Уэльс и Северная Ирландия. Но для нас они все англичане. Таким образом, узкий исследовательсикй вопрос сотоит в том, чтобы выяснить в каком контексте Д. Кеннан употребляет слово Россия, а в каком СССР. Есть ли пересечения или он их использует в разных обстоятельствах? Широкий исслдовательский вопрос может состоять в том, чтобы собрать корпус внешнеполитических документов США и определить конктесты этих слов на большом объеме данных. Но для перехода к этой задаче необходимо апробировать её.
Перед началом работы установим все необходимые библиотеки
library(tidyverse)
## Warning: пакет 'dplyr' был собран под R версии 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(rvest)
## Warning: пакет 'rvest' был собран под R версии 4.3.2
##
## Присоединяю пакет: 'rvest'
##
## Следующий объект скрыт от 'package:readr':
##
## guess_encoding
library(dplyr)
library(tidytext)
## Warning: пакет 'tidytext' был собран под R версии 4.3.2
library(stringr)
library(udpipe)
## Warning: пакет 'udpipe' был собран под R версии 4.3.2
library(igraph)
## Warning: пакет 'igraph' был собран под R версии 4.3.2
##
## Присоединяю пакет: 'igraph'
##
## Следующие объекты скрыты от 'package:lubridate':
##
## %--%, union
##
## Следующие объекты скрыты от 'package:dplyr':
##
## as_data_frame, groups, union
##
## Следующие объекты скрыты от 'package:purrr':
##
## compose, simplify
##
## Следующий объект скрыт от 'package:tidyr':
##
## crossing
##
## Следующий объект скрыт от 'package:tibble':
##
## as_data_frame
##
## Следующие объекты скрыты от 'package:stats':
##
## decompose, spectrum
##
## Следующий объект скрыт от 'package:base':
##
## union
library(ggraph)
## Warning: пакет 'ggraph' был собран под R версии 4.3.2
Выполняем парсинг текста
url <- "https://en.wikisource.org/wiki/The_Long_Telegram"
html <- read_html(url)
Telegram <- html %>% html_elements(".prp-pages-output p") %>% html_text2()
Telegram <- as_tibble(Telegram)
Telegram <- Telegram[ -c(1:11), ]
Telegram <- Telegram[-c(71:72), ]
Текст хорошо структурирован. оставляем деление на 5 больших частей, но нумерицию вида (One) убираем регуялрными выражениями.
telegram_regx <- Telegram %>%
mutate(value = gsub("^\\(.*?\\)\\s", "", value))
english_ewt <- udpipe_load_model("C:\\Users\\Андрей\\Documents\\english-ewt-ud-2.5-191206.udpipe")
telegram_ann <- udpipe_annotate(english_ewt, telegram_regx$value)
telegram_ann_tbl <- as_tibble(telegram_ann)
Беглый взгляд на документ показывает, что языковая модель допустила ряд неточностей. А именно, присвоила слову Soviet 57 употреблений как имя собственное, 2 раза как глагол, 1 раз как прилагательное и 1 раз как существительное. И если с с существительным можно смириться, так же и с прилагательным “советский” но 2 раза модель рассматривает словокак глагол, что является ошибкой.
| PROPN | VERB | ADJ | NOUN | |
|---|---|---|---|---|
| Soviet | 57 | 2 | 1 | 1 |
| USSR | 11 | 0 | 0 | 0 |
| Russia | 13 | 0 | 0 | 0 |
| Russians | 6 | 0 | 0 | 1 |
Это нам не помешает проведению вычислений, так как ошибки несущественны. Но при дальнейшем анализе про это необходимо помнить.
Для ответа на поставленный исследовательский вопрос необходимо понять с с каким словами встречаются Soviet и Russian\Russia. Так как искомые слова были разнесены моделью по разным частям речи, то построим две визализации. Сначала сравним имена собтсвенные (PROPN) и прилагательные (ADJ), а затем существительные (NOUN) и прилагательные (ADJ).
x <- subset(telegram_ann_tbl, upos %in% c("PROPN", "ADJ"))
cooc <- cooccurrence(x, term = "lemma", group = c("doc_id", "sentence_id"))
head(cooc)
## term1 term2 cooc
## 1 official Soviet 13
## 2 government Soviet 10
## 3 international Soviet 9
## 4 apparent international 6
## 5 economic international 6
## 6 economic Soviet 6
Строим визуализацию
wordnetwork <- head(cooc, 30)
wordnetwork <- graph_from_data_frame(wordnetwork)
ggraph(wordnetwork, layout = "fr") +
geom_edge_link(aes(width = cooc, edge_alpha = cooc), edge_colour = "pink") +
geom_node_text(aes(label = name), col = "darkblue", size = 3) +
theme_graph(base_family = "Arial Narrow") +
theme(legend.position = "none") +
labs(title = "Встречаемость PROPN и ADJ")
## Warning: Using the `size` aesthetic in this geom was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` in the `default_aes` field and elsewhere instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): семейство
## шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
Как видно из визуализации, Soviet используется в политологическом контексте, когда Кеннану необходимо описать текущий режим. Такие слова как официальный, правительственный, экономический, дипломатический - это всё описывает страну с точки зрения настоящего момента истории. Россия, российский употребяется вместе с такими словами как инстинктивный, внешний, константа. Это относится к той части текста, где Кеннан даёт исторический экскурс.Эти группы не пересекаются и находятся в разных частях визуализации.
x <- subset(telegram_ann_tbl, upos %in% c("NOUN", "ADJ"))
cooc <- cooccurrence(x, term = "lemma", group = c("doc_id", "sentence_id"))
head(cooc)
## term1 term2 cooc
## 1 rulers russian 12
## 2 power russian 10
## 3 apparent omission 8
## 4 line party 8
## 5 plane policy 8
## 6 police power 8
Строим визуализацию
wordnetwork <- head(cooc, 30)
wordnetwork <- graph_from_data_frame(wordnetwork)
ggraph(wordnetwork, layout = "fr") +
geom_edge_link(aes(width = cooc, edge_alpha = cooc), edge_colour = "pink") +
geom_node_text(aes(label = name), col = "darkblue", size = 3) +
theme_graph(base_family = "Arial Narrow") +
theme(legend.position = "none") +
labs(title = "Встречаемость NOUN и ADJ")
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
На визуализации выше отчётливо видно, что контекст употрбления слова Россия иной. такие слова как правители, люди, полиция(имеется виду царская полиция) и власть(power).
Д. Кеннан целенаправлено применяет слова Soviet, Russia и Russian в разных контекстах, которые не пересекаются. В случае Soviet - он описывает текущую политическую ституацию, но когда речь заходит об истории страны, людях, правителях(rulers), а не правительства(goverment) то появляется более привычное Russia. В этом смысле, Russia - вневременное слово. Это осознанный выбор, а не случайное распределение. Методика может быть применена на большом корпусе документов.
Текст длинной телеграммы чётко структурирован, что позволяет провести анализ тональности всего текста, по частям и тех частей, в которых применяется Soviet и Russia, Russian. Было бы интересно вычислить тональности и сравнить их друг с другом. Это дло бы дополнительный слой понимания материала.