BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

预测电影评级:NLP正是电影公司所需要的

| 作者 Tatsiana Levdikova 关注 0 他的粉丝 ,译者 CarolGuo 关注 2 他的粉丝 发布于 2017年7月14日. 估计阅读时间: 24 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

本文要点

  • 用自然语言处理(NLP)技术来预测一个新电影的成功和票房情况
  • 用电影观众的评论来预测电影的评级
  • 电影评论的来源,包括提供电影相关数据的社交媒体
  • 对社交媒体平台上所分享的电影评论和观点进行情感分析,有助于市场营销人员预测电影评级
  • 电影评论的分析也可用于电影体裁的分类以及电影推荐系统的改进

电影评论和评级

众所周知,电影行业的利润很大。PwC的一份统计数据表明,2015年全球票房收入达到近380亿美元。如今人们被太多的选择弄得有些不知所措:2015年,仅北美就发行了690多部电影。然而,只有很少一部分电影能有很长的生命期。大部分电影很快上了Top排行榜,但是随着新作品不断涌现,这些电影很快又下榜了。

电影公司都知道市场竞争很激烈,他们的电影不一定能达到票房期望(譬如,2006年发行的“Superman Returns”)。他们很努力地提高成功的可能性,电影行业人士对成败的预测越来越感兴趣。有一些研究表明,电影的评级与后续的销售之间是有联系的。譬如,Gilad Mishne和Natalie Glance曾证明,在博客文章中引用电影与这些电影在经济上的成功之间是有很强的相关性的。

在选择观看什么样的电影时,人们倾向于依赖其他人的观点。事实上,除了电影评论家们,普通人也会在网络上分享他们的评论,这些评论可以作为丰富的数据来源用以预测电影的评级和票房。在进行电影评论分析时,可以使用自然语言处理(NLP)技术。这篇文章主要介绍如何将这些工具应用于分析中,并列出了开发人员所面临的挑战。

电影评论数据

有很多网站专门对电影和电视节目作出评论。烂番茄(Rotten Tomatoes)和IMDb跻身于最受欢迎的评论中心之列。电影评论不仅仅局限于这些网站,人们还将他们的观点发到电影论坛,发表到在线杂志和期刊。因此,研究者们可以免费提取到海量的数据。

人们也应该考虑社交媒体(如Twitter)上的帖子,因为Twitter上每秒大约有6000条推文发出。很多推文消息是关于电影的。Bernard J. Jansen等人对推文在网络口碑方面的威力进行了研究,他们在研究中演示了将Twitter作为分析数据的来源。

人们用标签来让自己的帖子可被搜索到,因此不难找到谈论电影的推文。然而研究者们不用手动地搜索推文。他们可以利用Twitter的Search APIStreaming API自动搜索。获取理想数据的另外一个选择是从中间商那里购买。

YouTube也很有可能成为研究者们的一个丰富的数据银行。用户很积极地在电影预告片(官方的或非官方的)下面的评论中表达他们的观点。下图给出了对电影“La La Land”的官方预告片的部分评论。

(点击放大图像)

一旦电影在电影院上映,Youtube自媒体和其他Youtube用户会向频道中发表自己的评论。研究者们也可以使用这些评论。可以先用语音识别软件将语音转换为文字,然后用语言学工具来分析这些文字。当然,专家们也可以利用人们对这些评论的点评。

为什么要用NLP

很显然,离开了电脑就无法分析电影评论。但是机器一般用于处理高度结构化的语言。这也是为什么它们自己不能理解自然语言(人类所说的语言)的上下文语境。

技术上的进步改变了这个状况,新的方法和算法使得计算机有机会理解自然语音。譬如,机器学习和自然语言处理借用不同的技术(如,基于贝叶斯和隐马尔科夫模型的技术)来识别语音和“理解”自然语音 。

