2016年亚太杯APMCM数学建模大赛
C题 影视评价与定制
原题再现
中华人民共和国成立以来,特别是政治改革和经济开放后,随着国家经济的增长、科技的发展和人民生活水平的提高,中国广播电视媒体取得了显著的成就,并得到了迅速的发展。截至目前,中国广播电视传媒已经为未来产业发展奠定了良好的基础。
2012年,中国共制作了893部电影,总票房170.73亿元,比上年增长30.18%。其中,中国国产电影票房达到82.73亿元,占全年总票房的48.46%。这是自2003年以来,中国国产电影首次被进口电影击败。2012年2月,中美双方就WTO电影相关问题达成《WTO谅解备忘录》,并决定增加进口电影配额。在最初的20部进口电影配额之外,还将有14部高科技格式的美国电影。票房分账的比例也从之前的17.5%上升到了25%。国内电影市场现在处境不佳。
美国的文化产业,也就是所谓的版权产业,占GDP的10%,而中国只有不到3%。如今,在中国,一集电视节目的价格可以达到7位数,未来可能达到8位数。这也符合中国的经济发展。富裕经济后对文化和娱乐的需求增加,将推动该行业快速增长,成为未来增长最快的企业之一。
在“十二五”期间,中国将大力发展影视制作、文化创作、娱乐表演等七大重点文化产业。在此期间,中国影视产业将迎来一个重要的战略机遇期;政府将加大扶持力度,为中国影视业创造良好的营商环境。中国电影奖委员会将在未来5年保持每年500部电影的产量。2014年,中国电影市场票房将突破300亿元,预计观影人数将达到11.12亿,相当接近全国总人口。此外,影院将变得更加多样化;小众电影和艺术电影也将有自己的放映空间。国务院《电影产业繁荣发展促进指导意见》指出,到2015年底,通过改革创新、加大投资、加快发展,我国将建立健全公平的市场竞争、企业自主经营的电影产业经营体系、市场运作、企业管理、,政府采购,以及电影公共服务体系的公共利益。
当前的中国电视市场竞争激烈,充满了不同的风格和话题。虽然每年的电视剧产量仍然很高,但电视台并没有太多的购买欲望,这导致了电视剧供过于求。据统计,每年有一半以上的电视作品在没有买家的情况下被浪费,造成了巨大的资源浪费。数量从来都不是电视剧的问题,但质量一直是我们需要解决的问题。如何降低成本,摆脱草率粗暴的电视投资,决定着电视剧的未来发展。未来电视剧之间的竞争将是一场质量竞赛。只有保证电视剧的质量,才能获得最大的回报。
同时,利用2014年的大数据作为测试电视市场的分析工具也取得了相当成功。虽然大数据无法创建脚本,但它可以非常精确地分析数据和预测。这可以应用于剧本编写、电视收视率预测、电视广告结果和电视剧购买。可以降低电视投资风险,提高剧本质量,预测观众反应,以确保最大效益。
在影视剧市场中,如何对影视剧进行评价和定制等问题一直是一个制作过程中关注的焦点。现在请尝试使用数学建模方法来解决以下问题。
问题1:根据排名指数对电视剧进行排名,并用附件1和附件2中的数据说出你的前十名。
问题2:演员的受欢迎程度排名对电视剧的制作可能非常有用。请收集并使用相关数据作为基础,设计一个明星人气指数,并尝试通过givi来证明你的指数的可达性。
import requests
import re
import httplib
import md5
import urllib
import random
import json
def translate(q):
appid = '20151113000005349'
secretKey = 'osubCEzlGjzvw8qdQc41'
httpClient = None
myurl = '/api/trans/vip/translate'
fromLang = 'zh'
toLang = 'en'
salt = random.randint(32768, 65536)
sign = appid+q+str(salt)+secretKey
m1 = md5.new()
m1.update(sign)
sign = m1.hexdigest()
myurl =
myurl+'?appid='+appid+'&q='+urllib.quote(q)+'&from='+fromLang+'&to='+
toLang+'&salt='+str(salt)+'&sign='+sign
try:
httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
#response HTTPResponse
response = httpClient.getresponse()
return json.loads(response.read())['trans_result'][0]['dst']
except Exception, e:
print e
finally:
if httpClient:
httpClient.close()
tags =
['love','comedy','city','Suspense''Costume','idol','crime','history',
'war','Martial arts','Police bandit','Science Fiction']
def get_page(tag):
url = "http://v.sogou.com/teleplay/list/style-%s+zone-内
地.html"%(tag)
con = requests.get(url).text
return con
def find_vedio(context):
# print context
pattern = r'target=\"_blank\">(.*?)<\/a><\/div>'
return re.findall(pattern, context)
def get_data(tags):
out = []
for tag in tags:
data = {}
vedios = find_vedio(get_page(tag))
data[tag] = vedios
out.append(data)
return out
if __name__ == '__main__':
data = get_data(tags)
for tag in data:
key = tag.keys()[0]
# print key
vedios = tag.values()[0]
for vedio in vedios:
# print data so that can be covertd to csv format.
print translate(key)+','+translate(vedio.encode('utf-8'))
整体求解过程概述(摘要)
明星和戏剧问题基于大数据。为了解决这些问题,从互联网上搜索可靠的数据,过滤掉坏值,确定权重并给出预测具有重要意义。
首先,关于电视剧排名,我们选择电视剧评分、每部电视剧的评论家数量和电视剧集数量作为前三个重要指标来判断最终排名。为了找出三个指标中最合理的权重,我们使用TOPSIS法来计算最佳权重。最后,当直接计算指标之间的关系不明确时,基于灰色关联度和单层次综合评价给出了剧集的排名。
其次,我们认为评判明星人气的指标是丰富的、非官方的,因此Apriori算法可以用来过滤不重要的指标,只保留高权重的指标。通过遍历从互联网上收集的多个数据,我们得到了最终的频繁n项集,其中n项集是最重要的索引。然后利用主成分分析法得到相关指标的权重。除此之外,还应考虑特殊情况,例如由花边新闻在短时间内引起的剧烈变化。最后,我们将基于我们的指数的排名与官方网站上的排名进行比较,发现大致相等。
第三,为了建立一个新的团队来创建新产品,我们可以使用爬虫从互联网上搜索到的数据,如点击率、评论家、主演、制作团队等。为了过滤掉不重要的指标,可以使用逐步回归方法,然后我们可以得到标准化。通过这个等式,每个指数都将对应一个权重,该权重衡量对最终指数的贡献。然后,将导出的排名与官方排名进行比较,以获得可信度,并判断该指数是可接受的。根据最终指标,描述一个理想的生产团队。
最后,从观众的浏览历史和每个频道的评分中获得最合适的推荐。这里使用LDA算法,找出主要趋势和主要类型的历史。赋值主要取决于历史数据具有不同类型的概率,然后通过余弦计算找到拟合度最高的数据。使用标准化后的数据,我们证明了该模型的可信度高达93.2%。此外,当依赖于评级时,该模型也是可靠的。
每个模型都经过了来自现实的数据测试,这些数据来自互联网,由Python中的爬虫搜索。
模型假设:
1) 数据可以正确反映受欢迎程度。没有恶意提高知名度的网络雇佣兵。
2) 所有以明星或戏剧名字命名的论坛都在谈论这个主题。论坛上有所有相关的帖子
3) 知名网站的排名没有商业猜测。所有的排名都依赖于现实,而且必须是客观的。
4) 这些模型具有通用性。因为来自互联网的数据不可能包含所有的明星和剧集。通过计算足够大的数据规模来考虑。衍生出的模型可以适用于所有的明星和戏剧。而且错误太小,无法组织。
问题重述:
当前的中国电视市场竞争激烈,充满了不同的风格和话题。虽然每年的电视剧产量仍然很高,但电视台并没有太多的购买欲望,这导致了电视剧供过于求。数量从来都不是电视剧的问题,但质量一直是我们需要解决的问题。如何降低成本,摆脱草率粗暴的电视投资,决定着电视剧的未来发展。
同时,利用2014年的大数据作为测试电视市场的分析工具也取得了相当成功。虽然大数据无法创建脚本,但它可以非常精确地分析数据和预测。这可以应用于剧本编写、电视收视率预测、电视广告结果和电视剧购买。可以降低电视投资风险,提高剧本质量,预测观众反应,以确保最大效益。
在影视剧市场中,如何对影视剧进行评价和定制等问题一直是一个制作过程中关注的焦点。现在请尝试使用数学建模方法来解决以下问题。
根据排名指数对电视剧进行排名,并说出你的前十名。
请收集并使用相关数据作为基础,设计一个明星人气指数,并通过今年的真实例子来证明你的指数的可及性。
描述一个理想的制作团队,包括制片人和演员。试着用一个真实的例子来证明你的观点。
通过观看历史和节目收视率,找到最适合观众和每个地方电视台的剧本内容。收集相关数据,使用数学建模方法提供解决方案,并使用真实的例子来证明你的观点。
模型的建立与求解整体论文缩略图
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
部分程序如下:
import requests
import re,json
def get_stars(url):
strs = '''<span class="rank_left_name" person-id="529">Liyin
Zhao</span><span clas'''\
'''s="rank_left_value"><b class="rlv_gray">9.0814</b>'''
req = requests.get(url).text
pattern = r"<span.*?personid=\"\d*?\">(.*?)</span>.*?\">([\d,\.]*?)</b>"
out = re.findall(pattern,req)
for i in out:
print i[0] + "," + i[1] # print stars so that wo can covert
the file to a csv format.
return out # return the list of stars.
def get_rank():
url_1 = "http://www.xunyee.cn/rank-person-index-3.html"
get_stars(url_1)
length = []
for i in range(2,35):
url_2 = "http://www.xunyee.cn/rank-person-index-3-
page-%d.html"%(i)
length.append(get_stars(url_2))
return length
# the stars list
stars = [u'Zhao Liying', u'Li Yifeng', u'Lay', u'Yang Zi', u'Ma
Tianyu', u'Yang Yang', u'Hu Ge', u'William Chan',
u'Liu Tao', u'Yang Mi', u'Victoria', u'Zheng Shuang', u'Wang
Kai', u'Tang Yan', u'Ruby Lin', u'Liu Shishi',
u'Guan Xiaotong', u'Wang Ziwen', u'Wallace Huo', u'Zhang Yishan',
u'Zhangruoyun', u"Zhang Tian'ai", u'Di Ali Gerba',
u'Joker', u'Cheney Chen', u'Fan Bingbing', u'Maggie Jiang',
u'Zhang Han', u'Joe Chen', u'Gulnazar', u'Honglei Sun',
u'Jiang Xin', u'Wu Lei', u'Zhang Meng', u'Hawick Lau', u'Mark', u'Qin
Junjie', u'Juen-Kai Wang', u'Angela Baby',
u'Tansongyun', u'Chenhe', u'Liu Yifei', u'YoonA', u'Song Joong
Ki', u'Yuan Wang', u'Tangyixin', u'Wu You', u'William Feng',
u'Jiangjinfu', u'Through', u'Jin Dong', u'Liuhaoran', u'Li
Zhongshuo', u'Dongyu Zhou', u'Jackson Yi', u'Zhong Hanliang',
u'Kan Kiyoko', u'Deng Chao', u'Luyi Zhang', u'Li Chen', u'Sun
Li', u'Guo Degang', u'Liu Yan', u'Lu Yi', u'Huang Lei',
u'Zhangmingen', u'Luhan', u'Ju Jingyi', u'Cheng Yi', u'Ji Chang
Wook', u'Xiaozhan', u'Zheng Kai', u'Mao Zijun',
u'Huang Xiaoming', u'Yu Hewei', u'Hai Qing', u'Luo Jin', u'Qi
Wei', u'Huang Bo', u'Li Qin', u'Wu Xiubo',
u'Xinyi Zhang', u'Qing Jia', u'Huang Haibing', u'Yuan Shanshan',
u'Jia Nailiang', u'Du Chun', u'Cary Woodworth',
u'Zu Feng', u'Baishu', u'Qiao xin2', u'Zhao Wei', u'Liyan Tong',
u'Yuan Hong', u'Chen Xiao', u'Maoxiaotong',
u'Qiao Zhenyu', u'Ady Ann', u'Gao Yuanyuan', u'Yang Shuo', u'Chen
Xiang', u'Zheng Yin', u'Hye gyo Song', u'Nicky Wu',
u'Wujiacheng', u'Chen yao1', u'Lee Jun-ki', u'Xiao Che', u'Zhang
Yi', u'Huyunhao', u'Joe Cheng', u'Gilbert air',
u'Baoqiang Wang', u'Janine Chang', u'Jin Chen', u'For the',
u'Eddie Peng', u'Sheenah', u'Hongchen', u'Wang Ou',
u'Faye Yu', u'Sun Yi Chau', u'Pets Ceng', u'Fuchengpeng', u'Jing
Bairan', u'Qiao Renliang', u'Show Luo', u'Wu Jing',
u'Zhe Han Zhang', u'Handongjun', u'Liyitong', u'Alec Su',
u'Loura', u'Zhang Danfeng', u'Yan Ni', u'krystal',
u'The white buildings', u'Guozifan', u'Houmengsha', u'Louis Koo',
u'Hubingqing', u'Park Shin Hye', u'Andy',
u'Jimmy Lin', u'Pengchuyue', u'Rong Yang', u'Zifeng Zhhang',
u'Shuyaxin', u'Zhang Xinyu', u'Kris', u'Yangle',
u'Yuanbingyan', u'Zhu Yawen', u'Maidina', u'Zhangxueying', u'Ng
Cheuk Hai', u'Kelsey', u'Kyle Cui', u'Xuhaiqiao',
u'Happy', u'Qian Wu', u'Jay Chou', u'Wang Xiaochen', u'Li
Xiaoran', u'Liu Ye', u'Zhao Lei', u'Xu Doudou', u'Jiro Wang',
u'Yanzidong', u'Ouyang Nana', u'Gao Yixiang', u'Benny Chan',
u'Song Jia', u'Jordan Chan', u'Bea Hayden', u'Michelle Chen',
u'Yan Yi wide', u'Stephen Chow', u'Alyssa Chia', u'Ying Er',
u'Raymond Lam', u'Bosco Wong', u'Xiong Naijin', u'Hu Bing',
u'Bing Shao', u'Angela Chang', u'Anita Yuen', u'Baijingting',
u'Vincent Chiao', u'Gillian Chung', u'JJ Lin', u'iu', u'Xu',
u'Kenny', u'Charmaine Sheh', u'Angie Chiu', u'Tsung-Han Lee',
u'Kim Su Hyon', u'Zihan Chen', u'Yu-chi Chen', u'Ariel Lin',
u'Wang Yuexin', u'Du Haitao', u'Jiangzile', u'Chenruoxuan', u'Ma
Sichun', u'Pubaojian', u'Niujunfeng', u'Peter Ho',
u'Gujiacheng',
]
def getFansAndPosts():
pattern = r"<span
class=\"card_menNum\">([\d,\,]*?)</span>[\w\W]*?<span
class=\"card_infoNum\">([\d,\,]*?)</span>"
for i in stars:
url = "http://tieba.baidu.com/f?kw=%s"%(i)
# print url
req = requests.get(url).text
result = re.findall(pattern,req)[0]
# print results so that wo can covert the file to a csv
format.
print result[0].replace(',','')+','+result[1].replace(',','')
def calc(ll):
out = 0;
for i in ll:
out += int(i)
return out/len(ll)
def getIndexAndMedia():
for i in stars:
try:
get_media_url =
"http://index.so.com/index.php?a=soMediaJson&q=%s"%i
media =
json.loads(requests.get(get_media_url).text)['data']['media'].values(
)[0].split('|')[-300:-1]
get_index_url =
"http://index.so.com/index.php?a=soIndexJson&q=%s"%i
index =
json.loads(requests.get(get_index_url).text)['data']['index'].values(
)[0].split('|')[-300:-1]
# calculate the average num of Media Focus
avg_media = calc(media)
# calculate the average num of Index.
avg_index = calc(index)
# print stars so that wo can covert the file to a csv format.
print str(avg_index) + "," + str(avg_media)
except Exception,e:
print i
exit(0)
if __name__ == '__main__':
getIndexAndMedia()