分享

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

问题导读:

1. 电影的评论和评级对于电影公司有何作用?
2. 电影评论数据从何获取?
3. 为何使用NLP?
4. 情感分析精度如何?
5. Sentiment Analyzer是如何工作的?
6. 电影评论分析所面临的挑战是?
7. 情感分析的其他应用场景是什么?
8. 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”的官方预告片的部分评论。


2017-07-19_121707.jpg

一旦电影在电影院上映,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的步骤:

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

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

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

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


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


[mw_shl_code=python,true]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()[/mw_shl_code]

2017-07-19_122006.jpg

2017-07-19_122015.jpg


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

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

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


情感分析的其他应用场景

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

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

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

电影评论和体裁分类

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

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

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

NLP和类似的电影

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

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

结论

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

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


转自:infoQ
作者:CarolGuo

已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条