应用NLP的目的是什么呢?譬如,NLP被用于各种问答系统,如CortanaSiri。基于NLP的Summarizer能处理文本并创建简短的摘要。Text Summarizer就是解决方案之一,用户可以输入他们想获取摘要的文章,或者直接将文本解析到文本框里。NLP工具可用于识别语言、识别指定的实体和搜索相关事实。

情感分析是NLP的重要领域之一。它帮助机器发现文本信息中的整体倾向。在分析视频或录音时,技术工具可以轻松地发现其中的情绪。当涉及到文本分析时,任务就变得有些难度了。市场营销人员经常将NLP工具用于意见挖掘,来了解人们对一个产品或服务的想法。毫无疑问,电影制片公司可以用情感分析找出人们对某个电影的看法。

情感分析的精度

就电影评论的自动分类而言,研究者们可能选择一种现有的方法或者将几种方法组合在一起。每一个方法都非常准确,有些专家声称他们可以达到约65%的情感分类精度。他们也展示了将基于统计的、基于bag-of-words的、基于内容的和基于词典的方法组合在一起可以达到更高的精度(67.931%)。

Intellexer SDK的三个组件(即:Categorizer、Comparator和Sentiment Analyzer)组合在一起用于分析酒店和餐馆评论时,也达到了类似的结果(75-83%的精度)。你可以在这里看到这些分析。

Intellexer Sentiment Analyzer是一个语言学工具,它利用语言学和统计学信息以及一组语义规则。

Sentiment Analyzer是如何工作的

我们来看看如何用Intellexer Sentiment Analyzer从烂番茄上对电影“Fifty Shades Darker”的评论中提取情感。例子程序可以从这里找到。如果自己运行该程序,你需要能访问Intellexer cloud API并已安装Python解释器。

下面是开始使用API的步骤:

  1. 创建一个账户
  2. 阅读文档,选择适合你的任务的方法(analyzeSentiments方法适合用于电影评论的分析)。
  3. 执行GET/POST HTTP请求并解析响应结果。

电影评论被转换为JSON数组存放在POST消息体中,其中数组中的每一个元素包含有id(评论ID)和text(评论文本)。

有两种类型的权重(w):

  • 观点的情感权重(如果是观点词,该值为负数或正数;如果是对象或ontology类别,该值为零);
  • 评论的情感权重。这个参数用于对评论的整个文本进行分类,看是表达了正面的、中立的或负面的意见。

下面的代码说明了Sentiment Analyzer是如何工作的。

import json
import urllib
import urllib2

# JSON格式的评论列表
reviews = """[
{
\"id\": \"snt1\",
\"text\": \"I know that “Fifty Shades Darker” isn’t supposed to be good 
— it’s supposed to be bad, in need of a spanking. This sequel is almost so bad that it’s 
good, and if only the filmmakers would submit to making campy comedy of E.L. James’ naughty novels, 
this just might be quality trash cinema.\"
},
{
\"id\": \"snt2\",
\"text\": \"Fifty Shades Darker opens with a smack. Not the erotic sound of palm hitting rump, 
but of junkies brawling as their 4-year-old son, BDSM-billionaire-to-be Christian Grey, cowers under a table. 
Months later, his birth mother dies of a heroin overdose. Doing the math, she could have been shooting up with 
fellow Seattle addict Kurt Cobain. The orphaned boy will be adopted by tycoons and upgrade from grunge to glam. 
His childhood pain will mutate into a fetish for whips, slaps, and sad-eyed brunettes who look like his mommy — 
a pathology diagnosed by a college kid who skipped most of Psychology 101. And so, in the film's first five 
minutes, Fifty Shades author E.L. James sets up the series's strange sanctimony: You're screwed up 
if you think this sex-torture stuff is hot. But hey, isn't it kinda hot?\"
}
]"""

# 设置POST请求的URL,指定用于信息处理的url和参数以及用于权限的API密钥(将YourAPIKey换成Intellexer API key)
api_url = "http://api.intellexer.com/analyzeSentiments?apikey=YourAPIKey&loadSentences=true"

