DreamBlooms/HansPub-15000-to-45000 huggingface dataset:
system: [SYSTEM]

user: 3. EBC涂层面临的挑战 新一代高推重比航空发动机的发展，必然导致航空发动机中燃气温度的提高，相应造成高压涡轮热端部件表面温度的提高。高推重比航空发动机热端部件表面温度将达到1400℃以上，这远远超过了现有高温合金材料所能承受的温度范围。所以，长期使用温度最高达到1650℃的SiC f /SiC复合材料成为可以取代高温合金的最有潜力的热结构材料。 但在发动机工作环境下，高温、腐蚀介质、燃气冲刷以及复杂应力环境等多因素交互作用使得SiC f /SiC复合材料表面稳定性急剧恶化，又成为制约其应用于航空发动机热端部件的主要因素之一。环境障涂层(EBC)可以有效解决这一难题，于是EBC就成为SiC f /SiC复合材料应用于高推重比航空发动机热端部件的关键技术。 由于航空发动机的热物理化学和应力环境极为复杂，作用时间长，循环次数多，对材料性能影响复 Table 3 Environmental performance testing platforms established in Europe and Americ 单位 测试平台介绍 美国  加州理工学院建立了高温空气环境的拉伸和压缩性能测试设备，利用高速CCD相机以万幅/秒的速度采集图像，研究材料裂纹的动态扩展过程  美国西南州立大学建立了高温、湿空气环境的蠕变性能测试设备  美国太平洋西北国家实验室建立温度高达1600℃的蠕变/疲劳性能测试设备，但是只能模拟空气和惰性气氛环境 欧洲  Hambury-Harburg技术大学利用摄像装置对CMC的高温定性研究，实时观测裂纹扩展，采集和处理数据  德国弗朗霍夫陶瓷技术与科学研究所(IKTS)建立了评价EBC受高速(100 m/s)、高温(1450℃)水蒸气冲刷、腐蚀的模拟装置。 表3. 欧美建立的其他环境性能测试平台 图7. 西工大航空发动机等效环境模拟平台和燃气风洞环境模拟平台 [ 27 ] 杂且缓慢，在SiC f /SiC复合材料表面施加可靠的EBC涂层的主要目的是抵抗水氧腐蚀和CMAS等融盐腐蚀等。 然而，对用于CMC材料的环境障涂层而言，国内的技术成熟度和制造成熟度还不够高，涂层材料和涂层制备工艺技术尚待探索研究和优化完善。为此，对于环境障涂层(EBC)而言，必须突破诸多急需解决的技术问题，如：1) 新型环境障涂层材料的成分结构设计；2) 新型环境障涂层材料的制备工艺研究；3) 新型环境障涂层材料的组织结构性能表征；4) 新型环境障涂层的制备和组织结构性能表征。 这里，如何体现出新型？本人认为所谓新型必须超越目前的EBC，或在涂层材料体系上有所超越，或在涂层结构上有所超越。无论如何，设计出多层多组分甚至多尺度结构的EBC涂层并通过选择适宜的涂层工艺得到具有良好致密度、结合强度和均匀性的高性能涂层，满足SiC f /SiC等高温构件对EBC涂层的迫切需求，都具有很大的挑战性。抓住机遇，迎接挑战，创新突破，弯道超车，是时代赋予我们中国科技工作者的使命！
system: [SYSTEM]

user: 摘 要 本文以单出口含障碍物的报告厅为背景，建立了包含不同静态场和疏散策略的小学生群体紧急疏散元胞自动机模型。数值模拟探讨了在不同疏散策略下剩余学生数量、移动学生所占比例及出口流量与时间的关系，并对典型时空动力学特性进行了讨论。结果表明：最大限度地利用桌椅之间的过道，尽可能避免行人在选择最短路径时产生拥挤，将显著提高疏散效率。 关键词 :行人流，小学生群体，静态场，元胞自动机，疏散策略 Copyright © 2018 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
system: [SYSTEM]

user: 1. 引言 近年来，随着社会经济的快速发展，由行人拥堵造成的各种踩踏事故频繁发生，不仅给社会带来巨额的经济损失，而且对人们的生命构成严重威胁，行人的安全疏散问题引起了许多学者的广泛关注。一般情况，行人流疏散模型可以分为宏观模型 [ 1 ] [ 2 ] 和微观模型 [ 3 ] [ 4 ] ，其中微观模型又分为：社会力模型 [ 3 ] [ 4 ] [ 5 ] ，元胞自动机模型 [ 6 ] [ 7 ] [ 8 ] [ 9 ] 以及格子气模型 [ 10 ] [ 11 ] [ 12 ] [ 13 ] 。元胞自动机可以较好地表现行人的自主性、随机性、且便于计算，可以更直观地模拟行人疏散过程，故元胞自动机被广泛应用于模拟行人流和交通流。 小学生群体，作为各类踩踏事故的高发对象，对其进行疏散策略的探讨至关重要。研究发现，对于小学生群体，不仅具有一般成年人紧急疏散时的行为特点，更具有其特有的心理行为特征。首先，小学生由于年龄小，在应对突发事件时，对事件的处理能力普遍低于正常公众，因此在疏散过程中，小学生更偏向于从众行为以寻求稳妥的疏散方式；其次，学生对老师具有较强的依赖性，老师在疏散过程中扮演着非常重要的角色，其正确信息的诱导会直接影响疏散效率，而一旦没有老师引导，疏散效率将急剧下降；再次，小学生活泼好动，相互挤压推搡现象严重。因此，如何在小学生群体心理行为特性的基础上，探索相对较优的疏散策略至关重要。然而现有大多数行人流元胞自动机模型大部分均为改变行为规则来模拟一种场景，使所有行人遵循一套规则来进行更新至所有人离开系统，例如周金旺 [ 14 ] 考虑了行人在疏散过程中的并排成对、前后成对、混合成对的三种方式对疏散的影响；田西柱 [ 15 ] 在元胞自动机模型基础上，提出了一种基于从众心理的元胞自动机模型。少部分研究将系统内的区域进行划分，不同区域有着不同的行为规则，例如岳昊等 [ 16 ] 根据视野范围划分疏散区域，探究在疏散视野受阻的情况下行人的疏散问题；尹雪清 [ 17 ] 考虑出口区域属性的行人疏散模拟研究；李圣男 [ 18 ] 将空间划分为通道、转弯处、缓冲处、瓶颈区，对大型公共场所进行了疏散通道的设置进行了分析及优化。对疏散策略的研究上开展的相对较少，缺少严格的、合理的、具有普遍性的、可量化的模板。本文在考虑小学生推搡挤压特性的基础上，以单出口的报告厅作为背景，在引入“静态场” [ 19 ] 的概念后，将连贯的行人疏散行为分步骤处理，通过对每步的行人疏散规则进行细化，改变不同步骤的元胞更新规则，模拟出不同的疏散策略，进一步探讨疏散策略对疏散的影响。
system: [SYSTEM]

