精华内容
下载资源
问答
  • 共同助力新能源汽车电池产业的创新发展,以行动落实、响应国家 “以金融支持实体经济”的政策,同时将支持武汉蔚能电池资产有限公司(「蔚能」),推动「车电分离」在新能源汽车行业的发展,推出电池租用服务BaaS...

    香港--(美国商业资讯)--国泰君安国际控股有限公司(「国泰君安国际」或「公司」,与其附属公司称为「集团」,股份代号:1788.HK)宣布,集团将携手蔚来汽车(「蔚来」)、宁德时代新能源科技股份有限公司(「宁德时代」)和湖北省科技投资集团有限公司(「湖北科投」)三家企业,共同助力新能源汽车电池产业的创新发展,以行动落实、响应国家 “以金融支持实体经济”的政策,同时将支持武汉蔚能电池资产有限公司(「蔚能」),推动「车电分离」在新能源汽车行业的发展,推出电池租用服务BaaS(Battery as a Service)。

    作为蔚能的首轮参与者,国泰君安国际表示:「新能源汽车行业是国家重点政策发展方向,随着未来新能源汽车中车电分离车型比例将逐步增加,蔚能的前景将是一片蓝海。近年来集团在发展策略上审时度势,坚持在做优、做强的坚实基础上突破发展。尽管2020年上半年疫情影响全球经营环境和经济增长,但公司的财务状况和资产负债表取得实质性提升。在高科技与创新行业的驱动下,中国经济的发展蹄疾而步稳。国泰君安国际通过此次合作,积极响应国家“以金融支持实体经济”政策,以实际行动助力相关政策的落地和执行,促进新能源汽车电池行业的持续和健康的发展。与此同时,集团希望通过参与更多优质、稀有、且有潜力的项目,为客户带来更丰富的产品组合,亦在中长期促进集团企业融资和财富管理的蓬勃发展及各业务间的有机协同。」

    武汉蔚能电池资产公司是基于发展「换电」与「车电分离」业务模式的电池资产管理公司,蔚能以蔚来品牌为依托,计划逐步将业务扩展至所有电动车品牌。电池租用服务 BaaS提供了车电分离、电池租用、可充可换可升级的全面服务,是技术与商业模式的突破式创新,指用户在购车时不需购买电池包,根据自身实际使用需求选择租用不同容量的电池包,按月支付服务费,并且和电池购买用户一样,可享受换电服务和电池灵活升级服务。

    关于国泰君安国际:

    国泰君安国际(港交所上市代号:1788.HK)是中国证券公司国际化的先行者和引领者。公司是首家通过首次公开发售方式于香港联合交易所主板上市的中资证券公司。以香港为业务基地,国泰君安国际提供多样化综合金融服务,核心业务包括:财富管理、企业融资、贷款及融资、资产管理与金融产品。目前,国泰君安国际已分别获得穆迪和标准普尔授予「Baa2/Prime-2」及「BBB+/A-2」 长期发行人评级。公司控股股东国泰君安证券股份有限公司是中国证券行业长期、持续、全面领先的综合金融服务商。

    关于蔚来:

    蔚来(纽交所上市代号:NIO)是一家全球化的智能电动汽车公司,于2014年11月成立。蔚来致力于通过提供高性能的智能电动汽车与极致用户体验,为用户创造愉悦的生活方式。蔚来在上海、合肥、北京、圣何塞、慕尼黑以及牛津等全球多地设立研发与生产机构;在中国市场初步建立了覆盖全国的用户服务体系,并于2018年9月12日在美国纽交所(“NYSE”)上市。截至目前,蔚来已上市三款智能电动车产品,分别为智能电动旗舰SUV蔚来ES8、智能电动全能SUV蔚来ES6和智能电动轿跑SUV蔚来EC6。

    关于宁德时代

    宁德时代新能源科技股份有限公司(深交所上市代号:300750.SZ)是全球领先的锂离子电池研发制造公司,专注于新能源汽车动力电池系统、储能系统的研发、生产和销售,致力于为全球新能源应用提供一流解决方案。公司总部位于中国福建省宁德市,并在中国江苏溧阳、青海西宁和四川宜宾,以及德国慕尼黑、法国巴黎、日本横滨、美国底特律等地设有子公司。此外,公司在福建、江苏、青海和四川布局了电池生产制造基地,首个海外工厂落户于德国图林根州埃尔福特。根据SNE统计,公司连续三年电池使用量领先全球。

    关于湖北科投

    湖北省科技投资集团有限公司(简称“湖北科投”)于2005年7月由东湖高新区管委会出资组建成立,公司注册资本400亿元,承担着东湖高新区“重大基础设施建设、产业园区建设、重点产业投资、科技金融服务、国有资产运营”五大职能。截至2019年年底,湖北科投总资产规模约1600亿元,集团本部参控股企业80余家, 是光谷最大的国有控股集团。未来十年,湖北科投将努力构建“科技园区+产业集群+城市配套”三位一体的商业模式,打造成为光谷的“产业培育商”和“城市服务商”。

    此新闻稿由博达浩华国际财经传讯集团代国泰君安国际控股有限公司发布。

    展开全文
  • 本人实习生一个,最近公司有个新项目,组长说使用springmvc...以前在学校学的都是面向对象,不管什么,必须创建一个实体映射数据库,现在这种实现没有使用 mvc设计中的m,这样与面向对象的设计有什么区别,缺点在那?
  • 作者简介莱灵图髯客,携程高级算法工程师,主要负责自然语言处理领域相关工作,对半监督学习、自然语言生成、实体识别、文本分类及检索等领域有浓厚兴趣。一、背景介绍伴随信息时代的快速发展,消费...

    作者简介

     

    莱灵图髯客,携程高级算法工程师,主要负责自然语言处理领域相关工作,对半监督学习、自然语言生成、实体识别、文本分类及检索等领域有浓厚兴趣。

    一、背景介绍

    伴随信息时代的快速发展,消费者的消费观念趋于理性、客观,对产品本身的质量要求也越来越高。在用户难以直接接触到产品的情况下,能否第一时间让用户对目标产品有快速、深入的了解,已经成为产品推荐的关键。因此,优质、多样、精简、信息含量高的内容素材,对提高产品吸引力至关重要。

    就旅行场景而言,通过给景酒打上不同维度的标签,既有利于平台通过用户偏好更加合理地推荐相应产品,也能帮助用户对景酒有更快速的了解。同时,我们在景酒标签的基础上,进行更加深刻的内容挖掘,结合标签相关的、内容优质的推荐理由,大幅度加深用户对产品特色的了解,帮助客户快速挑选出最心仪的产品,提升用户体验。

    而这部分的内容挖掘的核心就在于基于主题的推荐理由自动抽取,需要从主题相关和优质两个维度进行内容的建模,从而实现内容的快速抽取和挖掘,部分样例如表1。

    表1 推荐理由样例

    POI

    标签

    推荐理由

    SkyBridge HQ天会(原凌空SOHO)

    热门网红

    一座仿佛外星球城堡般的建筑群,优美的流线型,几个单体之间有机连接构成仿佛生命体一样,不折不扣的网红打卡地。

    取景地

    这里是很多热门电视剧如《何以笙箫默》、《大好时光》的取景地。

    赏夜景

    夜晚是凌空最美的时刻,灯光,喷泉,吸引众多的摄影爱好者来这拍摄,留下最好的瞬间。

    落日

    白天光芒万丈,高端大气,傍晚落日余晖,有种站在舞台中央即将落幕之感。

    基于主题的推荐理由自动抽取,在建模的过程中面对的问题主要包括如下三点:

    1)标签数量较多、标签种类不固定。目前已有的标签数量在百级别,同时随着热点的持续挖掘,需要支持更多的细粒度标签;

    2)业务数据质量参差不齐。由于业务数据主要来源于用户评论、旅拍文章,因此数据内容、质量差异较大,并且存在大量噪音,对模型的拟合、泛化能力要求较高;

    3)有监督数据获取难度较高。由于内容素材的主题相关程度、内容优质程度难以量化、评估具有主观性,因此从海量参差不齐的数据中获取质量稳定、数量相当的有监督数据难度较大;

    本文基于上述问题,从流程框架,模型选择,数据增强,模型优化四个角度进行了详细的描述。通过引入预处理流程,基于情感模型/质量模型等机制进行内容等级的初步筛选,基于无监督语义模型进行主题维度的初筛,通过这些前置模块,提升整体数据的质量。同时,在模型的选择维度,对比了分类模型和匹配模型的特性,从模型的泛化和快速扩充的能力角度,阐述了匹配模型的优势。在基于匹配模型的基础上,详细介绍了如何快速有效地进行数据的自动获取。最后,从迁移学习和主题优化维度介绍了在相对小样本和存在歧义性的时候模型优化和训练的trick。

    二、流程框架

    由于用户数据基数大、复杂性高、质量参差不齐的特性,我们将整体框架分为了召回、粗排、精排3个模块,同时结合多种数据筛选策略,以保证最终的筛选效果,如图2所示。

    图2 推荐理由抽取框架图

    召回模块通过标签关键词对用户数据进行定向召回,并利用情感分类模型、质量模块,词法分析等维度对召回内容进行筛选,从而在海量数据中初步打捞情感正向、可能存在主题相关和具有信息含量的文本。这里的质量模型主要对一些旅游不相关的内容进行了建模,如明显的广告文案。在词法维度中,则考虑了停用词/名词/形容词/动词等维度的占比。

    粗排模块基于无监督匹配的方法对召回文本做进一步的语义筛选,将候选集中与标签相关度较低的部分剔除,在降低匹配模型运算的时间成本的同时,还可以通过对开放域数据分布设限,减少后续主题匹配模型的排序压力。

    精排模块的核心是主题匹配模型,在该主题模型中,会从内容优质角度以及主题相关性角度进行建模。在此基础上,结合荣誉度模型,句长等维度进行加权融合。这样可以满足不同业务场景对于推荐理由在字数或者表达推荐性上的个性化要求。其中,荣誉度模型,是对具有网红打卡等推荐性维度内容的建模,相对于一般的情感模型,在内容的推荐上具有更大的优势。

    三、模型选择

    由于我们需要支持的标签种类较多,并且也需要快速的去扩充和支持更多新标签。在此同时,各个标签对应的训练数据的分布差异也较大,难以控制和平衡。因此我们基于匹配模型进行建模。

    对于一般的分类问题,标签数量多、不固定以及数据数量少、不平衡的问题会极大提高分类模型的学习难度:多分类任务在训练时一般使用hard target的交叉熵作为目标函数,尤其在小样本情况下,这种非1即0的训练模式非常容易导致模型对训练集产生over-fitting或over-confident,即模型为了”强行”区分某些相近类别之间的训练样本,将类别无关的关键词或模式误学习为区分类别的关键因素,该现象在标签数量越多时越为明显。

    其次,标签体系会随着数据挖掘的进行不断优化、完善,如果使用分类模型,当标签体系增加时,分类模型都需要添加相应类别的数据并重新训练。最后,标签数量多与训练数据少、样本分布不平衡等因素相互作用,导致各标签训练集稀疏,对模型训练带来较大困难,即便借助上下采样进行数据均衡,也很难在较大量标签的情况下取得一个普遍好的分类效果。

    对于匹配模型而言,该方法是对文本语义进行建模,进行输入文本语义之间的pairwise度量,对标签样本分布不均匀问题的鲁棒性相对更高,并且需要新增标签时也具备一定的可扩展性,不需要重新训练模型,只要选定合适的标准Query就可以有较好的泛化效果。

    文本匹配是一种用于度量文本之间相似性/相关性的NLP技术,也是自然语言理解的核心问题之一,目前已经在信息检索、问答匹配、对话系统等场景中得到了广泛应用。

    匹配模型可以分为表示型、交互型。表示型模型使用参数共享的编码器对两个输入文本分别、独立进行语义特征抽取,通过余弦距离、欧式距离等方式对两个文本的相似度进行度量,其优点是模型复杂度相对较低,并且文本可以通过表示模型对文本特征进行预处理和持久化保存,能够极大降低匹配的时间成本,该种类代表模型包括DSSM、CDSSM, MV-LSTM, ARC-I, CNTN, CA-RNN,MultiGranCNN等。交互式模型则在对文本进行向量化表示之后,直接利用卷积、注意力网络等方式对文本的局部相似特征进行抽取,相比表示型模型,交互式方法更容易捕捉两个文本之间的相似特征,代表模型有ARC-II、MatchPyramid、DeepMatch、ESIM、ABCNN、BIMPM等。

    因此,我们这边选择基于交互式的匹配模型进行建模。在建模的过程中,需要同时从主题相关和内容优质性两个维度进行建模。正样例的选择,则是同一主题下优质推荐理由的pairwise组合,而负样例则包括两种模式,一是优质推荐理由与同主题下劣质推荐理由的组合,二是不同主题下优质推荐理由组合。通过对正负样本组合的选择和采样来强化主题匹配模型中内容优质性和主题相关性的信息。

    四、数据增强

    对于主题匹配模型的训练样本,我们要求具有优质性和主题相关性。一个好的主题相关的推荐理由,需要整句围绕相关主题,提供相关的丰富详细的描述。而在一般的UGC数据中,这种优质的表达占比相对较少,一般用户会围绕多个主题点简单的进行描述。在不同业务场景下,呈现的数据分布也是差异较大,如景点类较酒店类,在UGC内容的表达上,相对丰富和详尽。训练数据是模型的基本,它的质量决定了最终效果,我们对于训练数据则具有更高的要求。

    对于较多的标签维度,我们如何快速的获取到一定量级的优质数据成为重中之重的事情。因此,在监督数据有限的情况下,我们通过数据增强技术,引入一定数量的、误差在可容忍范围内的无监督数据充当有监督数据,并加入到训练数据中,从而有效提高模型效果。主要从基于规则和基于回译两个维度进行了数据增强。

    基于规则的数据增强包括通用数据的增强和欠拟合数据增强。在进行通用数据增强时,应重点关注真实场景中出现频次较高、训练数据占比较低的标签,其次关注测试集表现较差、训练样本占比过低的标签,通过引入一定量内容优质、主题相关的增强数据,缓解标签分布失衡的问题、提高模型在增强标签上的学习及泛化效果。

    一般而言,优质素材倾向于有更多的修饰词、荣誉度模式,因此如图3所示,我们结合句法分析、词性标注与模式匹配的方式对原始语料做内容质量筛选,同时利用主题关键词分布和无监督语义匹配进行主题相关度把控,从而获得质量较高的无监督数据加入训练数据中。欠拟合数据增强是指通过对开放数据集的预测结果进行分析,将模型学习效果较差的模式进行批量抽取、增强,以此强化模型对部分文本模式的识别、拒识别效果,但应注意增强数量不宜过多,否则容易导致模型对该类型的文本模式产生过拟合。

    在超优选模块中我们复用了荣誉度匹配、词法分析、无监督语义匹配等召回、粗排模块中的组件,但是与第二节中的召回模块各个模型提供的融合功能不同,超优选模块是为了批量获得质量较高、无需人为校验的数据,应以精度优先,因此各模块的限制条件更高;而召回模块中,则是为了给精排模块初步提供一个受限候选集,故以召回优先,各模块限制条件相对较低。通过将优质数据源(如高质量旅拍文章、景点简介等)与超优选模块相结合,获得的增强数据经抽样校验后可用率约为93%,作为增强数据在可允许的误差范围内。

    图3 数据增强框架图

    基于数据回译的增强是指利用机器翻译技术将有监督数据进行多轮翻译,并把最终翻译回中文的结果加入到训练集中进行训练。回译可以在保持文本语义基本不变的前提下,增加文本句式、用词的多样性,从而防止模型(尤其是交互式匹配模型)对某种单一句式、词语产生过拟合。该方法对翻译质量有较高要求,并且难免会引入部分噪音数据,因此应该在可接受的误差范围内,加入适量回译数据协同训练,本项目中回译数据与有监督数据比例约为1:3。

    通过对重要标签的数据增强,相比baseline模型,增强后的模型在各标签测试集上的F1值平均提升约10.5%。

    五、模型优化

    5.1 引入先验

           

    当数据集较少时,另一种能够较好提高模型泛化性、降低任务学习难度的方法就是为模型引入先验知识。

    表2 交叉主题范例

    推荐理由

    古典园林

    落日

    这里和颐和园、拙政园、狮子林并称中国四大古典园林,园内假山流水十分美丽,日落也不错

    相似

    不相似

    这座建筑由贝聿铭设计,独到地结合了中国特色古典园林风格和现代设计理念,同时顶楼也被评为××最美日落观赏地之一

    通过对业务场景的分析发现,由于标签数量较多、覆盖面较广,一条文本经常会涉及到多个主题,以表2为例,表中两条文本都涉及到了古典园林、落日两个主题,在古典园林的主题下,两条文本都是关于古典园林的优质推荐理由,匹配模型输出应为1;在落日的主题下,前者只是对落日顺带一提,后者则有对其落日的客观、积极评价,此时模型期望输出为0。

    由此可以看出,两条文本是否匹配并不绝对,而是与假定的主题有关,直接对文本是否相似进行建模并不合理,因此,我们考虑在进行文本匹配时加入主题特征,以此降低任务的学习难度以及“困惑”度。其次,我们通过卡方检验加入与匹配结果强相关的文本特征,例如主题关键词所在短句窗口内的字符个数、文本是否满足荣誉度模式等,加入这些在有限样本下难以直接被模型捕捉的特征,同样可以降低模型的学习难度。

    图4 模型框架图

    为了在预训练模型中引入预设的先验知识,本项目尝试了两类方案:即在Input层中引入(如图4中方案1)或在Task层中引入(如图4中方案2、3)。在Input层中引入先验的方式具体指,将先验知识在输入层与两段文本分别进行拼接、并代替原文本作为预训练模型的输入,则模型输出即为强化了主题与其他先验知识的语义特征的交互结果;方案2中则是首先将先验知识通过嵌入矩阵转化为稠密向量,并将该向量作为query、将文本的语义交互结果作为Key和Value,构建一个Attention网络。

    该方法假设预训练模型抽取的是文本之间的通用相似特征,因此使用Attention网络对通用相似特征进行定向提取,将更多注意力给予主题相关的维度、对主题无关的特征维度稀疏化,从而得到一个与先验知识关联紧密的语义相似度表征;方案3与方案2类似,都是在Task层中利用先验知识对交互结果施加影响,不同之处在于方案3中将Attention网络替换为了稠密向量与交互结果构建而成的相似度矩阵,用以代表交互结果在各个主题维度下的相似度结果。

    相比之下,方案1的计算开销最小,方案3其次,方案2由于要引入注意力机制因此复杂度较高,但经过实践验证效果也相对更好,可以将各标签测试集的F1值提升约2%。

    5.2 迁移学习

           

    基于相关任务间知识可迁移的假设,迁移学习通常指将另一数据集或任务下训练得到的模型作为当前任务初始模型的做法[1],由于在大多数业务场景下监督数据有限、数据标注所需时间与人力成本较高,因此预训练模型与迁移学习相结合的方式已经成为比较主流的baseline构建方式。

    从初始参数的角度来看,预训练模型经过大量无监督数据训练之后,能够提供一个更好的初始位置,降低下游任务训练时间、提高模型学习效果;从模型的特征提取能力来看,预训练模型能够从文本中提取语义、词性、句法等高阶特征,从而可以快速适应各种复杂的下游任务[2]。

    根据论文研究以及本项目的实践结果发现,预训练模型在进行下游任务微调时存在微调结果波动较大的问题(在小数据集下尤为明显)。引起该现象的原因被解耦为两个关键因素:下游任务层初始化时带来的随机性和训练时的batch顺序带来的随机性[3]。由于batch顺序带来的随机性的可探究性较差,且数据集增减、下游任务变化时结论不可迁移。因此,降低微调不稳定性的突破点在于减弱初始参数的影响:

    1)选取合适的初始化随机数种子:如图5,通过在不同随机数种子下对多个公开测试集进行多轮实验发现,使用的随机数种子不同时,模型微调结果的倾向也有所不同,即总存在一些“优质”随机数种子(best WI),使模型微调结果的平均分数更高,存在部分“劣质”随机数种子(worst WI),使模型微调结果的平均分数较差。不同的种子意味着不同的参数初始位置,好的初始位置抵达最优点所需的训练时长更少,因此优质的随机数种子是小样本学习的关键,对模型持久优化、迭代也至关重要。

    该论文中指出,当模型使用截断正态分布初始化方法且seed=12时,能够在二分类中取得普遍较好的微调结果。由于本项目的下游任务层与二分类任务的任务层相似,因此使用了与论文中相同的初始化方法。经实践验证,该初始化方式的确能够取得较为稳定、良好的微调结果。如果下游任务层与本项目不同,可以通过多次实验寻找一个能够使模型微调结果普遍较好的种子。

    图5 随机数种子对微调结果的影响

    2)使用更加标准的Adam算法:目前对预训练模型进行下游任务微调时,使用的最普遍的优化器是BERT自带的BERTAdam算法。该算法是标准Adam算法的变种,由图6可以看出,相比标准Adam算法缺少了偏差校验的步骤,因此对学习率有较大影响(尤其是微调早期),也被认为是预训练模型微调结果波动较大的主要因素之一[4]。

    在使用BERTAdam进行预训练时,由于训练集足够大、迭代步数足够多,BERTAdam与标准Adam的学习率会逐渐趋向一致,因此缺少偏差校验所带来的负面影响微乎其微;但是当使用BERTAdam进行下游任务微调时,如果微调数据集较少,学习率差距较为显著,会使微调结果产生较大波动。本项目中使用了标准Adam和BERTAdam分别对模型进行了训练,使用标准Adam的微调结果比BERTAdam的微调结果要高5~10%左右。

    图6 BERTAdam与Adam算法流程

    3)使用Layer-wise学习率:由于下游任务层在初始化时所使用的是随机参数,因此相比预训练层,任务层需要更加充分的训练才能收敛。如果在微调时使用的学习率较小,容易导致任务层欠拟合,扩大参数初始值对微调结果的影响。如果使用的学习率较大,又容易导致预训练模型的特征抽取模块产生过拟合,因此可以考虑对任务层、预训练层使用不同大小的学习率进行迭代。此外,对于预训练模型内部,底层网络通常抽取的是文本的通用特征,顶层网络则更倾向于抽取任务相关的特征,所以顶层网络相比较之下需要的训练时间也更长。

    综合以上结论,可以使用自上而下逐层衰减的学习率进行训练,以缓解模型欠拟合、过拟合的问题,该方法在小数据集或任务层复杂度较高的情况下能够起到较好的效果[5-6]。

    六、总结

           

    我们通过主题推荐理由自动抽取框架和流程,在整体上约束内容抽取的基本质量,通过匹配模型更好地支持多样化的标签维度,并且通过数据增强、迁移学习、先验加强等方式,在监督数据有限的情况下,对文本的标签相关度、内容优质程度进行了有效充分的建模。

    同时,本项目中仍存在一些问题需要做进一步优化,首先可以向模型引入体系化的标签先验知识,根据刻画内容的不同,标签集合也可以分为多个相似标签簇甚至层级标签,例如古迹和古典园林、皇宫等标签之间的优质推荐理由相似性更高,和江河湖、森林等标签的推荐理由相似性较低,这种标签之间的相似相关性通过one-hot无法表示,因此可以考虑利用图网络引入更加高级的先验知识;其次,可以使用公开数据集先进行task的微调,强化预训练模型对文本匹配任务的理解,最后再进行数据集的微调,该方法也被部分场景下证实有较好的效果。

    参考文献

    [1] Yosinski J, Clune J, Bengio Y, et al. Howtransferable are features in deep neural networks?[C]//Advances in neuralinformation processing systems. 2014: 3320-3328.

    [2] Devlin J,Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformersfor language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

    [3] Dodge J,Ilharco G, Schwartz R, et al. Fine-tuning pretrained language models: Weightinitializations, data orders, and early stopping[J]. arXiv preprintarXiv:2002.06305, 2020.

    [4] Zhang T, Wu F, Katiyar A, et al. RevisitingFew-sample BERT Fine-tuning[J]. arXiv preprint arXiv:2006.05987, 2020.

    [5] Howard J,Ruder S. Universal language model fine-tuning for text classification[J]. arXivpreprint arXiv:1801.06146, 2018.

    [6] Clark K,Luong M T, Le Q V, et al. Electra: Pre-training text encoders as discriminatorsrather than generators[J]. arXiv preprint arXiv:2003.10555, 2020.

    【推荐阅读】



     “携程技术”公众号

      分享,交流,成长

    展开全文
  • 使用CRF++进行命名实体识别

    千次阅读 2017-08-03 16:18:28
    首先明白什么是命名实体...比较三个算法的缺点,本文使用CRF工具CRF++来进行实验命名实体识别。 CRF++在windows下面不需要安装,只需要下载二进制文件,下载地址https://drive.google.com/drive/folders/0B4y35

    首先明白什么是命名实体识别,就是通过自然语言处理获取到一段话中的实体(人名,地名,机构名,也可以是医学症状)。
    命名实体识别的算法有HMM,MEMM,CRF。比较三个算法的优缺点,本文使用CRF工具CRF++来进行实验做命名实体识别。
    CRF++在windows下面不需要安装,只需要下载二进制文件,下载地址

    https://drive.google.com/drive/folders/0B4y35FiV1wh7fngteFhHQUN2Y1B5eUJBNHZUemJYQV9VWlBUb3JlX0xBdWVZTWtSbVBneU0

    然后看CRF++官方文档

    https://taku910.github.io/crfpp/

    并且达观数据给出了训练的例子

    http://zhuanlan.51cto.com/art/201705/540693.htm

    这样我们就可以订制自己的命名实体识别系统。

    展开全文
  • Python 命名实体识别(NER) 库 使用指南

    千次阅读 2019-12-21 16:55:05
    最近工作中需要使用命名实体识别来一版人名及机构名的预识别demo,评估了独立训练一套NER模型所耗费的标注成本巨大,加上目前只是对该需求进行demo版本的开发,所以花了一段时间对目前现有的开源 NER 工具包进行了...

    一、前言

    最近工作中需要使用命名实体识别来做一版人名及机构名的预识别demo,评估了独立训练一套NER模型所耗费的标注成本巨大,加上目前只是对该需求进行demo版本的开发,所以花了一段时间对目前现有的开源 NER 工具包进行了调研及优缺点评估。

    这次主要使用的开源 NER 工具包有:

    • StanfordCoreNLP

     https://stanfordnlp.github.io/CoreNLP/

    • Hanlp

    http://www.hanlp.com/

    • foolNLTK

    https://github.com/rockyzhengwu/FoolNLTK

    • LTP

    http://www.ltp-cloud.com/

    现在将安装步骤,使用方法,及一些优缺点分析记录在此。


    二、StanfordCoreNLP

    StanfordCoreNLP 是斯坦福大学发布的 NLP 处理工具,StanfordCoreNLP 的源码使用 Java 编写,目前 Python 可以用两种方法进行调用,一种是使用 StanfordCoreNLP 库,是对 StanfordCoreNLP 进行了 Python 封装。而另一种方法是直接使用 Stanford 官方发布的 Python 版本 StanfordNLP。这里介绍第一种方式。

    1.安装方法

    (1) 首先  pip install stanfordcorenlp 

    (2) 其次 由于其源码为 JAVA 编写,所以需要 JDK1.8 及以上版本的支持,下载安装 JDK1.8

    (3) 下载 StanfordCoreNLP 的相关文件 ,主要是 相关语言的 JAR 模型,以及 CoreNLP 3.9.2

    (4) 解压下载好的 CoreNLP 文件,并将 JAR 模型放在加压好的文件夹中

    以上就完成了安装准备工作,可以开始使用 StanfordCoreNLP 来进行分词,词性标注,命名实体识别等工作了。

    2.调用方法

    接下来,记录一下 使用 StanfordCoreNLP 进行 NER 时的调用方法。

    from stanfordcorenlp import StanfordCoreNLP
    
    # 加载模型
    stanford_model = StanfordCoreNLP(r'./stanford-corenlp-full-2018-02-27', lang='zh')
    
    text = "张三和李四在2019年3月23日在北京的腾讯技术有限公司一起开会。"
    
    res = stanford_model.ner(text)

    调用方法很简单,res 的输出为:

    [('张三', 'PERSON'), ('和', 'O'), ('李四', 'PERSON'), ('在', 'O'), ('2019年', 'DATE'), ('3月', 'DATE'), ('23日', 'DATE'), ('在', 'O'), ('北京', 'STATE_OR_PROVINCE'), ('的', 'O'), ('腾讯', 'ORGANIZATION'), ('技术', 'ORGANIZATION'), ('有限', 'ORGANIZATION'), ('公司', 'ORGANIZATION'), ('一起', 'O'), ('开会', 'O'), ('。', 'O')]

     可以看出,对人名、时间、地名、机构名的识别还是比较准确的。

    StanfordCoreNLP 也提供了线上体验的 Demo,可以在 这里 进行 NER 的线上体验。


    三、Hanlp

    Hanlp 的源码也是由 Java 编写,所以这意味着你在使用 Hanlp 时,也需要安装 JDK 1.8,以及配置你的 Java 环境变量。

    1.安装方法

    (1) 首先 pip install pyhanlp

    (2)  首次使用时会自动下载 data 数据,若下载过慢的话,可以在 GitHub下的配置页面 进行手动配置,自行下载 data 数据,将其放在 pyhanlp 安装目录的 static 目录下面。

    以上就完成了安装准备工作,可以开始使用 Hanlp 来进行分词,词性标注,命名实体识别等工作了。

    2.调用方法

    调用方法同样很简单。

    from pyhanlp import *
    
    # 加载模型
    ha_model = HanLP.newSegment()
    
    text = "张三和李四在2019年3月23日在北京的腾讯技术有限公司一起开会。"
    
    res = ha_model.seg(text)
    print(res)

     使用 HanLP.newSegment() 方法实现的其实是词性标注的功能,当需要识别人名、地名、机构名时,需要在方法后加上相应的后缀。

    # 中国人名识别
    ha_model = HanLP.newSegment().enableNameRecognize(true)
    
    # 地名识别
    ha_model = HanLP.newSegment().enablePlaceRecognize(true)
    
    # 机构名识别
    ha_model = HanLP.newSegment().enableOrganizationRecognize(true)

    调用结果:

    [张/q, 三和/nz, 李/ng, 四/m, 在/p, 2019/m, 年/qt, 3月/t, 23/m, 日/b, 在/p, 北京/ns, 的/ude1, 腾讯/ntc, 技术/n, 有限公司/nis, 一起/s, 开会/vi, 。/w]

     从结果来看,Hanlp 的命名实体识别的效果较 StanfordCoreNLP 来看不是很令人满意,而我在使用 Hanlp 来做 命名实体识别的任务时,也是通过归类词性来实现的,例如将词性为 “ni”, "nis", "nic", "nit" 的词语都归纳为机构名。具体的 Hanlp 的词性对照表在 这里


    四、FoolNLTK

    FoolNLTK 基于 Bi-LSTM 训练而成,在调用时会依赖 TensorFlow,在分词,词性标注,以及命名实体识别时都有较高的准确率。

    1.安装方法

    FoolNLTK 的安装也很方便,只需要 pip install foolnltk,依赖的 TensorFlow 会自动安装,不需要配置其他环境以及下载其他模型。

    2.调用方法

    FoolNLTK 的调用也非常简单,不需要预加载模型,直接 import 后就可以进行预测,第一次预测时会对模型进行加载,会消耗一定的时间,后续调用模型时的速度都很快。

        import fool
    
        text = "张三和李四在2019年3月23日在北京的腾讯技术有限公司一起开会。"
    
        res = fool.analysis(text)
        print(res)

    调用结果:

    ([[('张三', 'nr'), ('和', 'c'), ('李四', 'nr'), ('在', 'p'), ('2019年', 't'), ('3月', 't'), ('23日', 't'), ('在', 'p'), ('北京', 'ns'), ('的', 'ude'), ('腾讯', 'nz'), ('技术', 'n'), ('有限公司', 'n'), ('一起', 's'), ('开会', 'vi'), ('。', 'wj')]], [[(0, 3, 'person', '张三'), (3, 6, 'person', '李四'), (6, 17, 'time', '2019年3月23日'), (17, 20, 'location', '北京'), (20, 29, 'company', '腾讯技术有限公司')]])

     调用结果中的第一项为词性识别的结果,第二项为命名实体识别的结果,可以看到识别的效果还是非常好的。


    五、LTP

    LTP 为哈工大开发的中文 NLP 开源工具,这里使用的也是 LTP 的 Python 封装版本 pyltp。

    1.安装方法

    (1) pip install pyltp 首先 pip 安装 pyltp 库。

    (2) 在 LTP 的模型页面 下载模型,这里要注意 pyltp 库版本需要和模型的版本对应。在 这里 查看版本的对应情况。当版本不对应时,加载模型会出现报错。

    2.调用方法

    调用 LTP 时,也需要首先对模型进行加载。

        from pyltp import Segmentor, Postagger, NamedEntityRecognizer
        import os
    
        LTP_DATA_DIR = r'C:/Users/1V994W2/PycharmProjects/ppt_ner/ltp_data_v3.4.0'
    
        segmentor = Segmentor()
        segmentor.load(os.path.join(LTP_DATA_DIR, "cws.model"))
    
        postagger = Postagger()
        postagger.load(os.path.join(LTP_DATA_DIR, "pos.model"))
    
        recognizer = NamedEntityRecognizer()
        recognizer.load(os.path.join(LTP_DATA_DIR, "ner.model"))
    
    
        text = "张三和李四在2019年3月23日在北京的腾讯技术有限公司一起开会。"
    
        words = segmentor.segment(text)
        print(list(words))
        postags = postagger.postag(words)
        print(list(postags))
        netags = recognizer.recognize(words, postags)
        print(list(netags))

    需要注意的是,在试用 LTP 进行命名实体识别时,不能像其他开源库一样,直接输入句子进行识别,而首先需要调用 LTP 的分词工具 Segmentor 对文本进行分词,在使用词性标注工具 Postagger 对分词好的句子进行词性标注,最后在进行命名实体识别。LTP_DATA_DIR 为下载的 LTP 模型解压后的路径,进行各类 NLP 任务时需要加载对应的模型。

    调用结果:

    ['张三', '和', '李四', '在', '2019年', '3月', '23日', '在', '北京', '的', '腾讯', '技术', '有限公司', '一起', '开会', '。']
    ['nh', 'c', 'nh', 'p', 'nt', 'nt', 'nt', 'p', 'ns', 'u', 'nz', 'n', 'n', 'd', 'v', 'wp']
    ['S-Nh', 'O', 'S-Nh', 'O', 'O', 'O', 'O', 'O', 'S-Ns', 'O', 'B-Ni', 'I-Ni', 'E-Ni', 'O', 'O', 'O']

     以上分别为分词,词性标注于命名实体识别的结果。LTP 采用 BIESO 标注体系。B 表示实体开始词,I表示实体中间词,E表示实体结束词,S表示单独成实体,O表示不构成命名实体。LTP 提供的命名实体类型为:人名(Nh)、地名(Ns)、机构名(Ni)。B、I、E、S位置标签和实体类型标签之间用一个横线 - 相连;O标签后没有类型标签。详细标注请参考 命名实体识别标注集 。


    六、Bagging

    四种 NER 的开源库互有优势,所以在使用时,我采用 Bagging 的方法将它们集成起来使用,每种库给出自己的识别结果,多数投标得出最终的识别结果。

    最终经过部门标注同学的标注,集成的 NER 识别工具的准确率达到 75% 左右,虽然离上线要求还有一定的差距,但使用其对文本进行预标注,可以大幅加快标注同学的数据标注时间,也算是起到了一定的节约人力成本的作用。

     

     

    如有问题欢迎指正,转载请注明出处。

    展开全文
  • JPA官方推荐的多表关联查询使用不便,接触的有些项目可能会使用JPA 简单查询,Mybaits复杂查询。所以想要寻找一种好用的解决方案。JPA多表关联的实现方式1.使用Specification实现映射关系匹配,如@ManyToOne等2....
  • 而且通过活动,美团购买推荐获得的用户价格成本越来越高,实体店急需转型私域流量池。 实体店打造私域流量池有什么好处: 1、直接降低营销成本。 2、防止老客户流失、培育信任感。 3、更有助于塑造品牌。
  • 返回map与返回实体缺点对比: 优点:1、简单方便(只需要sql的映射就可以了) 2、减少代码量(省去了写实体类) 缺点: 1、阅读性差,维护代码时需查看页面和sql映射文件 2、不符合面向对象思想,不符合...
  • EF缺点的理解

    2019-05-18 10:20:00
    原先用的是三层架构中ADO.NET底层开发,纯手工sql语句拼装。后来遇到一个MVC+EF项目,体会到了EF的强大性。 它是微软封装好一种ADO.NET数据实体模型,将数据库结构以ORM模式映射到应用程序中。 优点: 1.简洁的...
  • 贝贝网 母婴产品的,母婴品牌最注重的就是实体感觉,婴儿皮肤不能过度刺激,所以线上不好销售; 当当网 主营书籍类业务,书籍质量,正品有保障,大部分都是出版社直接供应,但是价格方面过高; 蘑菇街 主营年轻...
  • dwr和query的缺点

    千次阅读 2013-11-06 10:01:27
    dwr 优点: 1 .可以直接调用java类。... 转换和定义相同类型的js 对象由框架完成,只要简单实体映射转换配置) 4. 可以较为简单的实现服务器推技术 缺点: 1.暴露了后台方法。 2.只能使用java作为后台
  • 这个笔记的初衷是供自己快速复习查找合适的算法,基本以各算法的缺点与条件为主,省略推导过程和公式,所以分享出来也是供《机器学习》一书的读者复习使用,或仅仅想简单了解或查找机器学习的一些常用算法及数据...
  • 持这种想法私域流量的企业,往往最终受制在引流到微信好友,或者刷刷屏广告没有效果失败告终。 私域流量运营,是通过鱼饵引流将目标人群圈到自由鱼池里,然后通过优质价值的内容输出,精细化的用户运营完成产品的...
  • JPA使用nativequery多表关联查询返回自定义实体

    万次阅读 热门讨论 2018-07-18 19:28:58
    JPA官方推荐的多表关联查询使用不便,接触的有些项目可能会使用JPA 简单查询,Mybaits复杂查询。所以想要寻找一种好用的解决方案。   JPA多表关联的实现方式 1.使用Specification实现映射关系匹配,如@...
  • 在上一个POCO贴子里,我提到了跟踪POCO变动的两种可行性:基于快照的变动跟踪(Snapshot based Change ... 在这个贴子里,我将对这两个选项进一步的讨论,讨论它们的缺点,以及使用它们的含意(implication...
  • 上班一族有时候工作不完也要在手机的办公软件中完成收尾工作。但实体手机的内存是有限的,总有用完的那天。这时候如果能有工具能帮他们把不常用又占内存的应用放到其他地方存储,那就再好不...
  • 在我的印象里,像“两元店”,“五元店”这类的低价零售店,是整个步行商业街道里最受欢迎,也是最热闹的店铺,不大不小的店铺里充斥着各种各样的商品。如今停下脚步回头看看,曾经的那条街道不再繁华,那些店铺也...
  • 专注于Java领域优质技术,欢迎关注作者:孤独烟 文章来自:孤独烟引言好久没写文章了,今天回来重操旧业。...因为网上有些答案是说,B树不适合文件存储系统的索引结构。如果按照那种答法,自己就...
  • 在上一个POCO贴子里,我提到了跟踪POCO变动的两种可行性:基于快照的变动跟踪(Snapshot based Change ... 在这个贴子里,我将对这两个选项进一步的讨论,讨论它们的缺点,以及使用它们的含意(implications)。我们

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 124
精华内容 49
关键字:

做优实体