# 输出已分类的观点
def print_tree(node, height):
for i in range(0, height):
print "\t",
print node.get("t"),
if node.get('w') != 0:
print "\t", node.get('w')
else:
print "\t"
children = node.get('children')
height += 1
for child in children:
print_tree(child, height)

# 输出响应结果
def print_response(response):
print "Sentences with sentiment objects and phrases:";
sentences = response.get('sentences')
for sent in sentences:
print "Sentence Weight = ", sent.get('w'), "\t", sent.get('text').encode('utf-8')
# 输出已分类的观点
print "\nCategorized Opinions with sentiment polarity (positive/negative)"
print_tree(response.get('opinions'), 0)

# 创建一个Sentiment Analyzer API服务请求
def request_api(url, data):
header = { 'Content-Type' : "application/json" }
req = urllib2.Request(url, data, header)
conn = urllib2.urlopen(req)
try:
json_response = json.loads(conn.read())
finally:
conn.close()
print_response(json_response)

# 执行请求
try:
request_api(api_url, reviews)
except urllib2.HTTPError as error:
print 'HTTP error - %s' % error.read()

输出结果如下:

(点击放大图像)

(点击放大图像)

电影评论分析所面临的挑战

商业智能应用的提供商们必须解决一些挑战。下面列出了其中最常见的一些挑战:

  1. 一个评论中可能含有多个观点(甚至是对同一个实体有多个观点)。通常而言,句子级别(sentence-level)的方法不能发现关于每个实体和(或)它的切面的观点。基于切面的(aspect-based)方法更适合这种情况,因为它能评估同一个实体的两个观点。
  2. 中立或客观的推文可能改变整个评级。人们认为这种推文“仅仅是事实,不含有任何情感或观点”。
  3. 多义词和同形异义词。举例来说,根据上下文语境,单词“firm” 的意思可以是稳固的、结实的东西或商业企业、公司。
  4. 将名称与描述区别开来。也就是说,一个电影的名字可能包含“战争”或“怪兽”,NLP方法可能把它理解为负面的,从而使得整个评级有偏差。
  5. 使用指代。NLP方法在决定某个代词、名词或短语所指的对象时可能会遇到某些特定的困难。譬如,“我吃了午餐,还看了电影。它真棒。”
  6. 俚语是另外一个挑战。评论和推文中有很多俚语。譬如,有人可能说“That's a bad shirt, man”,而实际上他们是在夸一个朋友。
  7. 讽刺和微妙之处:人们喜欢玩文字游戏,包括讽刺和反语。大数据解决方案并非总是能识别出深藏的含义。而且,还有一些与跨文化差别相关的讽刺。
  8. 特殊字符:有些电影的标题中含有变音符号(特别是外国电影)。这也是为什么那些标题中带省略号的电影可能导致编码问题。
  9. 拼写错误。人们在评论和社交媒体帖子中会写错,NLP工具可能不能正确地分类这些词。譬如,Google发现,住在加州的人们往往把“dessert”和“desert”弄混淆,而来自阿拉斯加的人往往拼错“Hawaii”。
  10. 地理上的限制:一个电影可能在一个地区很受欢迎但在其他地区被严厉批评。因为只有小部分推文带有地理位置标签,因此评级可能混在一起。

情感分析的其他应用场景

NLP工具的作用不仅仅局限于将评论分类为负面的和正面的类别。基于讨论的主题,如剧本、演员或气氛(即电影在观众中间所营造的一种特殊的情绪或感觉。譬如,一个电影可能有一种很神秘的气氛)等等,负面的和正面的评论可以被组合起来。可以更进一步地分析这些评论,从而提取更多的信息,比如评论者喜欢电影的哪些部分,不喜欢哪些部分。

