テキストマイニング技法を利用した2024年共和党大統領候補受諾のトランプ演説内容を視覚化する
2024年7月19日(現地日付)にドナルド・トランプの大統領候補受諾スピーチがありました。 このスピーチをベースにRを利用してテキストマイニング技法を適用して可視化作業をしてみました。 この作業のためのソースコードを作成し、ステップバイステップで説明します。
今回の記事で使用されるテキストマイニング技法を使って、英語で書かれた各種テキスト情報に対して、単語の頻度分析、ワードクラウドの生成、感情分析、バイグラム分析など様々な分析を試してみてください。わざわざテキストマイニングサイトを探す必要はありません。
データの可視化は、複雑なデータを視覚的に表現して理解を助ける重要な技術です。 特に、テキストデータの場合、可視化によって隠されたパターンや洞察を発見することができます。トランプのスピーチを分析して単語の頻度などを視覚化することで、スピーチの主なテーマや雰囲気を把握することができます。
テキストマイニング技術のためのRソースコード
必要なパッケージのインストールとロード
まず、必要なRパッケージをインストールしてロードします。このコードは必要なパッケージを自動でインストールしてロードします。
# 必要なパッケージのインストールとロード
required_packages <- c("tidytext", "dplyr", "ggplot2", "stringr", "igraph", "ggraph", "readr", "textdata", "wordcloud2", "htmlwidgets", "tidyr", "showtext")
# インストールされていないパッケージの確認とインストール
new_packages <- required_packages[!(required_packages %in% installed.packages()[,"Package"])]].
if(length(new_packages)) install.packages(new_packages)
#パッケージの読み込み
lapply(required_packages, require, character.only = TRUE)
showtext_auto()このコードは必要な全てのパッケージをインストールしてロードします。 showtext_auto() 関数はフォントを自動的にロードして、ggplot2グラフでテキストが崩れないようにします。
テキストファイルの読み取り
テキストファイルを読み取り、単語でトークン化します。テキストファイルは ニューヨークタイムズが公開したウェブページを活用して作りました。
# テキストファイルの読み取り(file_pathは自分のフォルダに合わせてください。)
file_path <- "C:\\R\\Trump_2024_RNC_Acceptance_Speech.txt"
text <- read_file(file_path)
# テキストをワードにトークン化する
words %
unnest_tokens(word, text)
# 不用語除去
data(stop_words)
words %
anti_join(stop_words)このコードは、テキストファイルを読み込んだ後、テキストを単語単位で分離し、不用語を除去します。不用語は意味のない単語を意味し、これを除外することで分析の精度を高めることができます。
1.単語頻度分析
単語の頻度分析により、スピーチで最も頻繁に使用された単語を確認します。
# 単語頻度分析
word_freq %
count(word, sort = TRUE)
ggplot(word_freq[1:20,], aes(x = reorder(word, n), y = n, label = n)) +
geom_col() +...
geom_text(hjust = -0.1, color = "black")+。
coord_flip() +...
labs(title = "Top 20 Words in Trump's 2024 RNC Acceptance Speech in 2024", x = "Word", y = "Frequency")このコードは、上位20の単語とその頻度をグラフで可視化します。 各単語の頻度を棒グラフで表示し、頻度数をラベルで追加します。
この棒グラフは、ドナルド・トランプの2024年のRNC受諾演説で最も頻繁に登場した上位20の単語を示しています。最も目立つ単語は「people(人々)」、「country(国)」、「we're(私たちは)」で、集団のアイデンティティと国家に焦点を当てています。「America(アメリカ)」、「world(世界)」、「administration(行政)」などの単語が多く登場しているのは、政府やグローバルな問題についてのテーマを示唆しています。
2.ワードクラウドの作成
ワードクラウドを使用して、単語の頻度を視覚的に表示します。
#ワードクラウドの作成
set.seed(1234) # 再現可能性のためのシード設定
wordcloud_data %
filter(n > 1) %>% % # 少なくとも2回以上出現した単語のみ含む。
head(100) # 上位100ワードのみ使用
#ワードクラウドの作成
wc <- wordcloud2(data = wordcloud_data、
size = 1、
color = "random-dark"、
backgroundColor = "white"です、
rotateRatio = 0.3、
shape = "circle")
# HTMLファイルとして保存
saveWidget(wc, "wordcloud_trump_2024.html", self-contained = TRUE)このコードは、上位100個の単語でワードクラウドを生成します。 wordcloud2 パッケージを使用して様々なオプションを設定することができます。
このワードクラウドは、スピーチで最も多く使われた単語を視覚化したもので、単語の大きさは頻度を表しています。"country(国)", "people(人々)", "we're(私たちは)"などの主要な単語が目立ちます。"love(愛)", "beautiful(美しい)", "America(アメリカ)"など様々な単語が含まれており、スピーチで愛国心、称賛、肯定的なテーマが強調されたことを示しています。
3.感情分析
スピーチの感性を分析し、肯定的または否定的な単語の頻度を確認します。
# 感性分析
sentiments <- get_sentiments("bing")
sentiment_analysis %
inner_join(sentiments) %>%
count(sentiment) %>%
pivot_wider(names_from = sentiment, values_from = n, values_fill = 0) %>%
mutate(sentiment = ポジティブ - ネガティブ)
print(sentiment_analysis)
このコードは、スピーチ中の肯定的、否定的な単語の頻度を計算し、その差から全体的な感性を評価します。

