用Python与Watson,将《魔戒》甘道夫的性格可视化!

全文共4301字,预计学习时长9分钟

图源Unsplash,由Marko Blažević提供

著名心理学家詹姆斯· 彭内贝克曾说:“仔细观察人们通过语言表达思想的方式,会感受到他们的性格特征、情感变化以及与外物的一些联系。”他同诸多心理学家、语言学家和自然语言处理(NLP)从业人员一起研究了书面文本,借助双向LSTMs和NLU(自然语言理解)等先进技术得到了更准确的人格反馈,取得了重大进展。

前不久,IBM Watson的开发团队研发了一款叫做“性格洞察(Personality Insights)”的产品,用于商业用途,可以对人格特征进行分类。产品主页的标语是:“根据书写文本预测人格特征、个人需求和价值高低。大规模地了解每位客户的习惯与偏好。”既然该技术的商业用途很强,那利用其处理影片中主要人物的对话从而对人物性格特征进行分类,应该很有意思。

数据

为了这个项目,笔者调用了加州大学圣克鲁斯分校的影视资料库(https://nlds.soe.ucsc.edu/fc2)。资料库根据体裁划分出了不同的影视区域,共有960个电影脚本,其中的对话片段也从场景描述中分离了出来。

为了准备好分析所需的数据,要进行相当规模的清理及预处理过程。此外,处理时会遇到一些数据结构上的挑战。也就是说,需要拆分它们,再将每句话与相应的人物联系起来。

考虑到这篇文章的内容,笔者并不打算深入介绍预处理代码(完整笔记:https://github.com/nicholassherwin/Natural-Language-Processing/blob/master/Project%204%20Final%20Notebook.ipynb)。

不过,接下来笔者会阐述如何通过对话区分人物或讲话者,最后再如何将这些人物特性整理压缩到一个数据帧中。

# regex to find and separate all characters in the scripts
speaker = re.findall(r"([A-Z]+\s?[A-Z]+[^a-z0-9\W])",cleaned_df)

# regex to find and separate all dialogue from the speakers/characters
dialogue = re.compile('[A-Z]+\s?[A-
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值