电影评论网站的拥有者们将能够创建一个更灵活的电影评级系统,从而让用户有机会看到其他人对电影各方面的评论,找出为什么该电影有这个评级。譬如,他们将可以知道,其他人喜欢某个主演是因为他们在观看电影时所体会到的情感,但是这些人并不喜欢电影配乐,因为它与主题无关。

有些人已经朝着这个方向迈进了:Subhabrata Mukherjee和Pushpak Bhattacharyya探索了如何从评论中识别出与特定特征相关的观点,这些评论描述了不同的特征,夹杂了不同的情绪。

电影评论和体裁分类

目前,主要由审核网站的人来人工识别电影的体裁。这些人可能对电影很有激情,但是他们可能并不能正确地识别电影的体裁。

如前面所述,NLP工具可以帮助研究者们识别电影体裁,因为同一体裁电影的评论具有一些共同的特征,这就使得NLP工具能有效地、省时地将它们分组。

然而,这类工具的开发者需要解决一个问题:他们需要选择将要使用的电影体裁模式。如今,电影并不属于某一个体裁,它们代表一组不同的体裁的结合。譬如,IMDb说2016年发行的电影“Star Trek Beyond”属于下面这些体裁:动作片、冒险片、科幻片和惊悚片。的确如此,这部电影涵盖了所有这些特征(还有其他一些没有提及的特征)。这篇文章 (从机器学习的角度)更深入地探索了与体裁分类相关的问题。

NLP和类似的电影

电影可以属于不同的体裁,但对评论人的影响是类似的。举一个例子,你可能因为电影“X-Men”里面所描述的爱情故事而喜欢它(被IMDb分类为动作、冒险和科幻电影)。但是,如果你试着在当前的评论网站中寻找类似的电影,它会向你建议另一部科幻电影,而不是你在找的爱情片。

NLP工具不仅仅用于情感分析和电影的体裁分类。NLP解决方案,如Comparator,能比较评论并设置它们之间的相似度。这篇案例分析描述了NLP解决方案如何帮助管理媒体内容。

结论

NLP是一个很强大的解决方案,它能将电影评论系统推向更高层次。网站所有者可以利用这些工具所获取的信息来创建聚焦于特定方面的详尽的电影评论,以及基于体裁和相似度对电影进行分类。这些信息也可被用于更好地定位广告。

不要把研究所需要的数据来源局限于专门提供电影评论的网站。像Twitter和YouTube之类的社交媒体在提供数据方面与这些网站不相上下。

参考文献

  1. Amolik, A., Jivane, N., Bhandari, M., Venkatesan, M. (2015). Twitter Sentiment Analysis of Movie Reviews using Machine Learning Techniques. International Journal of Engineering and Technology, Volume 7, Issue 6. Retrieved April 26, 2017 链接.
  2. Brennan, M. W. (2016, November). Performance Comparison of 10 Linguistic APIs for Entity Recognition.ProgrammableWeb.
  3. EffectiveSoft, Ltd. (2014) Intellexer Sentiment Analyzer SDK WP [White paper]. Retrieved April 26, 2017,Intellexer.
  4. Kitin, Y. (2016, August). Will Google NL kill the market? Linguistic APIs review. LinkedIn. Retrieved April 26, 2017 链接.
  5. Kitin, Y. (2016, November). Online Summarizers overview. LinkedIn. Retrieved April 26, 2017 链接.
  6. Manning, C.D., Raghavan, P., Schütze, H. (2008). Introduction to Information Retrieval.
  7. Turney, P. D. (2002, July). Thumbs Up or Thumbs Down? Semantic Orientation Applied to Unsupervised Classification of Reviews.

关于作者

Tatsiana Levdikova是EffectiveSoft的一名技术记者。她撰写的主题有软件开发、UI和UX、自然语言处理、大数据、人工智能以及其他IT相关的主题。

查看英文原文:Predicting Movie Ratings: NLP Tools is What Film Studios Need


感谢薛命灯对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT