基于Spark的大数据精准营销中搜狗搜索引擎的用户画像挖掘

重磅专栏推荐:
《大模型AIGC》
《课程大纲》
《知识星球》

本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经验分享,旨在帮助读者更好地理解和应用这些领域的最新进展

转载请注明:转载 from http://blog.csdn.net/u011239443/article/details/53735609
from CCF举办的“大数据精准营销中搜狗用户画像挖掘”竞赛

1. 选题背景与意义

1.1 用户画像与精准营销

这里写图片描述
“用户画像”是近几年诞生的名词。很多营销项目或很多广告主,在打算投放广告前,都要求媒体提供其用户画像。在以前,大多媒体会针对自身用户做一个分类,但是有了大数据后,企业及消费者行为带来一系列改变与重塑,通过用户画像可以更加拟人化的描述用户特点。
用户画像,即用户信息标签化,就是企业通过收集与分析消费者社会属性、生活习惯、消费行为等主要信息的数据之后,完美地抽象出一个用户的商业全貌,可以看作是企业应用大数据技术的基本方式。用户画像为企业提供了足够的信息基础,能够帮助企业快速找到精准用户群体以及用户需求等更为广泛的反馈信息。
消费方式的改变促使用户迫切希望尽快获取自己想要了解的信息,所以说,基于用户画像上的精准营销不管对企业还是对用户来说,都是有需求的,这会给双方交易带来极大便捷,也为双方平等沟通搭建了一个畅通平台。

1.2 搜索引擎下用户画像的挑战

这里写图片描述
在搜索引擎下,由于搜索引擎本身使用方式的特殊性、用户的流动性、查询的实时性等,带来了与企业传统的对用户信息进行收集与分析有着巨大的不同、更加艰巨的挑战。
例如,我们实时获取到的是用户的查询语句,而由于用户的流动性,并不能直接获取到如年龄、性别、学历等用户的标签信息。这么一来,也就无法根据用户属性对用户进行分群处理,而后再通过推荐系统进行产品上的优化

1.3 本文内容概要

本文内容概要如下:

  • 第1章:简介用户画像与搜索引擎下用户画像的精准营销的挑战。
  • 第2章:说明实验集群、数据与课题研究目标。
  • 第3章:介绍使用分词工具对用户的搜索词列进行分词,以及相关的优化方案。
  • 第4章:介绍在分词的基础上,对文本进行特征的抽取与转换,以及相关的优化方案。
  • 第5章:介绍在原始特征向量上,进行聚类与降维。
  • 第6章:介绍实验中试验过各分类模型
  • 第7章:介绍模型参数调优
  • 第8章:总结本课题研究中不足与展望后续的优化方案
  • 第9章:参考文献

2. 课题实验准备

2.1 Spark集群

节点 备注
cdh01 8核,32G内存,角色:Spark Master,HDFS NameNode,Spark Worker,HDFS DataNode
cdh02 8核,12G内存,角色:Spark Worker,HDFS DataNode
cdh03 8核,12G内存,角色:Spark Worker,HDFS DataNode
cdh04 8核,12G内存,角色:Spark Worker,HDFS DataNode

2.2 数据集

数据文件 备注
Train.csv 带标注的训练集
Test.csv 测试集

2.3 数据介绍

本数据来源于搜狗搜索数据,ID经过加密,训练集中人口属性数据存在部分未知的情况(需要解决方案能够考虑数据缺失对算法性能的影响)。数据所有字段如下表所示:

字段 说明
ID 加密后的ID
age 0:未知年龄; 1:0-18岁; 2:19-23岁; 3:24-30岁; 4:31-40岁; 5:41-50岁; 6: 51-999岁
Gender 0:未知1:男性2:女性
Education 0:未知学历; 1:博士; 2:硕士; 3:大学生; 4:高中; 5:初中; 6:小学
Query List 搜索词列表

2.4 数据示例

对于train.csv中的数据记录:

00627779E16E7C09B975B2CE13C088CB 4 2 0 钢琴曲欣赏100首 一个月的宝宝眼睫毛那么是黄色 宝宝右眼有眼屎 小儿抽搐怎么办 剖腹产后刀口上有线头 属羊和属鸡的配吗

2.5 课题任务描述

根据提供的用户历史一个月的查询词与用户的人口属性标签(包括性别、年龄、学历)做为训练数据,通过机器学习、数据挖掘技术构建分类算法来对新增用户的人口属性进行判定。

3. 查询词分词

3.1 NLPIR

这里写图片描述
NLPIR汉语分词系统(又名ICTCLAS2013),主要功能包括中文分词;词性标注;命名实体识别;用户词典功能;支持GBK编码、UTF8编码、BIG5编码。新增微博分词、新词发现与关键词提取;张华平博士先后倾力打造十余年,内核升级10次。
全球用户突破20万,先后获得了2010年钱伟长中文信息处理科学技术奖一等奖,2003年国际SIGHAN分词大赛综合第一名,2002年国内973评测综合第一名。
我们传入每个用户的搜索词列,表经过NLPIR分词工具得到的分词。之后,我们做个进一步的优化策略:

3.1.1 去停用词

我们根据分词后词语所带的词性,对一些特征代表性不够强的词语进行过滤:

	for (int i = 0; i < sbtmp.length(); ++i) {
   
		char cc = sbtmp.charAt(i);
		if (cc == ' ') {
   
			sbtmp.deleteCharAt(i);
			--i;
		} else if (cc == '/') {
   

			// 去词条件
			Boolean isdel =
					// 1. 去标点
					(i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'w')
							// 2. 疑问词
							|| (i + 2 < sbtmp.length() && sbtmp.charAt(i + 1) == 'r'
									&& sbtmp.charAt(i + 2) == 'y')
							// 3. 数字
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'm')
							// 4. 连词
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'c')
							// 5. 副词
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'd')
							// 6. 叹词
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'e')
							// 7. 拟声词
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'o')
							// 8. 介词
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'p')
							// 9. 量词
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'q')
							// 10. 助词
							|| (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) == 'u')
							// 11. 纯动词
							|| (i + 2 < sbtmp.length() && sbtmp.charAt(i + 1) == 'v'
									&& sbtmp.charAt(i + 2) == ' ');

			// 去词
			if (sbtmp.charAt(i + 1) != 'n' && sbtmp.charAt(i + 1) != 'i' && sbtmp.charAt(i + 1) != 'j'
					&& sbtmp.charAt(i + 1) != 'h'
					&& !(i + 2 < sbtmp.length() && sbtmp.charAt(i + 2) == 'n')) {
   
				while (i + 1 < sbtmp.length() && sbtmp.charAt(i + 1) != ' ') {
   
					sbtmp.deleteCharAt(i + 1);
				}
				while (i >= 0 && sbtmp.charAt(i) != ',') {
   
					sbtmp.deleteCharAt(i);
					--i;
				}
			}
			// 若无需去词,把‘/’转为‘,’,并去除随后的词性标志
			else {
   
				sbtmp.setCharAt(i, ',');
				while (sbtmp.charAt(i + 1) != ' ') {
   
					sbtmp.deleteCharAt(i + 1);
				}
			}

		}
	}
	for (int i = 1; i < sbtmp.length() - 1; ++i) {
   
		if (sbtmp.charAt(i) == ',' && (sbtmp.charAt(i - 1) == ',' || sbtmp.charAt(i + 1) == ',')) {
   
			sbtmp.deleteCharAt(i);
			--i;
		}
		// 去中间单个字
		else if (sbtmp.charAt(i - 1) == ',' && sbtmp.charAt(i + 1) == ',') {
   
			sbtmp.deleteCharAt(i);
			sbtmp.deleteCharAt(i);
			--i;
		}
		// 去首个单个字
		else if (sbtmp.charAt(i) == ',' && i == 1) {
   
			sbtmp.deleteCharAt(i - 1);
			sbtmp.deleteCharAt(i - 1);
			--i;
		}
	}

3.1.2 提取关键词

分词并不能很好的将常用的短语提取出来,如词语“用户画像”,使用分词工具更倾向于将其分成“用户”和“画像”,而失去了词语本身的含义。NLPIR还提供了提取一段话的关键词的功能,我们可以使用它:

int numofIm = 1000;
String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, numofIm, false);	

经过分词后,平均每位用户搜索词列所得到的词量在600个左右,这里我们设置提取1000个关键词,但实际上一个用户的关键词提取的数量在60~200左右。由于关键词的很强的特征性,并且提取出的数量又少,若后续我们直接使用如词语的词频作为用户的特征属性进行分类的话,很可能各个用户特征属性有巨大的差异,即用户之间拥有的相同关键词过少。

3.1.3 混合提取

在用户搜索词列分词基础上&

  • 11
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论
【资源说明】 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 程序开发软件: Pycharm + Python3.7 + Django网站 + pyspark大数据分析 + Hadoop平台 数据库: Mysql5.6,Redis 本系统是以Django作为基础框架,采用MTV模式,数据库使用MySQL和Redis,以从豆瓣平台爬取的电影数据作为基础数据源,主要基于用户的基本信息和使用操作记录等行为信息来开发用户标签,并使用Hadoop、Spark大数据组件进行分析和处理的推荐系统。管理系统使用的是Django自带的管理系统,并使用simpleui进行了美化。 系统功能: 用户首次访问该网站为访客身份,访客用户拥有登录、注册、忘记密码、电影查询和电影默认推荐功能。 普通用户具有电影搜索查询,添加删除电影评论,个人信息管理、密码修改、邮箱修改、电影收藏管理、电影评分和用户注销等功能模块。系统会记录用户的每一次操作,会根据用户的操作对用户进行打标签,修改标签权重,形成用户画像,然后根据用户标签进行精准电影推送。 管理员登录后可以对所有模型数据进行查找、修改和删除等操作。 启动命令: python manage.py runserver 8001 网站首页端口地址: http://127.0.0.1:8001/ 用户账号密码:Zero 123456

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小爷毛毛(卓寿杰)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值