user: 2. 模型 模型建立在一个大小为 M × M 的报告厅，如图1所示，将模型内区域平面划分为有限个大小相等的二维正方形网格，且每个网格等价于一个元胞。考虑小学生群体的挤压行为，图中圆点表示行人，不同的颜色表示不同状态的行人，其中蓝色代表尚未与他人发生挤压的小学生，红色代表已发生挤压的小学生；模型最外侧的黑色边框表示系统边界，即房间墙壁；墙壁所示缺口为房间唯一出口，其宽度为D；图中橙色矩形代表室内桌椅。行人只能从唯一的出口离开房间，且在疏散过程中行人不可与障碍物(包括桌子和围墙)重合。本文为了模拟学生在座位上的紧急疏散，将人群初始位置皆设置在桌与桌之间。 本文采用传统的Moore型邻域，如图2所示。 本文将学生疏散过程中影响疏散的因素收益进行分类：1) 距离收益；2) 墙壁收益；3) 桌椅收益；4) 人与人相互作用收益；5) 静态场收益；6) 疏散策略收益。在单位时间步内，分别计算邻居格点各个因素的收益，将其相加，行人选择总收益值最大的格点进行移动。行人在单位时间步内是静止在原地还是向周围邻居格点进行移动，其关系可用下式(1)表示： A + B + C + D + E + F = 1 L p t = A l p t + B w p t + C d p t + D a p t + E S p t + F g p t       ( p = 1 ， 2 ， ⋯ ， 9 ) L i t = max ( L p t ) (1) 其中l、w、d、a、S、g依次表示距离收益、墙壁收益、桌椅收益、行人相互作用收益、静态场收益及疏散策略收益，A、B、C、D、E、F分别表示各个因素的权重，时间步为t，行人为i，i行人在t时刻的总收益为 L i t 。设行人所在的元胞位置为5，其邻居各元胞位置如图2(a)所示，则t时间步i行人所在位置邻域 图1. 一般单出口报告厅示意图 图2. (a) Moore邻域；(b) 移动收益矩阵 内格点的收益值分别为 L 1 t ， L 2 t ， ⋯ ， L 8 t ， L 9 t ，行人i在此时间步选择收益最大的点进行移动。各因素收益定义如下： 1) 距离收益 因行人在疏散过程中大都遵循“最短时间通过最短距离离开系统”的原则，故设置距离收益，距离收益根据距离公式 l ( x ， y ) = ( x − x 0 ) 2 + ( y − y 0 ) 2 计算，该式为横纵坐标为 ( x ， y ) 的元胞距离出口 ( x 0 ， y 0 ) 距离，反映了出口对行人的吸引力。行人在每一时间步内考虑其邻域各点的距离收益，其中离出口最近的位置距离收益最大。 2) 墙壁收益 考虑到墙壁对小学生在疏散过程中的阻碍主要表现在行人不能穿越或翻越围墙，因此设置了墙壁收益，保证学生只能通过墙壁上的唯一出口离开系统。在行人移动到紧挨墙壁的元胞时，将墙壁所在元胞的收益值负值，因此在计算最后总收益时，墙壁位置元胞总收益会很小，通过这样的规则设置，可模拟出行人不能与墙壁重合和跨越墙壁的情景。 3) 桌椅收益 桌椅与墙壁都属于障碍物，所以桌椅的规则同墙壁基本一致，因此设置桌椅收益，行人在移动过程中不能因为桌椅在离出口最近的直线距离上就跨越桌椅或与桌椅重合。不同处在于墙壁是系统的边界，系统外侧紧挨墙壁的元胞不用计算收益值。 4) 行人相互作用收益 由于人与人之间相互作用对疏散的影响，将空间离散为0.4 × 0.4 m的格点，发生局部拥挤的元胞会对其周围邻域元胞产生影响，具体的表现为局部挤压元胞周围的元胞必须等到局部拥挤现象消除才可进行移动。 5) 静态场收益 静态场不随时间的推移而变化，根据报告厅中各点距出口的距离来进行赋值。将报告厅分为桌椅区(图3中C、G区域)、报告厅前后空地区(图3中D、F区域)，桌椅区中间过道(图3中E区域)、报告厅桌椅两侧(图3中B、H区域)以及出口处(图3中A区域)。其中A区静态场值最大，对行人的吸引能力最大，H区静态场值最小，C区静态场值始终大于G区，D、F两区静态场值相同。 这样，将报告厅区域的静态场分成小的矩阵，在相同的区域内，场强是一致的。本文将静态场设置为两种：一种侧重于让小学生从桌椅中过道和报告厅前后离开系统，如图4(a)；另一种倾向让小学生从桌椅中穿过离开系统，如图4(b)。 图3. 静态场区域划分示意图 图4. 静态场示意图：(a) 静态场1；(b) 静态场2 6) 疏散策略收益 考虑疏散策略的制定对疏散效率的影响，疏散策略根据报告厅障碍物的布局制定。疏散策略1是从始至终都按照式(1)进行行人位置及状态的更新，移动规则同上述一致；疏散策略2则按报告厅行人初始位置一分为二，图3中G区的学生只可单方向向C区一侧移动，出口侧学生按式(1)所指定的规则进行移动。换言之，就是将行人疏散的过程按所在报告厅位置的不同制定不同的移动规则。在选择疏散策略时表现出的收益即为疏散策略收益。 行人位置更新步骤为：①给定区域内行人初始；②确定静态场类型；③确定疏散策略；④计算每一时间步各影响因素收益进行位置更新；⑤重复上述步骤直至行人疏散完毕。
system: [SYSTEM]

user: 3. 模拟结果与讨论 利用上述模型模拟小学生在报告厅内的疏散过程，更新规则如上所示。模型如图1所示，其参数设置为： M = 40 ， D d = 3 ， N = 416 (根据桌子占地面积设定)，权重设置为A = 0.5，B = 0.05，C = 0.05，D = 0.02，E = 0.08，F = 0.3。在数值模拟过程中，初始行人，行人与桌子交替分布，且随着疏散时间的推移，采用随机序列并行的方法按上述规则进行位置更新，在数值模拟中，为了消除随机性对其结果的影响，系统均选取10个样本取其平均值。 首先，研究疏散过程中报告厅剩余小学生数量N和时间步T的关系，如图5所示。其中case1表示在疏散过程中采用静态场1和疏散策略1；case2表示采用静态场1和疏散策略2；case3表示采用静态场2和疏散策略1；case4表示采用静态场2和疏散策略2。可以看出，随着时间步的增加，报告厅内剩余人数逐渐减少，疏散行人离开疏散系统且不会返回系统，不存在疏散过程中锁死现象。疏散的过程大致分为两个阶段：第一个阶段行人快速疏散出系统，系统内人数大幅下降；第二阶段，行人疏散过程变得缓慢，当采用疏散策略2时，由于疏散策略不同，行人倾向于桌子之间过道而非通过距离最短的路径离开系统，疏散策略的不同仅对初始位置位于图3中G区域的学生产生影响，因此在疏散策略2的疏散过程中，经过桌椅区域中间过道时避免了很多不必要的拥堵，疏散策略1的疏散时间长，而疏散策略2的疏散时间大致为疏散效率1的一半，因此疏散策略的改变对疏散有着很大的影响，而在相同的疏散策略下，静态场的不同对疏散的影响不明显。 接下来研究移动行人比例P对疏散效率的影响，定义：“移动行人比例P = 移动的行人数/房间内剩余行人数N”。移动行人比例的大小可以直观反映出疏散过程中行人拥挤堵塞的程度，移动行人比例越大，说明此时间步内移动人数所占房间内剩余人数的比例越大，拥挤程度越低。图6给出了四种情况下P与T的关系图，可以看出，疏散策略不同，但P总体变化趋势一致：疏散开始时，移动行人比例最低，这取决于小学生的初始分布位置，因初始位置导致了桌子之间的学生不能灵活运动，因此开始疏散时大部分的学生都为静止状态；随着时步的增加，桌子之间紧挨过道位置的学生离开课桌，桌子之间通道变得畅通，导致移动行人的比例上升；而第三阶段移动行人疏散比例的下降是因为在疏散过程中，学生在选择最短路径时在共同路径上产生了局部的拥挤，导致了阻塞，移动行人数短时间变少，比例P下降，但采用疏散策略2时第三阶段的效果不明显；第四阶段是由于系统内行人不断减少，拥挤程度下降，因此比例P不断上升，直到最后P达到1，所有人疏散完毕离开系统，P变为0。 最后，研究出口流量与疏散时间的关系，定义“出口流量Q = 上一时间步房间剩余人数 − 当前时间步房间内剩余人数N”。图7所示为case1~4的四种情况，可以看出，疏散初期，出口流量由0开始增 图5. 剩余行人数量N和时间步T关系图 图6. 移动行人比例P与疏散时步T关系图 加，这是因为靠近出口一侧的学生移动到出口位置并离开系统，导致了出口流量Q的增加并开始产生波动；疏散策略1时在出口流量达到顶峰之后开始下降，下降是因远离出口一侧的行人离开系统需要穿过靠近出口一侧的桌椅，因此在大量的学生在穿越桌椅区时会产生混乱导致拥堵，因此出口流量Q下降，而此时疏散策略2时的出口流量一直都维持在较高的区域，直到所有人疏散完毕流量为0；疏散末期，疏散策略1时，由于系统内所剩学生不多，因此在疏散末期出口流量Q在3以内小幅度波动，直至所有人疏散完毕。 图8给出了case1和case2两种情况下的时空演化斑图，可以看出，在演化的初始阶段，系统内的各位置学生均向出口进行移动，并在出口处聚集，由图8中的绿色椭圆可以看出，大部分的局部拥挤发生 图7. 出口流量Q与疏散时间T关系图 图8. 时空演化斑图case1: (a) t = 30， (b) t = 60， (c) t = 90; case2: (d) t = 30， (e) t = 60， (f) t = 90 在靠近门口墙壁的过道和报告厅中间过道。报告厅中间过道是初始位置在图3中G区域学生向出口移动的必经之路，因此此区域的学生在短时间内涌入通道，就会造成局部拥挤，影响小学生疏散整体的效率。区别是，采用疏散策略1时如图8(a)~图8(c)所示，报告厅中间过道的拥挤主要是由于学生左右移动，所有人皆想选择最短路径，导致局部拥挤，但采用疏散策略2时如图8(d)~图8(f)所示，虽然此过道产生局部拥挤，但因为学生不会左右移动，因此不会对左右方向的人产生干涉。在疏散过程中，采用疏散策略2对桌子之间的利用充分，使学生能够在较短的时间内迅速向出口方向移动，并非所有人都通过最短的路径离开系统，但疏散效率是最高的。反观疏散策略1，正是人人都想通过最短的路径，导致学生在选取最佳路径时产生拥堵，不但影响了其他学生的疏散，而且有很多路径没有被充分利用，导致在相同的时步下，系统内留有的人数明显多于疏散策略2，如图8(b)、图8(c)所示。
system: [SYSTEM]

user: 4. 结论 本文考虑小学生的应急疏散策略问题，建立了静态场下的含疏散策略的小学生紧急疏散元胞自动机模型，研究不同的疏散策略下小学生在报告厅内疏散机制。数值模拟表明：若只按最短路径离开系统，会导致局部拥挤现象的增多，导致疏散效率的降低；在紧急疏散过程中，要尽可能多的利用疏散通道，提高通道的利用率。 通过上述模拟研究可以发现疏散策略的改变对疏散效率有着显著的影响，说明了在合适的环境下进行合理制定疏散策略十分必要，对研究具有代表性、合理性的疏散策略行人流模型有着实际意义。
system: [SYSTEM]

user: 摘 要 三维重建一直是计算机视觉中的重要的研究领域，这是突破现有数字计算机的信息处理能力，将其扩展为能处理多维信息的重要途径之一。针对三维模型重建成本高、操作繁琐、周期长等问题，提出了一种基于智能手机的三维模型重建方法。利用智能手机拍摄物体，通过计算相机内部参数和目标物体的三维信息，生成物体表面的密集点云数据，并根据点云数据建立三维模型。最终以三维激光扫描结果为基础对模型进行分析评价。实验结果表明，该方法可以快速建立高精度的三维模型，具有简单、高效的特点，可应用于各个领域。 关键词 :智能手机，三维重建，点云数据 Copyright © 2018 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
system: [SYSTEM]

user: 1. 引言 如今随着科技的发展，越来越多的三维影像产品出现在人们的生活中。一般的三维模型重建方法是利用专用的设备如深度扫描仪等来获取三维数据，或者利用如3DSMAX，CAD以及MAMY等专业软件来构造三维模型。这样的方法大多都有着操作复杂，效率低，周期长，成本高等问题，无法适用于广泛的日常生活中。 而基于智能手机的三维模型重建是利用智能手机对同一物体在不同角度进行拍摄，通过一系列照片对物体进行三维模型重建 [ 1 ][ 2 ]。这种方法自动化程度高，实用性好，降低了建模成本与条件，适用于任何场景的重建。本文概括介绍了基于智能手机三维重建的各阶段及整体流程。
system: [SYSTEM]

user: 2. 基于智能手机的三维模型重建方法 2.1. 相机标定 在对目标物拍摄之前，相机标定是必不可少的步骤之一。使用同一个相机对同一个黑白棋盘进行不同角度的拍摄，通过点的三维世界坐标和二维相机平面像素坐标来求解图像平面的单应性矩阵H，从而得到内部参数和外部参数 [ 3 ]。 基本原理： s [ u v 1 ] = K [ r 1 r 2 r 3 t ] [ X Y 0 1 ] = K [ r 1 r 2 t ] [ X Y 1 ] H = [ h 1 h 2 h 3 ] = λ K [ r 1 r 2 t ] 根据旋转矩阵的性质，即 r 1 T r 2 = 0 和 | | r 1 | | = | | r 2 | | = 1 ，每幅图像可以获得以下两个对内参数矩阵的基本约束： h 1 T k − T k − 1 h 2 = 0 h 1 T k − T k − 1 h 1 = h 2 T k − T k − 1 h 2 由于摄像机有5个未知内参数，所以当所摄取得的图像数目大于等于3时，就可以线性唯一求解出K得到内参矩阵。 2.2. 特征点的提取和匹配 特征点的提取和匹配是利用两幅图像中的对应点来求取两个相机的相对关系。对于图像差别较大的情况，推荐使用SIFT特征，因为SIFT对旋转、尺度、透视都有较好的鲁棒性。如果差别不大，可以考虑其他更快速的特征，比如SURF、ORB等。 2.2.1. 基于SIFT算子的特征点的提取 SIFT算法是一种能够在尺度、亮度和视点变化的情况下提取稳定的特征点，并且生成具有良好匹配性特征点的方法 [ 4 ]。提取过程分为四步： 1) 尺度空间极值检测 利用高斯核函数对图像进行尺度变换，获得图像在尺度空间下的多尺度序列表示。 L ( x ， y ， σ ) = G ( x ， y ， σ ) ⊗ I ( x ， y ) 其中为高斯核，随着尺度因子的改变，将会生成不同尺度下的图像，称为高斯尺度空间。之后构建DoG (Difference-of-Gaussians)空间，来检测尺度空间的局部极值。 2) 精确定位特征点 将候选特征点带入二次泰勒展开，从而修正特征点的位置达到子像素精度。这些特征点中很多都是不稳定的，需要除掉这些点。因此设定阈值，将小于的点剔除点，这样就增强了匹配的可靠性和稳定性。 3) 确定特征点方向 首先在尺度空间中计算像素梯度： m ( x ， y ) = ( ( L ( x + 1 ，   y ) − L ( x − 1 ，   y ) ) 2 + ( L ( x ，   y + 1 ) − L ( x ，   y − 1 ) ) 2 ) 1 2 θ ( x ， y ) = tan − 1 ( L ( x ，   y + 1 ) − L ( x ，   y − 1 ) L ( x + 1 ，   y ) − L ( x − 1 ，   y ) ) 以每个特征点为中心，采用梯度方向直方图的方法，在8 × 8的领域中对梯度在36个离散方向上进行高斯加权，统计整个领域内的梯度方向。最后将梯度模型的极大值或者多个极大值作为该特征点的主方向或次方向。 4) 生成SIFT特征描述子 SIFT特征描述子是一个包含特征点领域信息的高维向量。它是将特征点领域内像素的0度方向旋转为该领域的主方向，以消除旋转变换的影响，然后在4 × 4的区域内统计8个方向的梯度方向直方图。最后将SIFT特征描述子进行归一化处理，以消除光照变化的影响。 2.2.2. 基于SIFT的特征匹配 SIFT匹配方法是在具体的点的匹配上采用欧式距离算法。对于匹配图像中的特征点，采用最近邻法搜索参考图像中的特征点，在参考图像中找到距离最近的和次近的两个特征点，如果最近距离和次近距离的比值小于设定的阈值，则接受这一对匹配点。在得到初始匹配结果时，会有一些误匹配，因此需要使用对极几何约束的方法来进行约束匹配，最后利用RANSAC模型剔除误匹配点 [ 4 ][ 5 ]。 2.3. 三维模型重建 2.3.1. 双目重建 对于空间任意一点M，同时用同一内参的摄像机和观测M点，并且确定在的像面上的m点和的像面上的点是空间同一点M的像点，那么M的三维位置是可以确定的，这就是三维立体视觉重建的基本原理如图1所示。 图1. 双目重建 在已知两个相机之间的变换矩阵，还有每一对匹配点的坐标，通过这些已知信息来还原匹配点在空间当中的坐标。根据公式： s x 2 = K ( R X + T ) 整理可得到一个关于空间坐标X的线性方程： x ⌢ K [ R T ] [ X 1 ] = 0 求出X左边矩阵的零空间，再将最后一个元素归一化到1，即可求得X。由于只是两张照片的重建因此重建过程中会丢失许多三维数据信息，因此需要加入更多的图片来进行多目重建。 2.3.2. 多目重建 通过双目重建后，我们可以得到一些特征点的空间坐标。之后加入第三张相片，与第二张相片进行匹配得到特征点，其中部分特征点同样属于相片一与相片二的特征点。这样我们在已知这些特征点的空间坐标和在第三张相片中像素坐标的情况下，通过solve PnP便可得到第三个相机在世界坐标系下的位置，即相机三到相机一的变换矩阵。 在得到相机三的变换矩阵后，通过triangulate Points方法将相三和相二之间的匹配点三角化，得到其空间坐标。同时将新得到的空间点和之前的三维点云融合。对之后的相片反复操作便可完成多目重建。
system: [SYSTEM]

user: 3. 实验验证及分析 3.1. 数据准备 在进行三维模型重建之前需要对相机进行相机标定，本文使用的是张正友标定法来标定得到手机摄像头的内参矩阵 [ 6 ][ 7 ]。使用手机对黑白棋盘进行不同角度的拍摄用于相机标定的棋盘格，之后提取内角点进行标定得到标定误差及内参矩阵。 在对目标物进行拍摄时，应360˚全方位拍摄，同时保证每张相片拍摄时的拍摄角度和拍摄距离基本一致，还要注意相邻照片之间的交叠面积和摄像头分辨率。本文对校内孔子雕像如图2所示进行模型重建，拍摄照片为43张。 将所有相片导入，进行特征点的提取与匹配。由于手机拍摄所得相片差别较大，而基于SIFT算法特征点的提取与匹配对旋转、尺度、透视都有较好的鲁棒性。因此本文使用的是SIFT算法，得到一些稀疏的点云，称为稀疏重建，如图3所示。稀疏重建的结果只能看出物体的轮廓，因此在不影像物体的形状和点云质量的情况下需要对点云进行密集处理，称为密集重建。本文密集重建使用的是CMVS算法，得到的密集重建结果如图4所示。经过密集重建后得到的数据模型仍是由点云构成的。因此需要对密集重建结果进行表面纹理贴图处理。 3.2. 三维重建结果 通过上述的数据准备与处理，得到最终的三维模型重建结果如图5所示，将此模型与实物以及三维激光扫描仪得到的扫描结果如图6所示进行对比分析。 图2. 孔子像 图3. 稀疏重建 图4. 密集重建 图5. 重建结果 图6. 激光扫描结果 3.3. 结果分析 重建结果与实物和三维激光扫描仪扫描结果进行对比，模型形态无较大的几何畸变，雕像上的文字还原清晰，整体还原度较高，达到预计要求。但重建模型中的头部、肩部以及手臂内侧出现部分空缺，分析原因认为，由于雕像高度与拍摄角度的问题，存在一些拍摄死角导致以上部分未能得到足够多的点云数据，影响最终的建模结果。可以通过提高拍摄高度以及改变密集重建方法予以改进。同时该结果只能显示物体的形状和样貌，并不能得到物体的坐标、尺寸等属性信息，因此基于智能手机的三维模型重建技术仍有很大的发展空间。
system: [SYSTEM]

user: 4. 结语 本文以智能手机拍摄的孔子像相片为数据基础，通过相机标定、特征点的提取与匹配以及最终的模型重建等一系列步骤成功建立了雕像的三维模型，验证了该方法的可行性。该方法操作简便、自动化高、适用范围广，不仅减少了购买专业仪器的高额成本，还大大缩短了建模周期，为快速三维模型重建提供技术支持。基于智能手机的三维模型重建效果好，实用性强，可用于生活购物，现场勘测，文物保护以及工业生产等多个领域。
system: [SYSTEM]

user: 摘 要 近年来，Android第三方库的安全问题层出不穷。为了研究第三方游戏库潜在的安全威胁，该文深入分析了21个主流的第三方游戏SDK，并建立了三种过程模型以揭示游戏SDK的实现细节，然后提出了7条安全准则，并说明了违反这些安全准则后游戏SDK提供方、游戏开发方、用户可能遭遇的5种攻击场景。最后，该文提出了检测违反安全准则的三种方法，并利用这三种方法对这21种游戏SDK及Android应用市场中的2000个游戏应用程序进行了检测，实验结果表明，这21个游戏SDK均违反至少一条安全规则，导致上百个游戏应用程序面临安全风险。 关键词 :第三方游戏库，安全准则，过程模型，攻击场景 Copyright © 2018 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
system: [SYSTEM]

user: 1. 引言 近几年，移动应用程序市场迅速发展。大量Android应用程序使用第三方库，第三方库通过提供已经实现的具体功能，使得应用程序的开发更加便利。有研究表明，许多应用程序使用超过20个第三方库 [ 1 ] ，在某些极端情况下，一个应用程序可以引入超过30种不同的第三方库 [ 2 ] 。在现存的Android第三方SDK中，游戏类SDK尤为突出，被应用程序开发者广泛使用。iiMedia Research显示，2016年中国手游用户规模达5.23亿人，市场规模达783.2亿元 [ 3 ] 。据统计，每个Android游戏APP平均使用SDK的数量达17.5个0。由此可见，游戏类SDK的使用数量不断上升，在Android第三方SDK中占据重要地位。 然而，尽管第三方SDK在开发中被普遍使用，它们却往往存在潜在安全问题，例如，它们泄露用户私人信息，利用其宿主应用程序的权限或跟踪用户。文献 [ 4 ] 指出中国最大的移动广告提供商Taomike所提供的广告SDK被发现存在秘密监视用户的行为；文献 [ 5 ] 指出Google Cloud Messaging提供的推送消息服务SDK允许攻击者劫持用户的注册id并获取用户隐私信息；文献 [ 6 ] 指出主流应用程序内支付服务提供商提供的支付SDK规定商家使用URL存储支付命令，这使攻击者很容易获取并篡改支付命令，给用户和商家造成极大经济损失。由此可见，大量第三方SDK存在严重安全问题，亟待研究与解决。 本文旨在回答以下问题：1) 什么原因导致了游戏SDK存在安全漏洞？2) 攻击者可能对游戏SDK执行什么类型的攻击？3) 怎样检测游戏SDK中存在的安全漏洞？为了解决这些问题，本文对游戏SDK进行了深层次分析，包括以下几个方面：1) 通过逆向工程第三方游戏SDK和相关应用程序，分析游戏SDK的主要功能及其实现流程，并建立过程模型。2) 总结出一系列规范游戏SDK的安全规则。3) 举例说明违反这些安全规则后可能遭受的攻击。4) 使用自动化和手动方法结合来检测在游戏SDK，游戏SDK服务器，游戏应用程序及游戏应用程序服务器上违反安全规则的行为。
system: [SYSTEM]

user: 2. 相关工作 针对Android第三方库的分析研究主要包括同源性分析和漏洞分析。在同源性分析方面，Michael Backes等人 [ 7 ] 提出一种可以精确检测Android应用程序中使用的第三库的技术，它利用原始的第三方库生成特征文件，然后对文件进行特征匹配，此方法可以应对代码混淆技术，不仅可以检测应用程序中使用的不同库，还可以检测出所使用的库版本。Charlie Soh等人 [ 8 ] 提出一种自动检测第三方库的工具LibSift，这种检测工具基于应用程序的包依赖图，并采用了模块去耦技术提高识别精度。Ziang Ma等人 [ 1 ] 首先利用聚类技术收集了大量第三库特征，然后开发了一种叫做LibRadar的工具，结合静态分析和特征匹配技术识别应用程序中的第三方库。 基于大量对第三方库同源分析技术的研究，不少研究者分析了Android应用程序中各类第三方库存在的安全问题，并提出了相应的检测方法。Yangyi Chen等人 [ 5 ] 提出了一种工具用于检测推送消息类SDK的漏洞，它旨在从SDK的示例代码及应用程序的Manifest文件中提取指纹，接口等信息，并利用这些信息分析SDK提供的身份认证方式及客户端id的保护方式，它可以检测客户端混淆，服务混淆等漏洞。Wenbo Yang等人 [ 6 ] 分析了第三方支付类SDK可能遭受的攻击，例如秘钥泄露，支付命令被替换等，文章针对每种类型的攻击提出了具体的检测方法。Soteris Demetriou等人 [ 9 ] 分析了广告库获取用户隐私的四种方式并提出一个移动风险评估框架来检测应用程序是否将个人敏感数据泄漏给广告库。Hui Wang等人 [ 10 ] 揭示了由于Android应用程序中利用第三方SDK实现OAuth协议而产生的漏洞，并提出一个漏洞评估框架，此框架可以为Android应用程序中OAuth的实现流程建立五方三阶段模型，从而检测两种类型的漏洞。 上述方法实现了对特定类型的第三方SDK的漏洞检测技术，但都不能针对游戏SDK的特点进行安全检测，目前也没有研究者对游戏SDK进行系统性的安全分析。
system: [SYSTEM]

