资讯 人工智能开发者
此为临时链接,仅用于文章预览,将在时失效

美国总统辩论60年,他们在谈论什么? | 雷峰网-米乐m6平台

nlp
作者:ai研习社-译站
2020/11/15 10:30

译者:ai研习社()

双语原文链接:


 图源:shelagh murphy 于 unsplash

不少人(希望如此)已经通过邮件或提前投票的方式投了票,不过可能还有一些人在11月3日前还没有做出决定。本着民主的精神,我希望你能在投票前阅读本文。选举日即将来临,我突然像是受了刺激似的,决定浏览一些过去的总统辩论。怀旧可能会成为2020年的一个关键话题,因为人们逐渐怀念起新冠大流行前的美好日子,逐渐察觉到那些曾经不被重视的东西。选举日是一个重要的十字路口,在最终决定好行进的道路之前,回顾一下我们的民主发展历程可能是有用的。

这个项目最初的灵感来自于一篇的nlp博文。这篇文章分析了2012年总统大选上奥巴马对阵罗姆尼(obama v. romney)的演讲,并将这些演讲词按政党分类。利用单词勾勒出党派分歧的缩影,这篇文章的点子真是绝了。词频及其排名也让我们得以一窥两党党纲中的关键性主题(分别在对角线上下两侧)以及其共同关注的问题(处于对角线上)。这些大会演讲中包含诸多重要的党纲短语,例如:

接着,我使用scattertext来探究1960年至2020年总统竞选辩论中的主题特征。由于诸多原因,这些辩论也是相当不错的分析案例。辩论过程中,主持人或小组成员可以选择当前的热点话题,也可以选择更自由的关于领导力的相关话题。候选人在辩论中可就没法子从自己的支持者那里得到安慰了,迎接他们的,往往是尚未做出最终决定的选民提出的尖锐问题。此外,时间的限制要求他们务必简明扼要,因此候选人必须权衡他们的用词来尽可能地表达主旨。通过每一位候选人的辩论,我们可以看到一个选举周期中政党意识形态的缩影。

下方是一张由scattertext绘制出来的图,语料由pytextrank自动标记重要短语后得到。然后将这些短语通过其密集等级频率和两党使用的密集等级频率差异与图中的一个点相关联(,方便你理解这句话)。图片中每个关键词都是一个超链接,点击后你就可以看到两方具体说了什么!(译者说:真心厉害啊,这里建议,感受一下交互)

这副由scattertext绘制出来的图像中展示了两党辩论中的单词及其使用频率,竖轴为民主党,横轴是共和党。其中,民主党用的最多的短语靠近左上角,共和党的则靠近右下角。而对角线处的黄色标识词汇则表示中性词或是两党共有的论点(比如贸易、民主、政治、犯罪)。整张图片是交互式的,你可以点击单词并看到所有发言者包含该单词的辩词。交互式图表可以在这里访问:。

从一个单词出发,我们可以使用scattertext可视化的直观功能深入探讨两党的思想鸿沟。沿着分数接近零的关键短语对角线看,这些对角线上的词汇代表了双方都需要解决的关键问题或挑战。而处在对角线上就像站在山谷里,抬头看着图中左上角跟右下角两座大山。

表示意识形态的单词距离我们所说的这个“山谷”最远。例如,“美国工人”一词仅由民主党候选人使用。乔治·w·布什(george w. bush)主要使用类似“年轻工人”的短语来描述他的社会保障计划。拿那些具有相同以及相反分值的单词来对比两党党纲的要义可以说是非常有趣。例如,共和党人的“北美自由贸易区”与民主党人的“收入”分值相近,这表明共和党人讨论和批评北美自由贸易区的程度与民主党候选人关注家庭收入的程度一样。下面更多的例子表明了双方的谈话要点:

  由 isai ramos 摄于 unsplash

在图片左上角和右下角,您可以看到每个总统候选人对他(她)的对手所说的话。达成共识是一个非常有趣的特征,例如,巴拉克·奥巴马(barack obama)几次承认麦凯恩参议员(或“约翰”)是“绝对正确的”,而约翰·麦凯恩(john mccain)也相应地至少承认过一次(当提及美军在阿富汗的战略时)。从图像底部看,辩论逐渐偏向个人化,因为主要由反对者的名字(左下角)来指称对手,共和党(民主党一般不)经常使用的用语由唐纳德·特朗普(donald trump)的关键短语主导:

图源:maria oswalt 摄于 unsplash

随着候选者立场的不断推移发展,关注更多实质性主题会变得更加有趣。 堕胎一直是共和党和民主党之间党派分歧的关键问题,最近艾米·科尼·巴雷特(amy coney barrett)明确了这一点。卡特(carter)与福特(ford)的辩论以及蒙代尔(mondale)与里根(reagan)的辩论都提到了这一点。里根和卡特发表了截然相反的声明,尽管当时他们并未互相辩论。(译者注:里根属共和党,卡特属民主党。这里作者是指两党在堕胎问题上的分歧由来已久。)

“我认为堕胎是错误的。政府不应采取任何措施鼓励堕胎。不过我不赞成就此问题去进行宪法修正……我个人不认为联邦政府应该资助堕胎,但是我——我划清界限并且不支持在这一问题上进行宪法修正。——吉米·卡特

“有关堕胎,我感觉这是——在mondale先生政教结合的讲话中,有一些相关表述,不过并没有具体指明。对我来说,堕胎不是宗教问题,而是宪法问题。”——罗纳德·里根

里根指出,这个问题与宪法有关,与宗教无关。而卡特的回应则有些混乱。他明确指出,不应当有禁止堕胎的修正案,但政府不应制定资助堕胎的计划。乔治·w·布什(george w. bush)的回应暗示,这个问题是社会建设的问题,这与里根(reagan)的回应中提及的“宪法问题”密切相关 (译者注:布什与里根均属共和党,因此政见相近)。希拉里·克林顿(hillary clinton)和迈克尔·杜卡基斯(michael dukakis)明确指出,就妇女的选择权而言,这是一个问题。阿尔·戈尔(al gore)和约翰·麦凯恩(john mccain)在最高法院法官的决定性测试中谈到了罗诉韦德案,并且一致认为对罗诉韦德案的支持是任命甚至哪怕提名的关键指标。

(译者注:罗诉韦德案是因为一个化名为简·罗的女士,她十多岁就生了孩子,没多久就离婚了,孩子五岁就给父母去带了,她自己经济条件也不怎么好。不巧的是,这时候她又意外怀孕,自己都养不活的她就想去堕胎,可是她所在的德州是不允许堕胎的,除非在关乎孕妇生命的情况下。在两名女权主义者的鼓励和帮助下她提出了诉讼,这起诉讼的检察官叫韦德,这也是“罗诉韦德案”这个名字的来源。)

“我认为推动一种生活文化很重要。我认为一个包容的社会是其中每个人都被在乎、被关注的社会。我相信在一个理想的世界中,每个孩子都受到法律的保护,每个孩子来到这个世界都会受到人们的热烈欢迎。”——乔治·w·布什

“当那些严格的宪法解释者使用的短语和scalia以及thomas之类的姓氏被作为谁会被任命的标准时,我想说这都是无稽之谈。并且,每个人都要明白,那就是州长绝不可能任命那些会推翻罗诉韦德案的人。这点对我来说非常明确。我任命的官员都将认可罗诉韦德案的判决结果。”——阿尔·戈尔

“我会考虑任何有资质的人。我不认为支持罗诉韦德案的某些人是合格的提名者。”——约翰·麦凯恩

巴拉克•奥巴马(barack obama)承认,双方在防止意外怀孕方面存在分歧,但不排除存在共同观点的潜在可能。

“这个问题——听着,它使我们分道扬镳。在某些方面,的确,要调和这两种观点可能很困难……‘我们应该适当地教育青年一代,传达出性的神圣,规劝他们不应该轻易地与人发生关系,以此来防止意外怀孕。同时确保在亲生父母难以抚养子女的情况下,可以将子女交由他人收养,并帮助那些愿意抚养子女的单身母亲。’这些都是今年首次在民主党党纲中提及的内容,我认为这是我们可以找到的共同基点,……”——巴拉克·奥巴马