この表は、スピーチの感情分析をまとめたものです。 スピーチには290の否定的な単語と329の肯定的な単語が含まれており、正味のポジティブ感情スコアは39です。これは、全体的にややポジティブなトーンであることを意味します。
4.バイグラム分析
単語のペア(バイグラム)を分析して、よく一緒に使われる単語のペアを確認します。
# バイグラム分析
bigrams %
unnest_tokens(bigram, text, token = "ngrams", n = 2)
bigram_counts %
separate(bigram, c("word1", "word2"), sep = " ") %>%
filter(!word1 %in% stop_words$word) %>%
filter(!word2 %in% stop_words$word) %>%
count(word1, word2, sort = TRUE)
# 上位15個のバイグラムの可視化
bigram_graph %
graph_from_data_frame()
ggraph(bigram_graph, layout = "fr") +...
geom_edge_link(aes(edge_alpha = n), show.legend = FALSE) +...
geom_node_point(color = "lightblue", size = 5) +...
geom_node_text(aes(label = name), vjust = 1, hjust = 1) +...
theme_void() +...
labs(title = "Trump's Top 15 Bigrams in Trump's 2024 RNC Acceptance Speech")このコードは、上位15個の単語のペアを視覚化し、スピーチでよく一緒に使われる単語のペアを表示します。
このグラフは、スピーチで最も多く使われた上位15のバイグラム(2語からなるフレーズ)を示しています。"they're coming"、"border patrol"、"illegal aliens"などのフレーズは、移民問題への懸念を示しています。"incredible people(信じられないほどの人々)"や"worst administration(最悪の政権)"のような他の重要なバイグラムは、賞賛と批判のテーマを明らかにしています。
5.TF-IDF分析
TF-IDF分析により、文章中の重要な単語を確認します。
rコードコピー# 文を単位に分割する
sentences %
mutate(sentence_id = row_number())
tfidf %
unnest_tokens(word, sentence) %>%
count(sentence_id, word, sort = TRUE) %>%
bind_tf_idf(word, sentence_id, n)
# 上位TF-IDFの単語の視覚化
tfidf %>%
arrange(desc(tf_idf)) %>%
mutate(word = factor(word, levels = rev(unique(word))))%>%
group_by(sentence_id) %>%
top_n(5) %>%
ungroup() %>%
ggplot(aes(word, tf_idf, fill = sentence_id)) +...
geom_col(show.legend = FALSE) +...
labs(x = NULL, y = "tf-idf", title = "トランプ大統領のスピーチの文章別トップTF-IDFの言葉") +...
facet_wrap(~sentence_id, ncol = 2, scales = "free") +...
coord_flip()このコードは、各文章でTF-IDF値が高い単語を視覚化して重要な単語を把握します(この部分はもう少し補完が必要なようです)。
このプロットは、文ごとに上位のTF-IDF(用語頻度-逆文書頻度)単語を示し、スピーチのさまざまな部分で使用されたユニークで重要な用語を強調しています。 各単語の重要性はTF-IDFスコアで示され、「economy(経済)」、「jobs(仕事)」、「taxes(税金)」などの単語は、特定の文で重要なテーマを反映しています。
6.テーマ別単語頻度分析
テーマ別に単語の頻度を分析し、スピーチで扱われた主なテーマを確認します。
# テーマ別単語頻度分析
topics <- c("economy", "immigration", "foreign_policy", "social_issues")
topic_words <- list(
economy = c("経済", "雇用", "税金", "インフレ", "ビジネス")、
immigration = c("border", "immigration", "illegal", "wall")、
foreign_policy = c("戦争", "平和", "軍事", "同盟国", "敵")、
social_issues = c("教育", "医療", "犯罪", "家族", "価値観")
)
topic_frequency %
mutate(topic = case_when(
word %in% topic_words$economy ~「経済」、
word %in% topic_words$immigration ~「移民」、
word %in% topic_words$foreign_policy ~「外交政策」、
word %in% topic_words$social_issues ~「社会問題」、
TRUE ~ "その他"
)) %>%
count(topic) %>%
filter(topic != "その他")
ggplot(topic_frequency, aes(x = reorder(topic, n), y = n, fill = topic)) +
geom_col() +...
coord_flip() +...
labs(title = "Frequency of Topics in Trump's 2024 RNC Acceptance Speech"、
x = "トピック", y = "頻度") +...
theme_minimal()このコードは、スピーチで取り上げた主なテーマ別の単語の頻度を視覚化し、各テーマの重要性を把握することができます。