user: 3. 过程分析 游戏SDK通常包含两种功能，一是用户体系功能，例如注册、登陆等；二是支付功能，通常提供多种支付渠道以实现游戏APP中充值服务。虽然游戏SDK功能相似，但应用程序如何通过第三方游戏SDK完成服务的过程却不完全一致。第一，游戏SDK没有统一的规范；其次，游戏SDK开发者经常向应用程序开发者提供简单的文档和代码示例，然而这些资料的大部分是模糊的，可能会误导应用程序开发人员。 为了揭示游戏SDK服务过程的细节，本文选择了当下流行的游戏SDK，对它们的示例代码及开发文档进行研究分析，并SDK及相关应用程序的源码进行分析。然后，本文总结了游戏SDK登陆、支付和找回密码流程，包含基本步骤及传递的参数。 3.1. 登录模型 图1所示为一个简单的登陆过程模型，整个过程通常包含以下8步： 1) 游戏客户端初始化第三方游戏SDK，调用SDK登陆接口。 2) SDK客户端向SDK服务器发送登起请求，将用户信息userinfo (例如账号，密码等)及APP信息appinfo (例如客户端唯一标识APPID)加密并传递给SDK服务器。 3) SDK服务器将接收到的userinfo与数据库信息对比，并生成登陆状态码code，登陆令牌token和签名sign，然后响应SDK客户端登陆请求。 4) SDK客户端处理接口的回调结果，将获取的信息传递给APP客户端，token中保存了用户身份信息。 5) APP客户端将获取的token和sign作为用户登陆标识向APP服务器发送登陆请求。 6) APP服务器将登录信息发送到SDK服务器，请求SDK服务器验证此次是否为有效的用户会话。 7) SDK服务器找到对应的会话，验证登陆是否超市，同时校验签名的正确性，然后返回校验结果(包括登陆状态码，信息描述等)。 8) APP服务器接收校验结果后，通知APP客户端登陆结果，APP客户端执行登陆操作并将用户登陆态信息存储到本地数据库中。 3.2. 支付模型 图2所示为一个简单的支付过程模型，整个过程通常包含以下10步： 图1. 登陆过程模型 图2. 支付过程模型 1) APP客户端调用游戏SDK的支付接口，并将商品信息commodityinfo (例如商品数量等)通过接口传递给SDK客户端。 2) SDK客户端向APP服务器发送商品信息和签名以请求充值服务。 3) APP服务器生成加签订单，并将订单信息orderinfo (例如订单ID等)和签名返回给SDK客户端。订单信息和签名将保存在APP服务器的数据库中。 4) SDK客户端根据orderinfo中的支付渠道调用对应的支付SDK，将支付信息发送给SDK服务器，SDK服务器设置订单状态为未完成。 5) 支付SDK客户端根据orderinfo中的信息向支付服务器发送支付请求，支付服务器回调支付SDK方法，弹出支付界面并获取用户输入的支付账户信息userinfo。 6) 支付服务器对订单进行处理，将充值结果信息pay_result (包含订单号支付金额，支付失败原因等)和sign发送给SDK服务器。 7) SDK服务器更新订单状态并存储充值信息，然后通知APP服务器充值结果。 8) SDK服务器使用回调接口通知SDK客户端充值结果，APP客户端提示用户支付结果。但此时，用户购买商品并未同步。 9) APP服务器校验签名和订单信息，将校验结果返回给SDK服务器。 10) 若第9步支付结果校验正确，APP服务器根据订单信息将用户购买的商品发放给APP客户端，并将用户购买商品信息添加到数据库中。 3.3. 找回密码模型 图3所示为一个简单的重置密码过程模型，整个过程通常包含以下9步： 1) APP客户端调用SDK密码重置接口，用户在密码重置界面输入手机号码，并通过接口参数传入SDK客户端进行处理。 2) SDK客户端向SDK服务器发送userid，手机号，令牌token，请求SDK服务器发送验证码。 3) SDK服务器生成验证码，请求短信服务商发送短信。 4) SDK服务器通知APP客户端验证码发送成功。 5) 用户在APP客户端界面输入接收到的验证码，通过对应接口传递给SDK客户端。 6) SDK客户端发送userid，手机号，用户输入的验证码到SDK服务器，请求校验正确性。 7) SDK服务器校验验证码是否正确并检查token是否在有效期，然后返回给SDK客户端校验结果，允许或拒绝用户修改密码。 8) 用户在APP客户端输入新密码，并由SDK客户端发送给SDK服务器，SDK服务器，SDK服务器将新密码存储到数据库中。 9) SDK服务器返回给SDK客户端密码重置结果，SDK客户端通知用户密码重置结果。
system: [SYSTEM]

user: 4. 安全分析 4.1. 安全准则 大部分游戏SDK在发布之前已经通过审核并且被认为是安全的，但由于整个游戏服务过程涉及多方交互，任何一方在多方模式中犯下的任何错误都可能导致整个过程的脆弱性。因此，有必要制定安全规则，对模型中的各方进行规范。 根据上面三种过程模型，本文总结了以下准则，要求游戏开发方和游戏SDK提供方必须遵守。 1) 永远不要把任何秘密信息存放在客户端APP中，本地重要信息应加密存储。 图3. 找回密码过程模型 2) 校验短信验证码的过程必须在SDK服务器端完成。 3) 客户端和服务器之间必须使用安全的网络通信。 4) userid生成方式应是无规律的。 5) 支付相关的信息必须签名。 6) SDK必须将付款订单的详细信息通知用户。 7) 通信过程中必须验证接收到的信息的签名。 下面本文将详细描述违反安全规则后会遭遇的5种攻击。 4.2. 篡改命令 如果违反了第1条，第5条或第7条中任意一条安全规则，可能会遭受命令被篡改的攻击。在这种情况下，攻击者可以篡改支付订单中的内容，例如篡改支付金额，使得攻击者可以支付较少的费用而获取到商品。 在支付模型中，SDK客户端将用户购买的商品信息发送给APP服务器，APP服务器生成订单号返回给APP。在这个过程中，SDK客户端发送的商品信息和APP服务器返回的订单信息都应加签，并且在传递过程中，任何一方都应该验证接收到的签名。订单信息是由APP服务器生成并签名，攻击者无法篡改获取的信息。但是，如果订单签名的秘钥在APP客户端中，攻击者就可以截获商品或订单信息并篡改，利用获取的秘钥和篡改后的信息生成签名，重新发送给接收端，此时因为签名是合法的，接收端将把篡改后的信息当作正常信息处理。 4.3. 伪造通知 在找回密码过程模型中，SDK服务器负责校验验证码，若校验成功，SDK服务器通知APP客户端允许用户修改密码。但是，如果违反了第2条安全规则，即校验验证码的工作由APP客户端完成，攻击者可以修改本地代码逻辑，无论是否收取到验证码，无论修改密码操作是否由获得允许，攻击者都可以使APP客户端获取校验成功的通知。在这种情况下，攻击者只要任意输入电话号码，便可以在没有验证码的情况下修改此账户的密码，对用户造成危害。 在支付过程模型中，如果同时违反了第1和第7条安全规则，也可能会遭到伪造通知的攻击。在完成支付后，支付SDK服务器会将支付结果通知发送给APP服务器。在这项攻击中，攻击者不会完成支付，而是伪造一个假的支付结果通知发送给APP服务器，使得APP服务器认为订单已经支付成功。若想完成这个攻击过程，攻击者需要知道支付SDK服务器通知APP服务器时的URL。开发人员经常会将此URL随意放入APP的本地信息中，这违背了第1条安全规则。同时，如果APP服务器忽略校验通知的签名，这个通知就会被当作正常信息处理。 4.4. 替换命令 这种攻击是由于违反了第3条或第6条中任意一条安全规则，攻击者通过替换多方之间传输的数据，使用户遭受危害。 当APP服务器和APP客户端之间使用不安全的网络通信时，攻击者可以执行中间人攻击，截取它们之间传递的信息。在支付过程模型中，攻击者可以用一个伪造的合法订单替换APP服务器生成的订单，接下来的过程中，用户将支付攻击者伪造的订单，因为这个订单的格式和信息都是合法的，因此SDK会正常接收并处理这个订单。支付订单被替换还有另一个重要原因，即SDK没有向用户展示支付订单的细节。在这种情况下，用户没有确认生成的订单就进行了支付。例如，SDK只向用户展示用户购买的商品时，攻击者可以伪造与原订单具有相同商品信息，金额却不同的订单，此时用户无法辨别订单的不同，攻击者便可以成功完成攻击。 在找回密码过程模型中，用户重置密码后，SDK客户端将用户名，userid和用户重置的新密码发送给SDK服务器，在这个过程中，攻击者可以监听网络并截取这个过程中的数据包，替换用户重置密码命令，使用户无法成功登陆。这类攻击的根本原因是缺乏安全的通信信道。我们发现多数游戏SDK客户端和服务器之间使用HTTP通信协议和简单的加密算法，很容易通过中间人攻击工具监听到传输内容。 4.5. 伪造客户端 每一个游戏APP用户的账号都有一个userid，它是唯一确定一个用户的标识，userid通常由服务器生成，服务器通过网络请求中的userid来区分来自不同用户的请求。 根据第4条安全规则，userid的生成方式应该是无规律的，否则攻击者很容易推断出被攻击者的userid，并以此作为攻击条件。例如一些游戏APP请求服务器信息时需要使用userid，若攻击者获取被攻击者的userid，就可以伪造用户请求并获取用户信息。 4.6. 非法登录 如果违反了第1条或第3条安全规则中任意一条，攻击者可能获取身份验证信息伪造登录请求。在登录过程模型中，SDK服务器会生成唯一的编码token并将token与用户信息一一对应存入数据库中，之后token会作为安全交互的重要信息，开发者经常会将token存放在本地APP数据库或私有文件中，便于直接读取，甚至有些SDK会将用户名和密码存在私有文件。如果这些信息没有加密存储，攻击者便很容易获取用户的登录信息。另一方面，如果在token和账号信息在传递过程中使用不安全网络通信也同样会造成隐私泄露。
system: [SYSTEM]

