`
rcfalcon
  • 浏览: 227949 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

过滤及提取电影资源名小算法(初级方案)

阅读更多

这两天干了件自己觉得很有意思的事情——

 

互联网上各个视频网站,对电影资源的命名千奇百怪,比如

 

《阿凡达》高清版在线观看、西游记新版中文字幕(暑期必看!)、阿里巴巴与四十大盗拍摄花絮 ……

 

如果我们要将这些信息“数字化”,提取到我们的数据库中,则这样的垃圾命名会给我们带来很大的麻烦。

 

于是,我写了一个程序,简单的对这些垃圾信息进行处理。尽量提取出正确的电影名,并且在之前的电影名中提取一些该电影相关数据。比如 “阿里巴巴与四十大盗拍摄花絮”这样的,我们就需要知道它并不是一个电影的正片资源,而是花絮,它的影片名是 “阿里巴巴与四十大盗”。

 

OK,废话少说,开始进入正题。

 

首先是调研:

 

我粗略的看了一下各个网站爬虫程序爬回来的结果,比较乱的是 openv(天线视频)和优酷。

 

大量出现的一些垃圾字段 如“首映”、“独家首播”、“最新”……

 

然后还有一些情况是,比如 “XXX第X集”、“XXXX(韩剧)”、“XXXX(未删减版)”、“XXXX(xxx英文名)……

 

那么就是两种情况,对于垃圾字段,我们无情的删除之。对于这种有用的字段,我们需要先从里面提取出信息,然后再将其删除。

 

 

大体算法流程如下:

 

原始字符串 -> 删除垃圾字段 -> 截取有用信息 -> 整理字符串 -> 结果。

 

我统计的垃圾字段有如下:

 

在线观看
首映 首款
网络独家首播)
暑期必看
(配音) (配音)
最新 
(电视) (电视)
(电视剧) (电视剧)
(韩剧) (韩剧)

 ……

 

有用的信息如下:

 

未删减版 完整版 —— 可以确定电影是正片
高清版 高清全集 高清 枪版  —— 确定电影的质量
韩语版 粤语版 国语版 中文版 —— 确定语言类型
主题曲MV —— 确定资源类别
电影版 电视剧版 —— 确定类型
超长片花 片花 幕后花絮 花絮 —— 确定资源类别
限制级 —— 限制级别
(第X集)—— 电视剧集数
精彩预告 全长预告片 先行版预告片 预告片1 预告片2 预告片3 ... 预告片 宣传片 制作特辑 —— 资源类别

(XXXXXXXX) —— 很可能是电影的别名或者英文名之类的,这里我认为超过三个中文字符(6个英文)则是别名。(否则很可能是“(上)”、“(上集)”之类的,这需要属于影片字段。比如赤壁(上)和赤壁(下)就是不同的电影。

……

 

最后整理:

去掉() ()  []等无内容的符号,因为其里面的内容已经在之前被提取或者删除

去掉左右空格

 

然后开始编码,编码的话还是用擅长处理文本的脚本语言,我用的是PHP。

 

之后测试结果还是比较准确的。

 

这个方法比较初级,之后我会要考虑有更好、更智能的方案。大致想法是要先建立一个电影名的词汇库,然后自训练。嗯……今后再说。

 

 

附相关代码

 

<?php
	require_once('class.php');
	require_once('num_trans.php');
	

	//删除单词
	function delete_word( &$name, $word )
	{
		$name = str_replace($word,"",$name);
	}
	
	//剪裁单词,若包含,返回TRUE
	function cut_word( &$name, $word )
	{
		if( strstr($name,$word) )
		{
			delete_word($name,$word);
			return TRUE;	
		}
		return FALSE;
	}

	//处理电影名
	function filte_movie_name( $name )
	{
		
		//垃圾单词
		$del_word=array("在线观看","首映","首款","(网络首家独播)","暑期必看","(配音)","(配音)","最新","(电视)","(电视)","(电视剧)"
			,"(电视剧)","(韩剧)","(韩剧)","(电影)","(电影)");
		
		$result = new FilterResult();
		$result->start_name = $name;//记录影片原名
		
		//删除垃圾单词
		for($i=0;$i<count($del_word);$i++)
		{
			delete_word( $name, $del_word[$i] );
		}
		
		//影片类型
		if( cut_word($name,"未删减版") || cut_word($name,"完整版") || cut_word($name,"未删截版")|| cut_word($name,"正片"))
		{
			$result->type = "正片";
		}
		if( cut_word($name,"主题曲") || cut_word($name,"主题曲MV"))
		{
			$result->type = "主题曲";
		}
		if( cut_word($name,"片尾曲") || cut_word($name,"片尾曲MV"))
		{
			$result->type = "片尾曲";
		}
		if( cut_word($name,"超长片花") || cut_word($name,"片花") )
		{
			$result->type = "片花";
		}
		if( cut_word($name,"幕后花絮") || cut_word($name,"花絮") )
		{
			$result->type = "花絮";
		}
		if( cut_word($name,"制作特辑")){
			$result->type = "特辑";	
		}
		if( cut_word($name,"精彩预告") || cut_word($name,"全长预告片") || cut_word($name,"先行版预告片") || cut_word($name,"预告片")
			|| cut_word($name,"宣传片") || cut_word($name,"预告片1") || cut_word($name,"预告片2") || cut_word($name,"预告片3")
			|| cut_word($name,"预告") )
		{
			$result->quality = "预告片";
		}
		
		///品质
		if( cut_word($name,"高清版") || cut_word($name,"高清全集") || cut_word($name,"高清版本") || cut_word($name,"高清") )
		{
			$result->quality = "高清";
		}
		if( cut_word($name,"枪版"))
		{
			$result->quality = "枪版";
		}
		
		///影片类别
		if( cut_word($name,"电影版"))
		{
			$result->code = "电影";
		}
		if( cut_word($name,"电视剧版"))
		{
			$result->code = "电视剧";
		}
		
		///语言
		if( cut_word($name,"韩语版"))
		{
			$result->language = "韩语";
		}
		if( cut_word($name,"粤语版"))
		{
			$result->language = "粤语";
		}
		if( cut_word($name,"国语版") || cut_word($name,"中文版"))
		{
			$result->language = "国语中文";
		}
		
		
		///限制
		if( cut_word($name,"限制级"))
		{
			$result->limit = "限制级";
		}
		
		//提取电视剧集数
		preg_match_all('|第([^<>]+)集|',$name,$lesson_result);
		$result->lesson=$lesson_result[1][0];
		
		if( cut_word( $name, "第".$result->lesson."集" ))
		{
			//中文转阿拉伯数字
			$result->lesson = tranlate_to_num( $result->lesson );
			$result->code = "电视剧";
		}
		
		//提取资源别名
		preg_match_all('|\(([^<>]+)\)|',$name,$second_name_result);
		preg_match_all('|(([^<>]+))|',$name,$second_name_result2);
		$second_name_context= $second_name_result[1][0];
		//大于3个中文字符,6个英文字符,认为是别名
		if( strlen($second_name_context) >= 6 )
		{
			$result->second_name = $second_name_context;
			delete_word( $name, $result->second_name );
		}
		$second_name_context= $second_name_result2[1][0];
		if( strlen($second_name_context) >= 6 )
		{
			$result->second_name = $second_name_context;
			delete_word( $name, $result->second_name );
		}

		//去掉多余符号
		delete_word($name,"()");
		delete_word($name,"()");
		delete_word($name,"[]");
		delete_word($name,"【】");
		delete_word($name,"“”");
		delete_word($name,'""');
		
		//去除左右空格
		$name = trim($name);
	
		$result->end_name = $name;
		return $result;	
	}
	
	//显示过滤结果
	function show_filter_result( $result )
	{
		echo "原名=  $result->start_name<br>过滤名=$result->end_name<br>别名=$result->second_name<br>片类型=$result->type<br>影片质量=$result->quality<br>
		影片类别=$result->code<br>语言=$result->language<br>限制=$result->limit<br>集数=$result->lesson";
		echo "<hr>";	
	}	
	
	/* 使用示例 */
	/*
	$test = "阿凡达首款在线观看首映(网络首家独播)未删减版枪版片尾曲(Avanda for long word)";
	$result = filte_movie_name($test);
	show_filter_result( $result );
	*/
?>

 

 

分享到:
评论

相关推荐

    深度学习推荐算法在高校大型仪器开放共享的应用研究.pdf

    深度学习推荐算法在高校大型仪器开放共享的应用研究中,主要关注如何利用现代技术优化高校内的仪器资源配置,提升使用效率和服务质量。随着科技投入的增加,高校大型仪器的数量和性能不断提升,随之而来的是管理和...

    手机短消息过滤系统的研究与实现

    因此,本文提出了一种基于智能手机平台的短消息过滤系统设计方案,利用文本分类技术对手机接收到的信息进行智能过滤。 #### 1. 系统设计 ##### 1.1 学习训练部分 学习训练部分是系统的基础,主要包括模式提取、...

    基于大数据的高效分布式离群点检测算法.pdf

    该算法在离群点检测阶段采用大数据模型进行批量过滤,并结合基于距离的数据与局部数据集验证来检验算法的实效性与精确度。与现有算法相比,该算法在一定程度上显著提高了计算的精确率。 5. 算法实现的关键步骤: ...

    IGMP Snooping 在EPON 中的实现方案

    - **工作方式**:交换机提取IGMP信息包,利用侦听到的信息获知组播接收者的连接端口,为每个组创建一个VLAN及相应的组播地址与VLAN的映射。同时,它会向所有端口(除了接收端口外)转发IGMP查询信息,并向属于同一组...

    基于多特征融合的Webshell恶意流量检测方法.docx

    1. **数据预处理**:首先对原始流量数据进行解析,过滤掉非正常的响应和媒体资源文件数据包,并对通信过程中的分段数据包进行重组,形成完整的通信会话。 2. **特征提取**:从数据包元信息、数据包载荷内容以及流量...

    基于深度学习人脸识别技术在高校课堂点名中的设计及实现.pdf

    人脸预处理是基于人脸检测的结果,通过 AI 智能算法,对筛选出的人脸图像进行图像灰度校正、图像噪声过滤等优化,形成最优的人脸图像。人脸特征提取是针对人脸的某些特征进行的, 一般采用的提取方式是基于知识的...

    全基因组重测序数据分析.doc

    3. SNP 检测及在基因组中的分布:提取全基因组中所有多态性位点,结合质量值、测序深度、重复性等因素作进一步的过滤筛选,最终得到可信度高的 SNP 数据集 4. InDel 检测及在基因组的分布:在进展 mapping 的过程中...

    MATLAB文字连通域源程序代码.zip

    这些属性有助于过滤掉非文字的小区域或异常形状。 5. **形状分析**:通过形状分析(例如,形状的长宽比)进一步细化分类,排除非文字的连通区域。 6. **文字排序与分离**:根据连通域的位置和大小,对文字进行排序...

    人工智能-图像处理-嵌入式图像处理技术在水厂矾花检测中的应用研究.pdf

    ##### 4.2 特征提取算法 特征提取是决定系统性能的关键步骤。常见的特征提取方法包括但不限于: - **边缘检测**:识别图像中的边缘信息,帮助定位矾花的位置。 - **颜色空间转换**:将原始图像从RGB颜色空间转换为...

    Coderbyte:编码字节挑战的解决方案

    在编程世界中,"Coderbyte" 是一个在线平台,它提供了各种编程挑战,旨在帮助开发者提升他们的编程技能,特别是对于初级到中级水平的程序员。这个平台涵盖了多种编程语言,其中包括 JavaScript,这也是本压缩包文件...

    基于深度学习的验证码识别.pdf

    CNN通过多层卷积层和池化层的组合,能够逐步提取图像的边缘、角点、形状等初级特征,并在后续的层中将这些特征组合起来识别复杂的验证码字符。 在实际应用中,深度学习模型的训练通常需要大量的标注数据。验证码...

    Spark大型项目实战:电商用户行为分析大数据平台开发实战

    上百节课详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程介绍: 讲解一个真实的、复杂的大型企业级大数据项目,是Spark的大型项目实战课程。 通过本套课程的学习,可以积累大量Spark项目经验...

    personal_recommendation-master.zip

    "personal_recommendation-master.zip" 文件包含了推荐系统相关的算法代码和实例,非常适合初级学习者入门。 在这个压缩包中,你可能找到以下几个方面的内容: 1. **协同过滤算法**:这是推荐系统中最常见的方法之...

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

    基于多元信息融合的网络安全评估模型.pdf

    通过对检测系统中的攻击漏洞信息进行初级过滤,提取漏洞信息的特征,对网络系统中的漏洞进行关联性分析,构建起用于网络安全评估的漏洞数据库及其关联库,再结合相应算法评估网络安全态势,并得出网络系统风险评估...

    现代雷达信号处理技术的发展趋势.pdf

    有多种恒虚警处理方法,如二进制积累、单元平均选小/大恒虚警等,这些算法的并行计算效率对系统的实时性至关重要。 4. **基于高性能计算的雷达信号处理**:为了应对大数据量和高实时性的需求,现代雷达信号处理转向...

    基于云计算的数据挖掘技术分析.pdf

    数据挖掘是指在大量不完全、随机、模糊、有噪声的数据中,通过算法和统计模型提取出潜在的、有价值的信息的过程。这一过程的目标是发现数据中的未知关系,尤其是跨不同数据库的数据关系。数据挖掘经常用于商业智能、...

Global site tag (gtag.js) - Google Analytics