作者 | gongyouliu
编辑 | auroral-L
全文共9020字,预计阅读时间60分钟。
大家好,我是强哥。一个热爱暴走、读书、写作的人!
本章目录
一、推荐系统简介
1. 什么是推荐系统?
2. 主流的4类推荐系统产品形态
1)个性化猜你喜欢
2)关联推荐
3)信息流推荐
4)排行榜推荐
二、推荐系统架构下的特征工程
三、推荐系统中特征的维度
1. 用户维度的特征
2. 物品维度的特征
3. 用户行为特征
4. 场景化特征
5. 交叉特征
四、推荐算法与特征工程
1. 个性化猜你喜欢下的样本与特征
2. 关联推荐下的样本与特征
五、推荐系统特征工程面临的挑战
1. 异构的数据
2. 实时推荐
3. 复杂场景下的推荐
4. 用户隐私与信息安全
六、推荐系统特征工程的未来发展
总结
我们在第一章中讲到,在机器学习任务中,我们需要事先通过特征工程将原始数据转化为机器学习可以直接使用的数据格式(一般是数值向量的形式),然后才能进行机器学习模型的训练、推断。
推荐系统作为机器学习的一个偏应用的子领域,当然也需要进行特征工程相关的工作。在推荐系统的业务流程中,特征工程所起的作用也是类似的,我们需要经过特征工程将推荐系统依赖的数据转化为可以被推荐算法直接使用的特征,然后进行模型训练、构建、评估、推断,具体流程见下面图1。
文章图片
图1:特征工程在机器学习建模中所处的阶段
推荐系统作为机器学习应用子领域,有自身的特点。因此,推荐系统的特征工程工作有具体而特殊方法和思路。这一章我们就来讲解推荐系统中的特征工程相关的整体框架和基本概念,希望读者可以对推荐系统中的特征工程有一个比较清晰的了解。我们在第三、第四篇会从特征工程的具体实施原理、方法以及具体的行业应用案例等多个维度全方位地讲解推荐系统特征工程方面的知识。
第一章我们已经对特征工程的一些基础知识做了简单介绍,本章我们讲解与推荐系统相关的特征工程方面的其他知识点,也是为后续章节详细的介绍提供一些基础的准备。具体来说,本章我们会从推荐系统简介、推荐系统架构下的特征工程、推荐系统中特征的维度、推荐算法与特征工程、推荐系统特征工程面临的挑战、推荐系统特征工程的未来发展等6个方面来讲解,下面我们先简单介绍一下推荐系统,让没有经验的读者可以大致了解什么是推荐系统以及推荐系统主流的几种产品形态。
一、推荐系统简介
相信大家经常用淘宝、抖音、微信等日常生活中比较流行的APP,应该大致也体验过推荐系统带给我们的便利,对推荐大家多多少少是知道一些的,并不陌生。因此,这一节我们就简单介绍一下推荐系统,让读者有一个更整体、更直观的认知。这里我们只介绍什么是推荐系统以及主流的4类推荐产品形态。
1. 什么是推荐系统?
推荐系统是机器学习中的一个偏业务应用的子领域,它通过利用用户、物品、用户行为等数据,构建一个算法模型,来预测用户对未知物品(这里的未知物品是指用户没有操作行为的物品,并不是代表用户不认识不知道这个物品)的兴趣偏好(是否点击、是否购买等)。
常用的推荐算法模型有两类:一类是基于内容的推荐,一类是协同过滤推荐。基于内容的推荐是基于用户相关数据、物品相关数据、该用户过去的操作行为(不依赖其他用户的行为),挖掘出用户的兴趣偏好进而为用户推荐他可能感兴趣的物品。基于协同过滤的推荐算法主要是利用所有的用户操作行为,挖掘出用户之间或者物品之间的内在关联关系,基于该关联关系将物品推荐给用户(比如挖掘出相似的用户,将相似用户喜欢的物品推荐给某个对该物品没有操作行为的用户)。
当前主流的手机APP(如微信、淘宝、抖音、美团等)都将推荐系统作为核心功能,他们通过推荐系统来提升用户体验,提高资源匹配效率,最终创造商业价值。下面对推荐系统的主流产品形态做一个说明,让大家更直观地了解推荐系统的应用。
2. 主流的4类推荐系统产品形态
推荐系统最主要的四种产品形态是个性化猜你喜欢、关联推荐、信息流推荐、排行旁推荐。下面分别介绍。
1)个性化猜你喜欢
个性化猜你喜欢就是为某个用户推荐他感兴趣的物品的一种推荐形态,我们通常所说的推荐系统一般指的就是这种产品形态。下面图2是电视猫上电影频道的猜你喜欢,这个产品形态为每个用户推荐他感兴趣的电影。
文章图片
图2:电视猫电影频道的猜你喜欢
2)关联推荐
关联推荐就是将跟某个物品相关的物品作为推荐结果展示给用户,当用户在浏览该物品的详情页时,为用户推荐相关或者相似的其他物品,提升用户体验,增加物品的曝光和转化。关联推荐可以以两种方式实现:一种是非个性化的,即所有用户在同一个物品的详情页看到的关联推荐是一样的;另一种是个性化的,也就是每个用户在同一个物品的详情页中看到的关联推荐是不一样的,关联的是跟该用户兴趣匹配的物品。这种个性化的实现在技术要求及算法难度上会更高一些,我们在本书讲到的关联推荐都是指非个性化的关联推荐。
文章图片
图3:电视猫视频的关联推荐
3)信息流推荐
信息流推荐是今日头条最先独创的一种推荐产品形态,它也是一种个性化的推荐算法,只不过是根据用户的实时反馈及时调整用户的推荐结果,给用户所见即所得的体验。信息流推荐可以大大提升物品的曝光频率,提升用户体验,更具有商业价值。下面图4是电视猫音乐MV的信息流推荐,由于是在智能电视场景,操作使用遥控器,这个产品是通过左右滑动来更新的,跟手机上的触屏上下滑动不一样。
文章图片
图4:电视猫音乐MV信息流推荐
4)排行旁推荐
排行榜推荐是将平台上比较热门(通过用户操作行为来计算是否热门)的物品展示给用户,一般每个人展示的物品是一样的,它是一种非个性化的推荐形式。因为人作为一个群体是有共性的,大多数人喜欢的你喜欢的概率也很大,同时人是有从众心理的,大家喜欢的,你也可能喜欢。排行榜推荐是符合人类自身规律的,因此效果是很不错的。排行榜推荐也可以作为个性化推荐的冷启动方案。一般排行榜推荐利用用户行为数据进行统计就可以获得,不需要复杂的算法模型。下面图5是微鲸电视上的排行榜推荐,有最新榜、最热榜、明星榜、收藏榜等4类榜单。
文章图片
图5:微鲸电视上的排行榜推荐
这里只讲解这4个主要的推荐产品形态,其他更多的产品形态可以从这几个进行延伸和拓展。我们对推荐系统就介绍到这里了,如果想深入学习推荐系统的读者,可以购买我之前出版的专著《构建企业级推荐系统:算法、工程实现与案例分析》。下面我们讲解一下企业级推荐系统架构与特征工程之间的关系。
二、推荐系统架构下的特征工程
由于本书是一本企业级推荐系统的入门读物。我们讲解的推荐系统架构也是按照当前主流的企业级推荐系统架构来讲解的。在企业级推荐系统中,一般推荐过程采用pipeline架构,完整的推荐算法核心流程可以分解为召回、排序、业务调控这三个阶段(有的公司还将排序分为粗排和精排,我们这里统一为排序),具体流程可以参考下面图6。
文章图片
图6:企业级推荐系统pipeline架构
下面我们对这3个阶段涉及到的具体工作及与特征工程相关的事项进行说明,让读者从整体上对推荐中的特征工程有一个初步了解。
召回阶段一般是采用不同的方法和策略(可以是机器学习算法,也可以是人工规则或者策略)将用户可能喜欢的物品筛选出来。不同的方法选择物品的维度及侧重点不一样,这样多种召回方法可以更全面地覆盖用户可能喜欢的物品的范围,避免漏选用户喜欢的。下面图7给出了一组可行的召回策略。
文章图片
图7:企业级推荐系统召回策略
从上面图中大致可以知道,有些召回是基于一些规则和策略的(比如基于地理位置的召回、基于新热的召回),这就不需要复杂的算法,基本只需要进行选择过滤就够了,因此就不需要特征工程。有些复杂的召回算法,比如矩阵分解、深度学习、LDA等是需要进行特征工程的。
每一个召回算法会获得一个推荐物品的候选集,排序阶段是对所有的召回候选集进行重新打分,获得所有待推荐物品的最终排序。一般来说,排序阶段可以用一个统一的模型对候选集进行打分,这个模型可以是简单的模型(如logistic回归、分解机、树模型等)也可以是复杂的深度学习模型,不管怎样都是需要构建特征的。
在排序之后,我们还需要基于具体的业务规则对排序后的结果进行微调,这个过程一般是基于业务上或者运营中的具体活动或者场景进行的,这个过程一般是基于人工策略的,一般不需要进行特征工程。
因此,在推荐系统召回和排序中都是需要进行特征工程的。有了上面的介绍,下面我们来说说在推荐系统中可以从哪些维度去构建特征。
三、推荐系统中特征的维度
一般来说,在推荐系统中,我们至少可以收集到3个维度的数据,用户维度的,物品维度的,用户行为维度的,因此这3个维度都可以构建相关的特征。另外,推荐系统是一类偏业务的应用,推荐服务一般是在具体的场景中进行的(比如推荐餐厅,在家庭场景中做视频推荐等),因此场景化相关的特征也是非常重要的。最后,前面讲到的4个维度的特征还可以进行交叉,因此我们可以从如下5个维度来构建推荐系统的特征。
1. 用户维度的特征
用户相关的信息对推荐算法是非常关键的,用户的年龄、性别、地域、学历、工作、收入等信息关系到推荐的精准度,这些相关信息都可以构建成特征供推荐算法模型使用,我们会在第8章详尽介绍用户维度的特征的提取方法。
由于行业限制或者隐私关系,不是所有用户信息都是可以收集到的,有些敏感信息也需要谨慎对待。一些支付场景是可以收集到用户的身份信息等比较详细的信息的,而一些不需要录入用户核心信息就可以使用的APP(比如新闻资讯、短视频等)可能获得的信息是有限的。
如果某个公司有多个产品,那么在一个产品中获得的用户信息是可以迁移到另一个产品使用的,比如盒马鲜生在刚开始做推荐时,是可以使用淘宝上的用户信息的,因为绝大多数盒马的用户也是淘宝的用户,而他们又都是阿里旗下的公司,信息是可以共享使用的。
在家庭场景中,由于家里有多个人,我们不知道在电视机前面看电视的人是谁,所以怎么挖掘用户维度的信息也是非常有挑战的。
2. 物品维度的特征
推荐的物品也是包含很多信息的,比如商品的价格、产地、品类、颜色、大小等等,这些维度的信息都可以作为模型的特征。物品维度的特征对于推荐效果是非常重要的。
不同的产品获取物品维度特征的难易程度是不一样的。在长视频领域,一般会有结构化的视频metadata信息,物品维度的特征比较完整。而在新闻资讯领域,由于内容一般是UGC的,没有完整的物品维度信息,需要我们从新闻文本中取提取相关信息构建特征。
物品相关的信息一般有文本、音频、图片、视频等几大类,针对不同类别的数据构建特征的方式也是不一样的,我们会在第9章会详细介绍不同类别物品构建特征的方法,这里不赘述。
3. 用户行为特征
用户在产品上的操作行为(比如点击、购买、播放、收藏、转发、点赞等)代表了用户强烈的兴趣偏好。用户行为数据是最容易获取的数据,也是数据量最多的数据,因此在构建推荐系统特征中至关重要。
行为特征可以从多个维度构建。可以从单个用户维度构建,如用户最近一次操作时间、用户最近一次操作的物品、用户平均一周登录次数、用户平均单次使用时长、用户客单价等;可以从群体维度构建,比如平均停留时长、平均客单价等;也可以基于行为进行embedding表示等等。具体怎么构建行为特征我们在第10章详细讲解,这里不细说。
4. 场景化特征
推荐系统是一个偏业务的应用领域,具体的应用场景对推荐算法是非常重要的, 也直接影响算法的具体部署和实施。因此与场景相关的特征对推荐系统是很关键的,甚至是决定性的。场景特征主要有地理位置、时间(早中晚、周末周中、是否是节假日、季节等)、上下文、产品上的路径阶段、用户使用的软硬件相关的信息(比如手机品牌、价位、系统版本等)、甚至用户操作习惯(按键的轻重)、用户的心情、天气等都可以是场景化的特征。
这里举几个例子来说明一下场景化特征的重要性。比如在外卖场景,用户当前的位置是决定性的,这涉及到餐厅的选择、配送路径等等。在家庭互联网场景,时间是非常重要的,白天晚上在家看电视的用户是不一样的(白天可能是老人,晚上是下班的年轻父母)。场景化特征的构建方法我们在第11章详细介绍。
5. 交叉特征
不同特征(上面4类特征内部之间或跨类别)之间可以通过笛卡尔积(或者笛卡尔积的一个子集)生成新的特征,通过特征交叉有时可以捕捉细致的信息,对模型预测起到很重要的作用。这里举个例子,比如用用户地域与视频语言做交叉,大家肯定知道广东人一般更喜欢看粤语剧,那么这个交叉特征对预测粤语视频的点击是非常有帮助的。类别交叉一般需要对业务有较好的理解,需要足够多的领域知识,才可以构建好的交叉特征。我们会在第12章详细介绍交叉特征相关的知识。
上面讲完了5个维度的特征,读者应该也知道构建推荐系统特征的具体思考方向了,我们会在第三篇中详细介绍各个维度怎么去构建特征。下面我们来讲解一下针对主流的推荐产品形态,我们是怎么确定样本进而构建上述五类特征的。
四、推荐算法与特征工程
推荐算法是一个机器学习问题,因而也是一个数学问题。我们可以用一个简单的数学公式来定义推荐问题:
文章图片
,这里 F 是我们要学习的模型,
文章图片
是模型的参数(包括超参数),S 是样本,f 是样本到模型特征的映射,这个过程可以看作特征工程的过程,
文章图片
就是样本S对应的特征,记为:
文章图片
,这里
文章图片
是 k 个特征。y 是最终的预测值,一般可以是一个实数值,可以理解为预测评分或者用户点击、喜欢的概率(具体怎么理解,需要根据选择的模型而定)。
有了上面的简单定义,下面我们分别从个性化猜你喜欢和关联推荐来说明样本选择与特征构建之间的关系。这两类推荐算法也是业界最重要的两种推荐算法,当前比较主流的信息流推荐也是个性化推荐在实时场景下的特例,思考的思路也是一样的,这里不赘述。排行榜推荐只需要用计数统计就可以获得,也不需要复杂的模型,这里也不讲。
1. 个性化猜你喜欢下的样本与特征
我们在第一节简单介绍了个性化猜你喜欢。一般来说,个性化猜你喜欢的样本是“用户物品对”,也即
文章图片
,这里 U 是用户, T 是物品。那么样本集是所有这些用户 U 对物品 T 有操作行为的“用户物品对”构成的集合,即
文章图片
。
在选择训练样本时,存在两种情况可能影响模型效果。一是某些物品是热门物品,那么包含这个物品的“用户物品对”非常多,导致模型向热门物品偏移;二是某些用户非常活跃,行为非常多,而某些用户操作很稀少,这会导致行为多的用户“控制”了整个模型。这可以通过对热门物品或者行为多的用户进行下采样处理。
有了样本集,剩下的就是需要考虑怎么从单个样本中构建特征,由于每一个样本包含用户和物品,我们可以从上一节中讲解的5个维度(即用户维度、物品维度、用户行为维度、场景化、交叉)来构建特征,将这5个维度的特征进行拼接,就获得了样本
文章图片
的特征
文章图片
了,这个过程就是特征工程的过程。下面图8以可视化的形式展示了每个样本按照5个维度的特征拼接获得的训练样本。
文章图片
图8:个性化猜你喜欢样本的特征构建
有了训练样本,我们就可以选择合适的模型进行训练,当模型训练好后,我们就可以针对未知“用户物品对”
文章图片
,采用跟训练集中样本一样的方法构建这个待预测的“用户物品对”的特征,然后灌入训练好的模型获得最终的预测结果。
当某个用户没有行为操作的所有物品都采用上面的方式进行预测后,那么根据预测评分进行降序排列,取TopN就可以作为给该用户的推荐了(如果是召回算法,那么就获得了N个召回结果,如果是排序算法,那么选取的TopN就是排序好后的推荐结果)。
2. 关联推荐下的样本与特征
针对关联推荐,我们这里只讲非个性化的关联推荐场景(个性化的跟上面猜你喜欢是一样的),这时所有用户在某个物品上的关联推荐是一样的。那么怎么选择训练样本呢?
如果你们的产品形态已经有了关联推荐,那么用户在关联推荐下的点击行为就可以当成一个样本,比如用户 U 在物品
文章图片
的关联推荐下点击了
文章图片
,那么三元组
文章图片
就可以作为一个样本。如果你的产品没有关联推荐,那么我们可以将用户在相近时间浏览的两个商品(比如用户搜索手机这个关键词,在搜索结果中同时浏览了iPhone13和华为P50)可以构成一个样本对。之所以选择时间相近的,是考虑到用户在相近时间点兴趣点是一致的,这个一致性刚好是关联推荐需要挖掘出的信息。
这里有一点需要提的是,虽然样本中存在用户(因为样本是
文章图片
三元组),但是我们这里讲的是非个性化的关联推荐,所以特征中不应该包含用户特征,同时行为特征中也不是单个用户的特征,而是群体相关的特征(比如
文章图片
的平均播放时长等),由于是两个物品
文章图片
的关联推荐,那么特征中是可以包含两个物品的特征的。读者可以参见下面图9直观地看看具体的特征情况。
文章图片
图9:关联推荐样本的特征构建
构建好了模型的特征,那么就可以选择具体模型再利用测试数据训练模型,当模型训练好后,可以将任何两个物品对
文章图片
的特征灌入模型获得它们之间的关联度。有了任何两个物品的关联度。我们就可以将与
文章图片
最相关的N个物品按照相似度降序排列作为
文章图片
的关联推荐。
到此为止,我们讲完了个性化猜你喜欢、关联推荐这两个产品形态中怎么去构建样本和特征,以及模型训练和推断的过程。上面讲到的模型构建的思路主要用于排序阶段,召回阶段当然也可以利用这类采用多维度复杂特征的模型,但召回阶段可以有更多的选择(可以选择简单的模型或者策略、规则来召回)。
本节我们没有具体地讲解推荐系统中特征的构建方法,这一块内容留到第三篇中进行讲解,第四篇中我们还会给出行业上的具体应用案例。下面一节我们来聊聊推荐系统特征工程面临的挑战。
五、推荐系统特征工程面临的挑战
前面讲到我们可以从五个维度来为推荐系统构建特征,我们有了大致的思路,但是在真实业务场景中构建推荐系统特征不是一件容易的事情,会面临很多问题和挑战,下面我们就来简要列举可能存在的挑战,让读者有所了解。具体来说,针对企业级推荐系统,特征工程会面临如下4类挑战。
1. 异构的数据
我们在第一章中讲到,推荐系统依赖的数据是异构的 ,既有结构化的数据,又有非结构化的文本、图片、音频、视频数据,数据种类繁多,形式多样。对于不同的数据源,抽提特征的技术手段是不一样的 ,文本数据可以用IF-IDF、LDA、Word2Vec等方法来抽提特征,而图片数据可以提取SIFT特征等。对于视频,还需要进行抽帧等操作,处理起来也很复杂。
真实业务场景中,数据的质量也是参差不齐的,特别是UGC内容,数据中信息不完整、不规范,存在噪音(比如咸鱼二手交易上的图片文字可能就比较乱),在进行特征工程之前还需要进行大量的数据预处理工作。
2. 实时推荐
在信息流等实时推荐场景,需要针对用户的最近行为构建实时特征,然后灌入模型获得实时的推荐,让用户可以即可感受到推荐系统带来的变化。在实时推荐场景下,对数据的预处理、特征的抽提是要在毫秒级完成的,这对特征抽提的复杂度、及时响应度等是有极高要求的,同时对推荐算法也是有要求的。
3. 复杂场景下的推荐
对于比较依赖场景信息的推荐系统,比如外卖推荐,强依赖位置和时间,就需要很好地整合特定场景的特征到模型中。
目前的推荐系统趋向于推荐跨不同类别的物品(比如美团既可以推荐外卖,也可以推荐服务等,参见下面图10),推荐的标的物跨多个不同品类,构建跨品类的特征,并将他们融合到一个算法模型中,是极具挑战的。
文章图片
图10:美团跨领域物品推荐
4. 用户隐私与信息安全
【算法|「推荐系统中的特征工程」02(推荐系统与特征工程)】随着个人隐私保护法的出台,个人的信息保护现在变得越来越重要,未来用户是可以主动关闭APP对自己数据收集权限的,这意味着未来我们更难收集到用户的数据了,那么在数据不足或者缺失的情况下怎么去构建模型特征也是一个比较大的挑战。
六、推荐系统特征工程的未来发展
目前移动互联网的发展已经见顶,未来在移动互联网上的产品竞争的是效率和精细化运营能力,而推荐系统作为一种全自动的数据运营工具,重要性会越来越大。推荐系统会往实时化、融合化(即融合推荐多品类物品)的方向发展。这就要求实时获得算法需要的特征,需要获取跨品类、跨领域的特征来构建推荐模型,这是未来的挑战也是机遇。
在具体的推荐算法上,未来也会趋向于利用复杂的模型(比如深度学习、深度强化学习等),复杂模型一般可以利用更多的特征,也大量使用嵌入特征,因此组合多维度高维特征,通过嵌入方法构建特征会变得越来越重要。
目前有很多算法是可以利用多模态技术进行端到端的训练和预测的,对于推荐系统肯定也有这个趋势,那么这个趋势也会影响推荐系统的特征构建和特征工程。
未来物品相关的数据也会以视频类为主(目前淘宝上的商品详情页介绍基本视频化了),同时随着线上与线下的打通,未来也可以收集到更多维度的数据,这对我们能够获取到的特征的形式、范围、难易度都有比较大的影响。
随着5G技术、芯片技术及物联网的发展,边缘计算兴起了,未来的推荐算法可能是部署在边缘设备上的,通过一个通用的模型结合边缘设备上的数据来构建一个适配单个用户的个性化的推荐引擎,这对于特征的构建、特征的共享、特征的私有化等都提出了新的挑战。
在个人隐私保护法下,未来企业更难收集到用户数据,针对更少的个人数据,同时在满足隐私保护下怎么去构建特征、构建算法模型思路也会不一样,目前比较火的联邦学习可能会在推荐系统中得到更广泛的应用。
特征工程是个比较费时费力的工作,人们当然希望这个过程可以利用算法自动化完成,自动化特征工程也是AutoML研究中非常重要的一个子方向,在AutoML中,自动特征工程的目的是自动地发掘并构造相关的特征,使得模型有更好的表现。除此之外,还包含一些特定的特征增强方法,例如特征选择、特征降维、特征生成、以及特征编码等。这些步骤的自动化目前都处于尝试和探索阶段,没有很完美的解决方案,这个方向也是未来的重点研究实践领域之一。
总结
本章我们讲解了推荐系统与特征工程相关的知识点。推荐系统作为机器学习中一个比较有业务价值的子领域,构建特征工程的思路和方法也是有其自身特点的。
我们先回顾了推荐系统的基础知识,讲解了在工业级推荐系统架构下,召回和排序过程中都需要进行特征工程相关的工作。推荐系统中的特征工程可以从用户、物品、行为、场景、交叉等5个维度来进行,后面我们针对个性化猜你喜欢和关联推荐讲解了怎么去构建模型的样本和特征。有了这些基础知识,我们大致知道了在推荐系统中怎么去构建模型需要的特征。最后我们简单描述了推荐系统中特征工程可能面临的挑战及未来的发展方向。
希望这一章能够给读者提供一个宏观的视角,在这个大的框架下,我们会在后面的章节中讲解每类特征(离散特征、数值特征、文本特征、图片特征等)怎么构建以及在推荐系统场景下,我们怎么从用户、物品、行为、场景、交叉等5个维度构建特征。
我出版的畅销书《构建企业级推荐系统:算法、工程实现与案例分析》,可以跟这个系列文章一起阅读,大家有需要可以点击下面链接购买。
文章图片
推荐阅读
- 计算机组成原理学习------第四章数据运算
- #|ClickHouse基础
- milvus|PaddleRec与Milvus深度结合,手把手带你体验工业级推荐系统召回速度
- 搞笑整活系列|Python基础-“百钱百鸡”入门逻辑题(刚开始的建议藏起来)
- 蓝桥杯|蓝桥python——玩具蛇
- 蓝桥杯|蓝桥python——方格分割【2017 第四题】
- CTF|2021DASCTF八月挑战赛Writeup
- 蓝桥杯|蓝桥python—— 剪邮票【2016 第七题】
- 备战蓝桥杯|【蓝桥python冲刺17天】——如何轻松拿捏必考数论题((第三弹))