user: 5. 检测 由上述章节可知，违反七项安全规则可能会造成可利用的攻击。在本章中，将详细描述如何检测违反这些安全规则的行为，以便发现真实游戏应用程序中存在的漏洞。本文的检测方法主要分为三类，自动化静态检测、中间人检测和手动检测。自动化检测的主要检测对象是SDK源码和游戏APP源码，中间人检测主要的检测对象是各方之间的网络交互数据，而手动检测主要是检测SDK的显示界面、生成文件等或手动篡改SDK各方之间的网络通信数据。 5.1. 自动化静态检测 对于URL信息，我们在DEX文件和资源文件中搜索URL特征，然后自动化提取SDK中所有的URL，最后判断来确定这之中是否有涉及到服务器之间通信的URL泄露。 对于签名信息，我们可以通过开发文档得知SDK采用的签名方式，然后根据不同的签名方法来搜索关键函数内参数或静态变量是否有涉及秘钥泄露；另外，我们发现一些支付秘钥存在明显的特征，例如支付宝秘钥通常是以‘MI’开头且长度超过300的字符串。 根据安全规则3，如果SDK使用的是HTTPS通信，我们将检查它是否正确验证SSL证书。此漏洞分两种情况，第一，SDK自定义信任所有证书；第二，SDK没有对证书的主机名进行校验。这两种情况有明显的代码特征，可以通过代码特征匹配完成检测。 5.2. 中间人检测 根据安全规则2，校验短信验证码的过程应在服务器端完成。我们在中间人攻击工具Fiddler基础上实现自动获取短信验证码校验过程数据的功能，通过重建短信验证过程来检测此类漏洞。 根据安全规则3，游戏服务器，游戏客户端，SDK服务器之间应该采用安全的通信方式。我们利用MonkeyRunner录制登陆和充值的脚本，在执行脚本的同时利用Fiddler自动获取过程中的全部网络数据。MonkeyRunner是一种Android自动化测试工具，可以通过它提供的API来控制Android设备和模拟器运行，另外，可以运行monkeyrecoder.py脚本录制应用程序测试脚本，并通过monkeyplayback.py脚本来解释执行测试脚本。我们收集了一些网络传输中隐私数据参数常用名称，例如密码参数名常用password，pwd，accessPasswd，passwd等，我们检查在获取的网络数据中是否有这些隐私数据的关键字，如果SDK采用HTTP协议且在网络数据中出现账号、密码、订单号、手机号、邮箱、支付金额等参数名，我们认为它是不安全的。 根据安全规则4，userid应该是无规律的。为了检测这一漏洞，我们利用MonkeyRecorder记录注册框的坐标并随机生成账号和密码，然后利用MonkeyRunner在APP上自动注册大量用户，同时利用Fiddler自动获取注册过程中的userid的值，最后比较userid的信息熵并与随机数的信息熵，并调用Matplotlib工具绘制userid数据的散点图，以检测userid是否有规律。我们用同样的方法检测违反安全规则5的行为，主要检测网络传输数据中是否有例如sign，Signature，mhtSignature，sig，paySig等签名参数常用字段。若没有，则认为是有漏洞的。 5.3. 手动检测 根据安全规则1，一些重要信息应加密存储。一般情况下，开发者会将token存储在数据库或配置文件中，我们在root后的手机上检查APP的数据库和私有文件，查找token信息或用户账号和密码，从而确定这些信息是否加密存储。 为检测违反安全规则6的行为，我们手动检查游戏SDK是否在支付过程中向用户显示了支付订单的详细信息，重点检查以下字段：1) 支付订单ID。2) 用户支付的商品信息。3) 该支付订单所属的用户账号。4) 该支付账单所属的游戏APP信息。5) 用户所选用的支付渠道。6) 支付订单的总额。若游戏SDK的支付界面未向用户提供上述信息，则认为该游戏SDK的支付订单有被篡改的风险。 根据安全规则7，任何一方都应检测接收到的签名。为了检测这个漏洞，我们拦截所有的支付和登陆过程中的数据包，修改签名后再发送出去，如果接收方没有返回签名错误或者参数错误等信息，则证明它没有正确校验签名。
system: [SYSTEM]

user: 7. 结束语 本文为了展现游戏SDK的实现细节并揭示潜在的安全风险，对Android游戏SDK进行了全面分析，并总结了七条安全规则，然后揭示了违反安全规则后的严重后果并提出了检测方法，最后对21个游戏SDK及上千个Android应用市场中的游戏APP进行了实验。实验结果表明，虽然这些安全规则被开发人员熟知，但多数游戏SDK仍然没有遵守规则，导致上百个游戏应用程序易遭受攻击。我们希望我们的研究能够提醒并指导游戏应用程序开发人员和游戏SDK开发人员开发更安全的游戏APP。
system: [SYSTEM]