从scattertext的视角去品读总统大选辩论,可以看到其中重要的政治话题随着时间流逝而演变发展。这启发了我进一步探究总统辩论的主题特征,分析辩论主题随着时间如何变化,并使用针对文本分类训练的bert模型根据候选人的辩词来进行意识形态排名。

  1. 获取数据的第一步是爬取一个包含辩论文字稿的网站。我选择的是这个网站,它的网站页面很容易解析。不过这个网站并没有懂王川普和瞌睡王拜登的辩论稿,因此我转而求助于《今日美国》。我使用的爬取工具是beautiful soup 4(链接见最后)。具体代码参见这个。

  2. scikit learn库中的非负矩阵分解用于从主持人/专家组成员的相关文本中提取关键词。pytextrank库用于为最突出的主题短语进行权重评估。

  3. 我用spacy库来匹配关键词对应的主题以及候选人的具体回应。关键词和主题的确定参见。

  4. 文本分类模型bert是在谷歌的colab gpu上训练得到的,其末端是一个分类层,文末给出了notebook链接。

  5. 可视化结果和输出的图表都是用tableau制作得到的。

专家组成员以及主持人的存在使得找到每一次辩论的主题变得易如反掌。分析这些主题唯一的难点在于,有些术语的含义已然判若云泥。举例来说,“气候变化”如今是个普通短语,但是在2000年总统辩论中,阿尔·戈尔却用其特指“全球变暖”,所以我干脆对每一次的辩论提取关键词,然后将其按主题分组。在这些辩论中,一些主题总是反复被触及,诸如:税收,环境和气候变化,经济,联邦支出,医疗保健,枪支管制,移民,国防,石油与石油工业,公共教育,种族与歧视以及社会福利。

通过给每一场辩论中主持人和专家组成员的语句建立主题模型,并将其中的关键词进行分组,我最终确定了这些主题词汇。下面是一个奥巴马和罗姆尼辩论主题词的示例:

gas prices, specific examples, financial problems, the difference, american jobs, productive members, vast array, clear choice, quick response, red lines, other things, everyday living, your energy secretary, your energy, tax revenue, the biggest, the biggest misperception, own plan, his own plan, lower gas prices

这里,我使用pytextrank简化全文,并且只保留权重分数大于0.1的短语。主题建模很混乱,因为文本非常稀疏,而辩论主题的设计往往涵盖了很多领域。相邻主题之间的相关度很低,但突出的文字显示了有关经济和油价的讨论的广泛度。我使用spacy匹配模式将这些词汇编码为主题。根据主持人所用的词汇,下面列出了与“社会福利”主题相关的匹配模式。

matcher.add(“social welfare”,none,[{“lower”:”social”},{“lower”:”security”}])
matcher.add(“social welfare”,none,[{“lower”:”housing”},{“lower”:”subsidies”}])
matcher.add(“social welfare”,none,[{“lower”:”minimum”},{“lower”:”wage”}])
matcher.add(“social welfare”,none,[{“lower”:”prevailing”},{“lower”:”wages”}])
matcher.add(“social welfare”,none,[{“lower”:”abnormal”},{“lower”:”poverty”}])

 所有总统辩论的话题占比均除以了对应候选人总数的占比 


得到这些主题关键词后,我遍历了所有辩论中的总统候选人回应,并计算了每个主题中匹配词出现的频率。从上图可以明显看出,多年来,经济、税收和联邦支出等广泛的国内主题构成了候选人回应的近50%。这些主题进一步催生了诸多有关国内政策的辩论。第二大主题是医疗保健(上图中绿色部分),占比13.8%。公共教育是讨论涉及最少的话题,其百分比低于0.86%。

为了衡量每场辩论中实质性内容(而不是人身攻击或对吵)的数量,我查看了候选人的回应与主题词相匹配的频率。当然了,匹配率肯定不会达到100%,因为选择的这些关键字不可能涵盖所有可能的辩论问题。但是,看看匹配程度对我们衡量辩论的质量多少还是有点用处的。

  主题关键词与候选人回应相匹配的效率,可以视作辩论含有多少实质性内容的指标(译者注:可以该效率理解为匹配的频次,上图展示了美式民主辩论的式微,实质性讨论总体在不断减少)

与之后的辩论相比,早期的总统辩论包含更多的主题词。1980年卡特与里根之间的辩论中回应的匹配度达到峰值(66%)。1980年至2012年之后的辩论有接近40%的平均值,范围从33%到46%。最低匹配度的辩论则来自于2016年克林顿-特朗普和2020年特朗普-拜登。(译者注:懂王的辩论导致曲线在2016年断崖式下降)

  

 