この棒グラフは、トランプ大統領の演説のテーマを経済、移民、外交政策、社会問題に分類し、テーマ別の頻度を示しています。経済が最も多く取り上げられ、次いで移民、外交政策、社会問題が続いています。この分類は、演説の主な焦点領域を明らかにし、経済問題と移民問題への強調を示しています。
よくある間違いと解決方法
データ前処理の重要性
テキストデータ分析で最も重要なのは、データの前処理です。不用語の除去、テキストの正規化、スペル修正などは、分析の精度を大幅に向上させます。これらの作業を怠ると、分析結果が歪む可能性があります。
適切な可視化ツールの選択
分析目的に合った可視化ツールを選択することが重要です。例えば、単語の頻度分析には棒グラフが効果的ですが、感情分析には円グラフや棒グラフが適している場合があります。様々な可視化ツールを使ってデータを多角的に分析することをお勧めします。
完全なソースコードと結果
上記で説明した全てのコードを総合してもう一度まとめます。
# 必要なパッケージのインストールとロード
required_packages <- c("tidytext", "dplyr", "ggplot2", "stringr", "igraph", "ggraph", "readr", "textdata", "wordcloud2", "htmlwidgets", "tidyr", "showtext")
new_packages <- required_packages[!(required_packages %in% installed.packages()[,"Package"])]].
if(length(new_packages)) install.packages(new_packages)
lapply(required_packages, require, character.only = TRUE)
showtext_auto()
# テキストファイルを読む
file_path <- "C:\\R\\Project\\secondlife-r\\Trump_2024_RNC_Acceptance_Speech.txt"
text <- read_file(file_path)
#テキストを単語にトークン化し、不用語を削除する
words %
unnest_tokens(word, text) %>%
anti_join(stop_words)
# 単語頻度分析
word_freq %
count(word, sort = TRUE)
ggplot(word_freq[1:20,], aes(x = reorder(word, n), y = n, label = n)) +
geom_col() +...
geom_text(hjust = -0.1, color = "black")+。
coord_flip() +...
labs(title = "Top 20 Words in Trump's 2024 RNC Acceptance Speech in 2024", x = "Word", y = "Frequency")
#ワードクラウドの作成
set.seed(1234)
wordcloud_data %
filter(n > 1) %>%
ヘッド(100)
wc <- wordcloud2(data = wordcloud_data, size = 1, color = "random-dark", backgroundColor = "white", rotateRatio = 0.3, shape = "circle")
saveWidget(wc, "wordcloud_trump_2024.html", self-contained = TRUE)
# 感性分析
sentiments <- get_sentiments("bing")
sentiment_analysis %
inner_join(sentiments) %>%
count(sentiment) %>%
pivot_wider(names_from = sentiment, values_from = n, values_fill = 0) %>%
mutate(sentiment = ポジティブ - ネガティブ)
print(sentiment_analysis)
# バイグラム分析
bigrams %
unnest_tokens(bigram, text, token = "ngrams", n = 2)
bigram_counts %
separate(bigram, c("word1", "word2"), sep = " ") %>%
filter(!word1 %in% stop_words$word) %>%
filter(!word2 %in% stop_words$word) %>%
count(word1, word2, sort = TRUE)
bigram_graph %
graph_from_data_frame()
ggraph(bigram_graph, layout = "fr") +...
geom_edge_link(aes(edge_alpha = n), show.legend = FALSE) +...
geom_node_point(color = "lightblue", size = 5) +...
geom_node_text(aes(label = name), vjust = 1, hjust = 1) +...
theme_void() +...
labs(title = "Trump's Top 15 Bigrams in Trump's 2024 RNC Acceptance Speech")
# TF-IDF 分析
sentences %
mutate(sentence_id = row_number())
tfidf %
unnest_tokens(word, sentence) %>%
count(sentence_id, word, sort = TRUE) %>%
bind_tf_idf(word, sentence_id, n)
tfidf %>%
arrange(desc(tf_idf)) %>%
mutate(word = factor(word, levels = rev(unique(word))))%>%
group_by(sentence_id) %>%
top_n(5) %>%
ungroup() %>%
ggplot(aes(word, tf_idf, fill = sentence_id)) +...
geom_col(show.legend = FALSE) +...
labs(x = NULL, y = "tf-idf", title = "トランプ大統領のスピーチの文章別トップTF-IDFの言葉") +...
facet_wrap(~sentence_id, ncol = 2, scales = "free") +...
coord_flip()
# テーマ別単語頻度分析
topics <- c("economy", "immigration", "foreign_policy", "social_issues")
topic_words <- list(
economy = c("経済", "雇用", "税金", "インフレ", "ビジネス")、
immigration = c("border", "immigration", "illegal", "wall")、
foreign_policy = c("戦争", "平和", "軍事", "同盟国", "敵")、
social_issues = c("教育", "医療", "犯罪", "家族", "価値観")
)
topic_frequency %
mutate(topic = case_when(
word %in% topic_words$economy ~「経済」、
word %in% topic_words$immigration ~「移民」、
word %in% topic_words$foreign_policy ~「外交政策」、
word %in% topic_words$social_issues ~「社会問題」、
TRUE ~ "その他"
)) %>%
count(topic) %>%
filter(topic != "その他")
ggplot(topic_frequency, aes(x = reorder(topic, n), y = n, fill = topic)) +
geom_col() +...
coord_flip() +...
labs(title = "トランプの2024年RNC受諾演説におけるトピックの頻度", x = "トピック", y = "頻度")+...
theme_minimal()
上記のコードを実行すると、トランプの演説を様々な側面から分析した結果を得ることができます。 各分析は、演説の主な単語、感情、バイグラム、TF-IDF、テーマ別頻度などを視覚化し、演説の全体的な内容を理解するのに役立ちます。
仕上げ
全体として、ドナルド・トランプの2024年RNCの受諾演説は、"people"、"country"、"America"などの単語の頻度が高いことから、国家のアイデンティティと愛国心のテーマを強く強調していることがわかります。演説は、移民や政権批判などの問題を取り上げながらも、ポジティブな感情を維持しています。 特定のテーマ、特に経済と移民に焦点を当てていることは、トランプ大統領の主要な政治的優先事項と一致しています。TF-IDF分析とバイグラムビジュアライゼーションで確認された詳細な単語の使用と重要なフレーズは、これらのテーマをさらに強調し、スピーチの内容と焦点を総合的に理解することができます。
今回の記事では、Rを使ってテキストデータを分析して可視化する方法を紹介しました。トランプ大統領の演説を例に、様々なテキストマイニングのテクニックを紹介しました。 これらの方法を通じて、テキストデータから有意義な洞察を得ることができることを願っています。
**RNC: "Republican National Committee"の略で、米国共和党の全国委員会を意味します。RNCは共和党の公式組織であり、党の戦略を計画し、選挙キャンペーンを支援し、党の主要なイベントを組織しています。これには、大統領候補を指名する全党大会(Republican National Convention)も含まれます。