user: 摘 要 古诗词是中华优秀传统文化上璀璨的明珠，两千年来，我国优秀诗人辈出，其诗作若满天繁星，内容丰富，影响深远。随着计算机技术的不断发展，推荐系统在我们的生活中处处可见，为越来越多的用户提供了便利。然而，目前对于古诗词的个性化智能推荐系统比较匮乏，绝大多数的诗词网站也只是对于诗词内容的简单展示，而非推荐，所以进行古诗词推荐方面的研究对于促进中华优秀传统文化的传播具有重要意义。本文基于Word2vec模型，通过利用网络上爬取的古诗词数据进行训练，实现了古诗词的个性化推荐。 关键词 :推荐系统，古诗词，Word2vec模型 Copyright © 2018 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
system: [SYSTEM]

user: 1. 引言 习近平总书记在十九大上提出，我们要“坚定文化自信，推动社会主义文化繁荣昌盛” [ 1 ] 。而古诗词作为中华文化之瑰宝，情感交流之载体，其传承和弘扬的重要性不言而喻。两千年来，我国诗人辈出，佳作如林，内容极为丰富，绚丽多彩。在互联网、大数据等技术蓬勃发展的今天，各种个性化智能推荐系统越来越多地应用于生活的方方面面，例如个性化视频推荐系统、个性化音乐推荐系统以及餐饮推荐系统等等，这赢得了越来越多用户的青睐。本文利用Word2vec模型，实现古诗词的个性化智能推荐，以期促进古诗词的传播，弘扬中华优秀传统文化。 本文首先利用开源爬虫框架Requests从互联网上爬取需要的古诗词数据，然后将爬取到的每一首古诗词的译文和赏析利用Python中的jieba分词库进行分词、去噪，生成古诗词语料库，进而利用该语料库训练Word2vec模型，并通过该模型得到每一首古诗词在该语料库中的向量表示，最后使用余弦距离计算出古诗词之间的相似度，选取相似度最高的十首古诗进行推荐。
system: [SYSTEM]

user: 2. 研究现状与相关技术 目前，绝大多数古诗词网站都只是对古诗词内容的简单展示，缺乏个性化推荐功能。本文利用深度学习的思想，从浩如烟海的古诗词语料库中训练出Word2vec模型，实现古诗词智能个性化推荐。相比于仅仅利用古诗词标签进行分类，Word2vec模型能够更加准确的为用户推荐感兴趣的古诗词，从而使用户得到更好的体验效果。 2.1. 数据爬取 模型训练所使用的古诗数据是通过Python语言从网络上爬取所得，在此过程中主要用到了Python提供的两个库——Requests [ 2 ] 和BeautifulSoup [ 3 ] ，其中Requests用于模拟session/cookie的存储和设置，BeautifulSoup用于在进行网页抓取后的处理工作中，通过简短的代码完成过滤html标签，提取文本的工作。 Requests是一款基于Python语言的开源爬虫框架，覆盖了典型爬虫的几大核心功能：页面下载、链接抓取、URL管理和内容分析与持久化。Requests是用Python语言编写，基于urllib，采用Apache2 Licensed开源协议的HTTP库。它完全满足HTTP测试需求，比urllib更加方便，可以大大节省工作时间。Requests主要方法及说明如表1所示。 BeautifulSoup库是解析、遍历、维护“标签树”的功能库，BeautifulSoup对应一个HTML/XML文档的全部内容。BeautifulSoup类的基本元素如表2所示。 Table 1 Main methods and descriptions of Request 方法 说明 Requests.request() 构造一个请求，支撑以下各方法的基础方法 Requests.get() 获取HTML网页的主要方法，对应于HTTP的GET Requests.head() 获取HTML网页头信息的方法，对应于HTTP的HEAD Requests.post() 向HTML网页提交POST请求的方法，对应于HTTP的POST Requests.put() 向HTML网页提交PUT请求的方法，对应于HTTP的PUT Requests.patch() 向HTML网页提交局部修改请求，对应于HTTP的PATCH Requests.delete() 向HTML页面提交删除请求，对应于HTTP的DELETE 表1. Requests主要方法及说明 Table 2 Basic elements of the BeautifulSoup clas 基本元素 说明 Tag 标签，最基本的信息组织单元，分别用<>和表明开头和结尾 Name 标签的名字，…的名字是‘p’，格式： .name Attributes 标签的属性，字典形式组织，格式： .attrs NavigableString 标签内非属性字符串，<>…中字符串，格式： .string Comment 标签内字符串的注释部分，一种特殊的Comment类型 表2. BeautifulSoup类的基本元素 2.2. 中文分词 中文分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。 在获取数据后，需要对数据进行分词、去噪，生成古诗词语料库，此过程主要采用了Jieba分词工具。 Jieba分词 [ 4 ] 是一款基于Python语言的简单易用的中文分词工具，支持三种分词模式： ① 精确模式，将句子精确分开，适合文本分析； ② 全模式，把句子所有成词的词语都扫描出来，但是不能解决歧义； ③ 搜索引擎模式，对长词进行切分，提高召回率。 Jieba分词用到的算法： 基于Trie树结构实现高效的词图扫描，生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)采用了动态规划查找最大概率路径，找出基于词频的最大切分组合对于未登录词，采用了基于汉字成词能力的HMM模型，使用了Viterbi算法。 2.3. Word2vec模型 Word2vec是Google在2013年提出的用于快速有效地训练词向量的模型。作者的目标是要从海量的文档数据中学习高质量的词向量，该词向量在语义和句法上都有很好地表现，现已广泛应用于自然语言处理的各种任务中。Word2vec通过训练，可以把对文本内容的处理简化为K维向量空间中的向量运算，而向量空间上的相似度可以用来表示文本语义上的相似度 [ 5 ] 。因此，word2vec输出的词向量可以被用来做很多NLP相关的工作，比如聚类、找同义词、词性分析等。 Word2vec的基本思想是利用上下文信息，即与一个词前后相邻的若干个词，来提取这个词的特征向量。为了利用这种上下文信息，Word2vec采用了两种具体的模型：CBOW和Skip-Gram。这两种模型的本质是一样的，都是利用句子中相邻的词，训练一个神经网络。它们各有优劣，因此各自实现的Word2vec的效果也各有千秋。从图1可以看出两种模型均包含输入层、投影层和输出层。其中，CBOW是一种根据上下文的词语预测当前词语出现概率的模型。而Skip-Gram则是逆转了CBOW的因果关系，即已知当前词语，预测上下文。 同时，Word2vec提供了两套优化方法来提高词向量的效率 [ 6 ] ，分别是Hierachy Softmax和Negative Sampling，将训练模型和优化方法进行组合可得到4种训练词向量的框架。 Hierarchical Softmax(HS)模型是利用一个二叉树去表示特征词典中的所有特征词 [ 7 ] 。特征词典中的V个特征词作为二叉树的叶子节点，所以非叶子节点有V-1个，对于每一个叶子节点，有且仅有一条从根节点到该叶子节点的路径，模型利用该路径去估计该叶子节点所代表的特征词的概率，如图2所示。 负抽样(Negative Sampling， NS)的思路比较简单直接：针对每一个训练样本，原始模型都要更新所有的“输出向量”，而NS模型仅仅只更新“输出向量”中的一部分。它的主要思想是：选择部分负样本(非目标特征词)协助正样本(目标特征词)的相关参数(“输出向量”)进行更新。