比较最高和最低匹配度的辩论可以看出辩论的焦点有多宽或多窄。1980年的辩论在有关石油行业、整体经济、社会福利、气候变化以及种族/歧视的论题上进行了很好的讨论。卫生保健(4%)和国防(7.2%)的覆盖范围较小。而最近的辩论中,经济和医疗保健是讨论的很大一部分(covid-19可能会被着重强调)。在1980年,种族歧视和黑人失业这类种族相关的关键词仅占8%。而在2020年,这一比例上升为14%(在已有的辩论中占比最高),而匹配的关键词列表是:白人至上主义者、民权、黑人社区、西班牙裔和种族主义者。

bert(bidirectional encoder representations from transformers)是一种用于自然语言处理的预训练机器学习技术。 bert预训练模型可以与分类层组合以进行文本分类。bert模型的关键创新在于它们具有双向编码器识别上下文的能力,而不仅是简单的左右/右左单词序列。这使得训练过程中模型可以识别单词的上下文信息,而不是仅将单词串在一起的顺序识别出来。

bert是一个能够对由数百个符号构成的长句进行文本分类的强大工具。句子的符号序列越长,训练模型所需的资源就越多。我将总统候选人的回应语句析构成长度为192个符号的语块。下面给出了经过预训练的bert模型,可从tensorflowhub下载(译者注:所谓“符号”,英文为token,是指句子中的单词和标点):

# more details here:  
bert_layer=hub.keraslayer(‘
vocab_file=bert_layer.resolved_object.vocab_file.asset_path.numpy()
do_lower_case=bert_layer.resolved_object.do_lower_case.numpy()#### is the bert layer case sensitive?
tokenizer=tokenization.fulltokenizer(vocab_file,do_lower_case)

下面的代码中,我造了一个tensorflow输入流,从而将输入文本转换为批输入以进行多线程训练和测试。最后一步是在bert层之后添加一个分类器模型:

def create_model():
   input_word_ids = tf.keras.layers.input(shape=(max_tok_sequence,), dtype=tf.int32,name=”input_word_ids”)
   input_mask     = tf.keras.layers.input(shape=(max_tok_sequence,), dtype=tf.int32,name=”input_mask”)
   input_type_ids = tf.keras.layers.input(shape=(max_tok_sequence,), dtype=tf.int32,name=”input_type_ids”)    pooled_output, sequence_output = bert_layer([input_word_ids, input_mask, input_type_ids])
   #### hard code initialization seeds for reproducibility
   drop=tf.keras.layers.dropout(0.2,seed=9)(pooled_output)  #### tuned the hyperparameter for regularization term
   output=tf.keras.layers.dense(1,activation=’sigmoid’,name=’output’,kernel_initializer=tf.keras.initializers.glorot_uniform(seed=9))(drop)  #### classifier values between 0,1
   model=tf.keras.model(        inputs = {‘input_word_ids’:input_word_ids,                  ‘input_masks’:input_mask,                  ‘input_type_ids’:input_type_ids},        outputs=output    )  #### keras modelformatted
   return model
model=create_model()
model.compile(optimizer=tf.keras.optimizers.adam(learning_rate=2e-5),loss=tf.keras.losses.binarycrossentropy(),metrics=tf.keras.metrics.binaryaccuracy())

(译者注:这里就是在bert的尾部增加了一个dropout层与全连接层,全连接层输出一个值,通过sigmoid函数确保输出在[0, 1]区间内)

手头已有19位候选人,我将他们分别标记为共和党(1)和民主党(0)。 上述模型经过训练,可以对每一场辩论回应进行分类。我仅将与关键词匹配的数据用于训练和验证。而那些与关键词不匹配的回应文本则用于对这些候选人进行意识形态分类:

  分类器的输出在0到1之间,0与1分别表示民主党与共和党意识形态

每位候选人将根据其辩论中的回应得到一个意识形态分类结果(这些回应的语句被划分为多个符号长度为192的语块)。分类结果的中位数表明了他们对自己所在政党的支持程度。

  分类结果的中位数可以反映出候选人的发言与其所在党派党纲的契合度

得分显示,迈克尔·杜卡基斯(michael dukakis),吉米·卡特(jimmy carter),比尔·克林顿(bill clinton)和约翰·肯尼迪(john f. kennedy)在民主党候选人中排名最高,其中位数得分接近零(0表示民主党意识形态分类结果)。尼克松,里根和麦凯恩的中位数得分均在0.95以上,与共和党最接近。杰拉尔德·福特(gerald ford,属共和党)有点反常,因为根据他的辩论回应,他倒更像是个民主党候选人,所以我就瞅了瞅那些导致他被模型分类为民主党意识形态的相关回应语句。杰拉尔德·福特的回应包括大赦逃避兵役者和军队逃兵、解决世界饥荒问题,他还多次提及为了中东和平所需遵守的“道德原则”和“道德标准”。

(译者注:杰拉尔德·福特是美国历史上唯一一位未经选举就当上总统之人,水门事件致使时任总统尼克松辞职,副总统福特就这样当上了总统,不过只干了两年,就在连任竞选中败给了民主党候选人卡特)

历次辩论中与自己所在党派的意识形态最接近的来自于奥巴马有关公共教育和大学入学话题的相关回应,这是他与麦凯恩的第三次总统辩论中涉及到的。如果只看共和党候选人的话,则由川普拔得头筹,其与希拉里·克林顿的第三次辩论淋漓尽致地展现了川普作为一个共和党人的风采。他谈到了他计划如何重新谈判贸易协议、北约如何“买单”、及他将如何终止北美自由贸易协定。总的来说,在一些较长的发言中更有可能得到与意识形态有较高关系的回应语句,因为长句中有更大概率包含更多的党纲关键短语。巴拉克·奥巴马的回应包括“当地学区”、“公立学校”和“大学入学和可负担性”。这与之前在scattertext图中看到的结果一致,“教育”这个词在民主党中得分很高。在唐纳德·特朗普的声明中,几个得分较高的共和党短语被反复强调:“北美自由贸易协定”,“北约”,“国债”,“贸易协定”和减税。

当然……还有讽刺和预示

你大可把这一章节看作是总统大选中的人类迷惑行为。但是再仔细一想,有些地方的确不能让人完全无视。我发现针对杰拉尔德·福特的这个问题非常尖锐:

梅纳德先生提问:“总统先生,你两次差点成为刺客的枪下亡魂。可是,你仍然反对实质性的枪支管控。现在举国约有4千万枪支,而且这个数字还在以每年2.5%的比率不断增长。令人感到可悲的是,这些枪支以自卫的名义被购买,却最终用于对付亲戚或者朋友。有鉴于此,为什么你仍然反对实质性枪支管制?”

在乔·拜登和唐纳德·特朗普最近的辩论中,一个非常具有挑衅性的言论让许多人无比震惊。特朗普会接受选举结果(如果输了的话)并愿意和平过渡权力吗?在与希拉里·克林顿的第一次总统辩论中,他的回答倒是很明确:

“我的回答是,要是她赢了,我绝对会支持她的。”——川普

在与希拉里·克林顿的第三场总统辩论中,克里斯·华莱士再次提出了这个问题,他却表示他的竞选搭档和女儿仍然会支持:

华莱士问道:“你最近一次在集会上警告说,这次选举被操纵了,希拉里·克林顿正从你那里窃取选举成果。你的竞选伙伴彭斯州长周日承诺,他,包括你在内——这是他的原话——‘将绝对接受此次选举的结果’。今天你女儿伊万卡说了同样的话。我想在今晚这个辩论台上再问你一次:你是否能够做出同样的承诺,你绝对绝对——先生,你绝对会接受此次选举的最终结果吗?”

几乎像是2020年一个可怕的预兆似的,特朗普回答说

“我要跟你说,我到时候就会告诉你。要保持悬念,好不好?”——川普

这更像是一个类似于“万圣节快乐啊”之类的回答,而不是一个令人感到踏实的“选举日快乐”,所以我为该份代码总结一些未来的发展方向。

代码




来自于的辩论稿

链接

参考资料

jason s. kessler “scattertext: a browser-based tool for visualizing how corpora differ” 

jason s. kessler “visualizing thousands of phrases with scattertext, pytextrank and phrasemachine” 

jacob devlin, ming-wei chang, kenton lee, kristina toutanova “bert: pre-training of deep bidirectional transformers for language understanding” 


ai研习社是ai学术青年和ai开发者技术交流的在线社区。我们与高校、学术机构和产业界合作,通过提供学习、实战和求职服务,为ai学术青年和开发者的交流互助和职业发展打造一站式平台,致力成为中国最大的科技创新人才聚集地。

如果,你也是位热爱分享的ai爱好者。欢迎与译站一起,学习新知,分享成长。

长按图片保存图片,分享给好友或朋友圈

美国总统辩论60年,他们在谈论什么?

扫码查看文章
米乐m6平台

正在生成分享图...

取消
相关文章
网站地图