processing文件可以随便命名吗 为什么我的改名字就不能打开了?

是一种定义电子文档结构和描述其内容的国际标准语言,具有极好的扩展性

是所有电子文档标记语言的起源,早在万维网发明之前“通用标言”就已存在

是1986年国际标准化组织出版发布的一个信息管理方面的国际标准(ISO 信息处理)

简单的理解就是对于数据进行结构化组织呈现,用于描述文档的显示式样或者描述文档中文字的用途

可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。

与HTML一样都是标准通用标记语言的子集,

只不过超文本标记语言被设计用来显示数据

XML被设计用来传输和存储数据.

语法上和HTML也是相似的,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的

逻辑上来说SGML是非常适合用于Web项目中的

但是SGML的固有缺点,复杂/庞大/学习成本高等

所以XML这一SGML的子集,应运而生.

比如Spring的配置文件

DOM4J使用SAX解析器把XML文档加载到内存,生成DOM对象。当然也支持事件驱动的方式来解析XML文档。

在DOM4J中,所有XML组成部分都是一个Node,

其中Branch表示可以包含子节点的节点,

例如Document和Element都是可以有子节点的,它们都是Branch的子接口。

文本节点有三个子接口,分别是CDATA、Text、Comment。

//3.使用解析器解析文档
}

GT200,扑朔迷离的NVIDIA第二代DirectX 10 GPU;一款全新设计的旗舰性能显卡,计算机图形加速领域最具奢华身份的娱乐产品已于今夜降临。

GX2这一连串耳熟能详的产品型号陆续攀顶3D性能高峰得事实在业内无可争议。也许有着“龟兔赛跑”的前车之鉴,NVIDIA在大幅领先的现状下仍然坚持不懈的快速研发新品,GT200应运而生。

GT一样,通过屏蔽硬件规格换分档次。

● 万亿次计算的单芯片

在核心型号上GT200与上一代的G9X有了巨大改变,那么在性能上GT200是否会和型号升级一样有长足进步呢?保留顶级产品象征“GTX”的Gefroce GTX 280全新旗舰产品拥有傲人的240个流处理器和512bit显存位宽,仅这两个规格在NVIDIA历史上已经是“前无古人、后无来者”,均是首次在单卡单核产品中采用的高规格配置,同时GT200还较多的改进了核心架构,在流处理器数目的攀升支持下,其理论峰值计算能力已经逼近万亿次大关,是目前全球最复杂最强悍的单个芯片。

280。这是因为G92核心是在G80核心基础上优化而得,整体核心架构设计及思路没有革命性改变,仅是将384bit显存位宽和90nm这些权宜设计革新为256bit和65nm,同时NVIO外置芯片功能回归GPU。反观GT200架构、功能上都做了重新定位和调整,所以Geforce GTX 280才是真正第二代DirectX 10产品的先驱者。

第一批送抵ZOL的Geforce GTX 280显卡有四款,除了NVIDIA提供的官方样卡之外,映众(Inno3D)、讯景(XFX)和索泰(ZOTAC)最早送测了他们自有品牌的产品,对NVIDIA最新旗舰产品的发布表示了最有力的支持,也显示出自身的强悍实力。


也许一篇文字无法真正诠释这款划时代的产品,本站将分三路出击,从本文的技术分析,从的超频测试,从的全面游戏性能测试,为大家奉上GTX280这份饕餮盛宴。

GT200 爆炸性核心规格探秘

● 如何构建运行CUDA平台

如果想要使用CUDA技术,并不是安装基于CUDA的软件即可,还需要硬件及驱动的支持,目前支持CUDA技术的GPU请看下表:

上表为目前已发布并支持CUDA的GPU,当然还要包括今天新鲜出炉的——Geforce GTX 280。

驱动程序拆包后可见CUDA的dll文件

在支持CUDA的驱动中我们能够看到nvcuda.dl_的专有文件。

也许桌面级显卡的最主要应用目前还是游戏,显卡的3D性能强弱直接影响游戏的游戏性,但是随着游戏画面的逐渐逼真和玩家需求的逐渐提高,仅仅是逼真的画面已经无法满足玩家需求,真实的物理运算越来越被重视。

PPU)“PhysX”,而PPU将和CPU以及GPU组成一个相辅相成的关系共同运算。与GPU一样,PPU将协助CPU从运算度非常复杂并非常小号资源的物理计算中解救出来,所以CPU能够更加专注其他计算从而获得更佳、更平稳的游戏效果。

PhysX的物理加速技术应用广泛

在NVIDIA产品的影响度和PhysX先进物理引擎搭配下,目前已经有150多款游戏增加了PhysX引擎支持,并有超过25000名程序员基于它开发游戏,PhysX已经成为目前普及度最高的物理引擎。

虽然Ageia的PhysX产品性能出色,但是苦于售价过高、游戏厂商接纳率低,一直没有得到大面积普及。不过NVIDIA看到Ageia的PhysX产品的优势,在2008年年初正式并购Ageia,并将PhysX物理引擎及技术引入到自己的显卡产品中。因为前文已经提到过GPU拥有强大的浮点运算能力,再配合CUDA可以实现很多非3D渲染运算,所以物理卡完全可以被显卡所吸收,而且在Geforce GTX 280这款产品开始正式实现。

PhysX引擎支持特效
PhysX得到多平台支持 基于PhysX引擎即将发布的游戏

而且值得一提的是,正如前文所说物理卡将被显卡整合,今后NVIDIA-Ageia不会再单独推出独立物理卡,如果现在购买一款支持CUDA的产品等于NVIDIA免费赠送了一款物理卡。

巨无霸!GTX 280全面观察

● Iron Man?更具未来感的整体设计

Geforce GTX 280作为目前最强大的单GPU产品,不仅要拥有前文介绍的诸多技术及功能,,还要拥有与之想匹配的物理设计及做工。与NVIDIA昔日高端产品发布一样,各品牌相关产品都将采用公版设计,起码在发布初期会是如此,这主要是为了保障各显卡品牌在初期不会因重新设计延误新品发布,同时纯公版产品能够保证最优质量。

Geforce GTX 280作为一款旗舰产品,延续了NVIDIA一贯为旗舰套用的黑色基调,确保了显卡的尊贵血脉。显卡正面散热器有点类似Geforce 9800 GTX标配散热器,不过Geforce GTX 280的散热器棱角分明,阳刚之气十足;通过查看显卡背面发现,显卡散热器整体思路与Geforce 9800 GX2相同,整个显卡被散热器包裹。

散热器风扇采用离心式风扇被设计在显卡右侧,将空气吹向显卡尾部,显卡尾部挡板留有导流孔,方便热空气释放;显卡视频输出接口采用双DVI + S-Video的组合,方便绝大多数用户使用。

● 拆解 NVIDIA史无前例的豪华供电

显卡供电模组可谓极尽豪华,为了在有限的PCB面积上设置更多相供电,使用了优质屏蔽电感搭配QFN封装的VT1165SF芯片4颗和VT238AWF芯片1颗,Volterra生产的VT1165SF和VT238AWF内置Mosfet场效应管,从而达到节省PCB空间和增强供电滤波的目的。

三代旗舰显卡PCB纵向对比

● 规模空前 超越旧日旗舰

Geforce GTX 280作为新一代的顶级单核产品,相对于前几任顶级产品设计上有何突破或者相似呢?本章节在介绍Geforce GTX 280其他PCB部位设计同时,穿插介绍与前辈对比。

Geforce GTX 280整卡设计宽大并略长于标准ATX主板,这对于用户来说需要一个拥有较大空间的机箱来满足其需求。

三款PCB供电电路对比

值得注意的是,Geforce GTX 280使用了和Geforce 8800 Ultra一样的外置功能芯片设计,从而确保GPU的核心面积和稳定性。

不过图中的NVIO2芯片上激光雕刻有ES字样,看来这颗功能芯片还在最后调试阶段。

测试平台及测试项目简介

系 统 硬 件 环 境

测试系统的软件环境

操 作 系 统 及 驱 动

合 成 测 试 软 件 和 游 戏

3Dmark 06作为上一代3DMark系列巅峰之作,所有测试都需要支持SM3.0的DirectX 9硬件,并且支持HDR特性,这款软件的最终得分里CPU性能占有不小的权重,因此它更适宜分析整个系统的3D加速能力。

3DmarkVantage是Futuremark最新推出的一款显卡3D性能测试,该款软件仅支持DirectX 10系统及DirectX 10显卡。测试成绩主要由两个显卡测试和两个CPU测试构成,整个测试软件各家偏重整机性能。

DX9游戏-使命召唤4 / 半条命2第二章

经典战争游戏续作Call of Duty 4 Modern Warfare由原一、二代制作公司Infinity Ward重新操刀,背景跳出二次世界大战战场,将前线拉至近现代中东地区的战争中。该游戏3D引擎执行效率很高,在实现接近DirectX 10级别火焰烟雾等环境特效的基础上,保证了游戏速度,是不折不扣的第一人称射击游戏重量级作品。

>>测试方式:黑夜室外/室内场景,沿同一固定路线跑完3次取平均值,Fraps计速
>>画质设定:可设置的全部最高

本游戏是Valve 2006年Half-Life2 Episode 1的续集,带来了最新故事情节和更优秀的画面表现,但游戏仍然使用Source引擎,提升的画面品质来自于更为复杂的纹理和少量新增特效,对系统负载不大,整体速度较高。

游戏类型:DirectX9 第一人称射击游戏
>>测试方式:白天室外/室内场景,开始场景一段游戏的自行录像回放
>>画质设定:可设置的全部最高

第一人称设计游戏对游戏流畅度要求非常高,不能以最低的25帧流畅度来衡量,以许多玩家的实际视觉感官认为平均40帧为基础、60帧以上为佳。

在使命召唤4和半条命2第二章中,完全成了Geforce GTX 280和Geforce 9800GX2的双雄对决,二者成绩表现平分秋色,不过以实际游戏效果而言二者没有差别,即使在X AA / 16X AF的画质下仍能保持平均60帧以上。

最新发布的极品飞车第十一部作品Need for Speed ProStreet一经发布就迅速抢过PC竞速类游戏的No.1人气。ProStreet画面风格返回三代的明亮清爽,画面质量有一定程度的改进,但对PC系统的要求并没有大幅度提高。

>>测试方式:同一弯道竞速场景,人为操作跑完3次取平均值,Fraps计速
>>画质设定:全部最高

Time Shift一年多以前就曾出现过一个PC版试玩DEMO,但是开发商方面的变化让它持续跳票。Time Shif的最新试玩DEMO不久前被放出,采用了自家研发的Saber3D引擎。从游戏画面来看相比去年的DEMO简直是天壤之别,一跃成为一流水平的第一人称射击游戏。

>>测试方式:黑夜室外场景,沿同一固定路线跑完3次取平均值,Fraps计速
>>画质设定:全部最高
>>AA、AF设定:AA在游戏中开启、AF在驱动程序面板中开启

万众瞩目的Unreal Tournament 3终于出现了DEMO,这款基于Unreal Engine 3的最新第一人称视角竞技类游戏仍然基于DirectX 9,但在游戏整体画面表现上超越了现有大部分DirectX 10游戏,更让人高兴的是它在中档配置的PC上仍然能够保证非常好的流畅度的效果。

>>测试方式:黑夜室外/室内场景,沿同一固定路线跑完3次取平均值,Fraps计速
>>画质设定:全部最高

在极品飞车11、时光穿梭和虚幻竞技场3中,性能表现与前文的两款DirectX 9游戏表现相类似。不过本环节我们关注一下各产品的反锯齿能力,尤其是在UE3引擎中的表现。

由于极品飞车11的最高分辨率仅为,无法真正发挥显卡的极限性能。在虚幻竞技场3的X AA / 16X AF画质中,Geforce GTX 280是惟一能够流畅运行的单GPU产品,而且实际性能表现与Grforce 9800 GX2不相伯仲。

DX10游戏-刺客信条 / 生化奇兵

Assassin's Creed(刺客的信条)的3Dk逼真度是不亚于Crysis的一款游戏,值得一提的是这款游戏虽然同时发布了DirectX 10和DirectX 9版本,但是据官方生成同样平台下DirectX 10的游戏效能要高于DirectX 9,这主要是游戏并没使用DirectX 10特效,而仅是使用了DirectX 10部分API优化代码,从而减轻GPU和CPU负担,对于DirectX 10 PC游戏来说这是史无前例。

>>测试方式:黑夜室外/室内场景,沿同一固定路线跑完3次取平均值,Fraps计速
>>画质设定:可设置的全部最高

恐怖风格巨作BioShock的Xbox 360版本曾被国外著名游戏媒体评价为满分。这款游戏也在PC上以DirectX 10 API规格出现,操作流畅,画面效果华丽诡异、爆炸火焰烟雾效果逼近真实,并且游戏引擎的执行效率也相当高。

>>测试方式:黑夜室外/室内场景,沿同一固定路线跑完3次取平均值,Fraps计速
>>画质设定:全部最高

在刺客信条和生化奇兵两款DirectX 10年度大作中,Geforce GTX 280一路凯歌,虽然实际成绩不济Geforce 9800 GX2,但是性能相差不多。,产生的性能差距主要流处理器数量造成的并行运算能力差距。

DX10游戏-狂野西部 / 英雄连

10游戏。它的测试内容是Flyby的过场,通过区域分别着重展示最新的3D特效,其中的重点包括几何着色器生成的粒子系统特效,复杂的材质纹理着色、AA+HDR等。

游戏类型:DirectX10 第一人称射击游戏
>>测试方式:白天室外/室内场景,开始场景一段游戏的自行录像回放
>>画质设定:可设置的全部最高

Company of Heroes(英雄连)是一款即时战略类游戏。二战是几年来长盛不衰的3D游戏题材,Company of Heroes就是从101空降师诺曼底登陆后在欧洲战场血战题材入手的最新战略游戏,不过其自带测试并非针对即时战略的实际场景,反而更像第一人称视角游戏。

>>测试方式:游戏自带性能测试工具,内容为3D实时运算的剧情过场回放
>>画质设定:全部最高

狂野西部和英雄连是两款对显卡本地内存十分敏感的游戏,拥有1024MB本地内存的三款产品分别位居前三甲。不过值得一提的是单卡双GPU产品虽然共有1024MB本地内存,但每颗GPU独享512MB,所以相对Geforce GTX 280的核心独享1024MB容量而言还是有一定性能差距,在英雄连中表现突出。

DX10游戏-孤岛危机 / 鱼雷舰艇

跳票多时、万众期待的DirectX 10游戏大作Crysis,把目前PC 3D娱乐的视觉体验发挥到极致的游戏,大量使用DirectX 10的硬件功能,对显卡的负载也提升至空前水平。

>>测试方式:游戏自带GPU性能测试工具,为3D实时运算的飞行过场回放
>>画质设定:全部最高

>>测试方式:游戏自带性能测试工具,内容为3D实时运算的战斗回放
>>画质设定:全部最高

Crysis和PT Boat Knights of Sea是两款对显卡整体综合性能要求很高的游戏,尤其是被称为游戏杀手的Crysis游戏中,仅有Geforce GTX 280能够流畅所有测试,一款单GP产品能有如此表现,可见其在规格、架构上设计的成功。

测试方案是笔者将采用Apple公司为ipod和iphone专门设计的iTunes软件做对比,将一个相同的mpeg2视频转换为320*240的iphone需求视频。

测试过程笔者并没有按照常规的单独运行测试软件、计时编码时间,而是将Badaboom和iTunes同时运行,然后用视频记录的方式直观的为各位读者展现CUDA的魅力。测试结果很明显,基于CUDA技术的Badaboom在编码完成时,iTunes仅完成了1/5左右进度,性能相差惊人。

Folding@home是斯坦福大学的一个分布式计算计划可以利用分布于全球的计算机模拟复杂的蛋白质折叠效应,是一款典型的科学计算程序。目前它有两个版本,一种是基于CPU的版本,一种是基于GPU的版本。

具体关于Folding@home如何设置及使用笔者就不在此赘述,我们直接看结果。

而且值得一提的是,笔者在使用Folding@home-GPU版时运行了图形化,所以减弱了Geforce GTX 280的运算能力,如果不实用图形化显示超过600NS/day不成问题。相比CPU的4NS/day运算能力,150倍的性能差距不用笔者再赘述谁谁强谁弱。

强强联手 SLI性能测试

为了真实展示多卡并行处理性能,笔者将每项测试成绩截图,用以证实成绩真实度。

通过成绩归类表可以计算出,双卡性能相对单卡有70%左右的性能提升,三卡性能有110%左右的提升,而且性能差距随着画质的提升而越拉越大。一款全新产品能有如此良好的兼容性和稳定性,足见NVIDIA的技术研发实力。而且通过本环节让笔者首次见识了,Crysis Very High特效绝对流畅是什么概念。

在笔者测完本环节最后一项——3-Way SLI的3Dmark Vantage Extreme后发现,笔者竟然将这个档次的世界记录打破,而且还是提升了3500多分。默认性能就有如此强劲的表现,看来Geforce GTX 280将会在发布后迅速成为DIY职业选手冲击设计界记录的最新利器。

高能≠高功耗?功耗测试

NVIDIA在Geforce GTX 280设计上不仅考虑了3D方面的性能提升,在全球呼吁节能的大环境下,NVIDIA将节能技术融入到Geforce GTX 280中。这种全新的节能技术,不同于以往的简单调整频率改变功耗,也不同于Hybrid Power需要IGP主板协助,它是通过软件侦测显卡负载状况来随时调节显卡电压和显卡频率,从根本上处理高功耗问题。

首先对比单卡功耗,Geforce GTX 280属于旗舰产品,所以它的满载功耗自然不会“环保”,它的满载峰值与双GPU的Geforce 9800 GX2旗鼓相当。不过反观待机平均显卡功耗,Geforce GTX 280却仅为145W,而且是所有测试产品中最低成绩,足见Geforce GTX 280的节能实力。

回归单核心霸主时代 GTX 280强势登场

套路出牌 单卡就要用单核

随着NVIDIA和AMD-ATI在显卡技术上的资深造诣,在现有产品基础上提升单卡性能唯有制造单卡多GPU产品,但这仅是将原来主板的多卡并联技术专一到显卡中,虽然会带来一时的高幅性能,但是随之而来的高功耗、高发热量、兼容性差无法弥补,而且这类产品售价过高根本无法普及。

而常规的单卡单GPU产品,例如Geforce GTX 280不仅拥有傲人的性能,与双GPU产品Geforce 9800 GX2打成平手,而且价格相对合理、兼容性、高功耗等问题都得以解决。

不过需要了解的是,虽然Geforce GTX 280在顶级产品中各方面已经非常出色,但是对于普通用户而言,如果想要真实发挥它的实际性能,一套价格不菲的配套平台不可或缺。

改升级时机到了嘛?

对于这个问题笔者很难回答,因为用户成千上万自然需求各不相同,对于那些追求极致性能并且资金充裕的用户来说,尝鲜是一种乐趣,升级最新的Geforce GTX 280当然不能错过。而对于另外一部分用户,不妨期待性价比更为突出的Geforce GTX 260。

虽然笔者出产品性能外并不看好单卡多GPU产品,但是NVIDIA与AMD-ATI两者间只要继续搞性能“军备竞赛”,这种单卡多GPU就不会停止研发脚步。

不过笔者前文也曾提及,G200核心已经遇到了很多G80时代的问题,例如制程工艺难以承载庞大的晶体管,架构设计有待深度优化,产品成本过高等,也许在不久的未来就会出现全新的产品来弥补这些缺憾。但是无论怎样,Geforce GTX 280的表现还是彻底折服了笔者,这不仅仅是因为强悍的3D性能,在其他方面例如CUDA技术、PhysX引擎等都深深的吸引了笔者。

“我”不是游戏机 而是超级计算机

Computing,显卡可以凭借百倍于CPU的浮点运算能力轻松赶超现有超级计算机架构,为科研等高、精、尖行业服务,起到推波助澜的深远作用。

NVIDIA对自己全新发布的旗舰产品向来严格把控,这也就造成首测时收到的产品除LOGO贴纸或散热器外没有任何不同。而且旗舰产品所采用的核心本身良品率较低,所以各厂商也不会推出非公版产品。本次测试共收到5家产品分别如下(根据产品送测先后顺序):

}

一 、什么是命名实体识别?

命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。通常包括两部分:(1)实体边界识别;(2) 确定实体类别(人名、地名、机构名或其他)。

NER是NLP中一项基础性关键任务。从自然语言处理的流程来看,NER可以看作词法分析中未登录词识别的一种,是未登录词中数量最多、识别难度最大、对分词效果影响最大问题。同时NER也是关系抽取、事件抽取、知识图谱、机器翻译、问答系统等诸多NLP任务的基础。

NER当前并不算是一个大热的研究课题,因为学术界部分学者认为这是一个已经解决的问题。当然也有学者认为这个问题还没有得到很好地解决,原因主要有:命名实体识别只是在有限的文本类型(主要是新闻语料中)和实体类别(主要是人名、地名、组织机构名)中取得了不错的效果;与其他信息检索领域相比,实体命名评测预料较小,容易产生过拟合;命名实体识别更侧重高召回率,但在信息检索领域,高准确率更重要;通用的识别多种类型的命名实体的系统性能很差。

命名实体识别的研究主体一般包括3大类(实体类、时间类和数字类)和7小类(人名、地名、机构名、时间、日期、货币和百分比)命名实体。评判一个命名实体是否被正确识别包括两个方面:实体的边界是否正确;实体的类型是否标注正确。

从语言分析的全过程来看, 命名实体识别属于词法分析中未登录词识别的范畴。命名实体识别是未登录词中数量最多、识别难度最大、对分词效果影响最大的问题,同时它也是信息抽取、信息检索、机器翻译、问答系统等多种自然语言处理技术必不可少的组成部分。

事件检测:地点、时间、人物是时间的几个基本构成部分,在构建事件的摘要时,可以突出相关人物、地点、单位等。在事件搜索系统中,相关的人物、时间、地点可以作为索引关键词。事件的几个构成部分之间的关系,从语义层面更详细的描述了事件。

信息检索:命名实体可以用来提高和改进检索系统的效果,当用户输入“重大”时,可以发现用户更想检索的是“重庆大学”,而不是其对应的形容词含义。此外,在建立倒排索引的时候,如果把命名实体切成多个单词,将会导致查询效率降低。此外,搜索引擎正在向语义理解、计算答案的方向发展。

语义网络:语义网络中一般包括概念和实例及其对应的关系,例如“国家”是一个概念,中国是一个实例,“中国”是一个“国家”表达实体与概念之间的关系。语义网络中的实例有很大一部分是命名实体。

机器翻译:命名实体的翻译常会有一些特殊翻译规则,例如中国人民翻译成英文时要使用名字的拼音来表示,有名在前姓在后的规则,而普通的词语要翻译成对应的英文单词。准确识别出文本中的命名实体,对提高机器翻译的效果有重要的意义。

问答系统:准确的识别出问题的各个组成部分特别重要,问题的相关领域,相关概念。目前,大部分问答系统都只能搜索答案,而不能计算答案。搜索答案进行关键词的匹配,用户根据搜索结果人工提取答案,而更加友好的方式是把答案计算好呈现给用户。问答系统中有一部分问题需要考虑到实体之间的关系,例如“美国第四十五届总统”,目前的搜索引擎会以特殊的格式返回答案“特朗普”。

命名实体识别当前并不是一个大热的研究课题,因为学术界部分认为这是一个已经解决了的问题,但是也有学者认为这个问题还没有得到很好地解决,原因主要有:命名实体识别只是在有限的文本类型(主要是新闻语料中)和实体类别(主要是人名、地名)中取得了效果;与其他信息检索领域相比,实体命名评测预料较小,容易产生过拟合;命名实体识别更侧重高召回率,但在信息检索领域,高准确率更重要;通用的识别多种类型的命名实体的系统性很差。

同时,中文的命名实体识别与英文的相比,挑战更大,目前未解决的难题更多。英语中的命名实体具有比较明显的形式标志,即实体中的每个词的第一个字母要大写,所以实体边界识别相对容易,任务的重点是确定实体的类别。和英语相比,汉语命名实体识别任务更加复杂,而且相对于实体类别标注子任务,实体边界的识别更加困难。

汉语命名实体识别的难点主要存在于:(1)汉语文本没有类似英文文本中空格之类的显式标示词的边界标示符,命名实体识别的第一步就是确定词的边界,即分词;(2)汉语分词和命名实体识别互相影响;(3)除了英语中定义的实体,外国人名译名和地名译名是存在于汉语中的两类特殊实体类型;(4)现代汉语文本,尤其是网络汉语文本,常出现中英文交替使用,这时汉语命名实体识别的任务还包括识别其中的英文命名实体;(5)不同的命名实体具有不同的内部特征,不可能用一个统一的模型来刻画所有的实体内部特征。

最后,现代汉语日新月异的发展给命名实体识别也带来了新的困难。

其一,标注语料老旧,覆盖不全。譬如说,近年来起名字的习惯用字与以往相比有很大的变化,以及各种复姓识别、国外译名、网络红人、虚拟人物和昵称的涌现。

其二,命名实体歧义严重,消歧困难。譬如下列句子:

余则成潜伏在敌后 VS 余则成潜伏在线

我和你一起唱《我和你》吧。

看完吓死你:惊悚视频,胆小勿入。

当前命名实体识别的主要技术方法分为:基于规则和词典的方法、基于统计的方法、二者混合的方法等。

1基于规则和词典的方法

基于规则的方法多采用语言学专家手工构造规则模板,选用特征包括统计信息、标点符号、关键字、指示词和方向词、位置词(如尾字)、中心词等方法,以模式和字符串相匹配为主要手段,这类系统大多依赖于知识库和词典的建立。

基于规则和词典的方法是命名实体识别中最早使用的方法,它们依赖于手工规则的系统, 都使用命名实体库, 而且对每一个规则都赋予权值。当遇到规则冲突的时候, 选择权值最高的规则来判别命名实体的类型。一般而言,当提取的规则能比较精确地反映语言现象时,基于规则的方法性能要优于基于统计的方法。但是这些规则往往依赖于具体语言、领域和文本风格,编制过程耗时且难以涵盖所有的语言现象,特别容易产生错误,系统可移植性不好,对于不同的系统需要语言学专家重新书写规则。

基于规则的方法的另外一个缺点是代价太大,存在系统建设周期长、移植性差而且需要建立不同领域知识库作为辅助以提高系统识别能力等问题。

在这4种学习方法中,最大熵模型结构紧凑,具有较好的通用性,主要缺点是训练时间复杂性非常高,有时甚至导致训练代价难以承受,另外由于需要明确的归一化计算,导致开销比较大。而条件随机场为命名实体识别提供了一个特征灵活、全局最优的标注框架,但同时存在收敛速度慢、训练时间长的问题。一般说来,最大熵和支持向量机在正确率上要比隐马尔可夫模型高一些,但是隐马尔可夫模型在训练和识别时的速度要快一些,主要是由于在利用Viterbi算法求解命名实体类别序列的效率较高。隐马尔可夫模型更适用于一些对实时性有要求以及像信息检索这样需要处理大量文本的应用,如短文本命名实体识别。

基于统计的方法对特征选取的要求较高,需要从文本中选择对该项任务有影响的各种特征,并将这些特征加入到特征向量中。依据特定命名实体识别所面临的主要困难和所表现出的特性,考虑选择能有效反映该类实体特性的特征集合。主要做法是通过对训练语料所包含的语言信息进行统计和分析,从训练语料中挖掘出特征。有关特征可以分为具体的单词特征、上下文特征、词典及词性特征、停用词特征、核心词特征以及语义特征等。

基于统计的方法对语料库的依赖也比较大,而可以用来建设和评估命名实体识别系统的大规模通用语料库又比较少,这是此种方法的又一大制约。

自然语言处理并不完全是一个随机过程,单独使用基于统计的方法使状态搜索空间非常庞大,必须借助规则知识提前进行过滤修剪处理。目前几乎没有单纯使用统计模型而不使用规则知识的命名实体识别系统,在很多情况下是使用混合方法,主要包括:

  1. 假设大家对上边的内容都已经熟悉了,在这看下NeuroNER的网络结构

    命名实体识别(NER)是在自然语言处理中的一个经典问题,其应用也极为广泛。比如从一句话中识别出人名、地名,从电商的搜索中识别出产品的名字,识别药物名称等等。传统的公认比较好的处理算法是条件随机场(CRF),它是一种判别式概率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。简单是说在NER中应用是,给定一系列的特征去预测每个词的标签。如下图:

    X我们可以看做成一句话的每个单词对应的特征,Y可以看做成单词对应的标签。这里的标签就是对应场景下的人名、地名等等。重点在X的理解上面,什么是特征呢?通常我们都会取的特征是词性,如果名词、动词… 但是有人会反问,知道了词性就能学习出标签吗?显然是不够的,我们可能需要更多的特征来完成我们的学习。但是这些特征需要我们根据不同的场景去人工的抽取,比如抽取人名的特征我们往往可能看看单词的第一个字是不是百家姓等等。所以更多严谨的CRF的图应该如下:

    至于y之间的连线请参考CRF算法的详细内容。接下来会更注重用深度学习的方法来解决NER问题。

    看了上图有的人则会有疑惑了,这个特征要怎么提取呢?如何知道提取出来的特征是有效的呢?要提多少个特征才好呢?的确,特征工程确实是一个麻烦的问题,关于特征的提取也大都是根据经验和拍脑门想出来的,这整个过程很是麻烦。幸运的是现在深度学习大红大紫,其原因除了它的效果卓越之外还免去了我们手工提取特征的烦恼,以下将会讲解本人Github上的代码思路与实现。

    条件随机场(CRF)在NER上的应用。了解深度学习的人都知道,我们把数据放入神经网络中然后输出我们想要的结果,无论想要处理的问题是分类、回归或者是序列的问题,其本质就是通过神经网络学习出特征然后根据特征求得结果。这不就正是我们需要的吗?我们只要让神经网络替我们把特性选好,然后我们只要简单的把特征放到CRF里不就好了吗?这就是整个程序的本质。

    知道了本质我们需要克服的困难也很多,接下来我们一一来解决。

    1. 如何把词转换成神经网络能接受的数据?

    神经网络只接受数字,不接受字符串,所以我们需要用工具把词转换成为词向量,这个工具可以是gensim word2vec、glove等等。训练的数据最好是要有个庞大的数据集,比如从网上爬取下来的新闻然后用这些数据来训练词向量。如果就用已有的数据训练行不行呢?或者干脆不训练,随机初始化这些词向量行不行呢?答案是:可以。但是解决不了下面这个问题。

    2. 如何处理训练数据中没有见过的词?

    我们之所以需要用庞大的新闻数据来预训练词向量的原因就是为了克服训练数据量小的问题。因为人力有限,我们不可能有很大的标记过的数据,如果在测试样例中出现了我们没有标记过的词,那么显然会影响NER结果。然后word2vec的用处就是将相似的词的“距离”拉的很近(由于word2vec又是一个很大的话题,这里不拓展讨论啦),这样可以一定程度上减少未出现词的影响。

    使用基于字的BiLSTM-CRF,主要参考的是文献[4][5]。使用Bakeoff-3评测中所采用的的BIO标注集,即B-PER、I-PER代表人名首字、人名非首字,B-LOC、I-LOC代表地名首字、地名非首字,B-ORG、I-ORG代表组织机构名首字、组织机构名非首字,O代表该字不属于命名实体的一部分。如:

    这里当然也可以采用更复杂的BIOSE标注集。

          模型的第二层是双向LSTM层,自动提取句子特征。将一个句子的各个字的char

    可以看出整个序列的打分等于各个位置的打分之和,而每个位置的打分由两部分得到,一部分是由LSTM输出的 pipi 决定,另一部分则由CRF的转移矩阵 AA 决定。进而可以利用Softmax得到归一化后的概率:

          模型在预测过程(解码)时使用动态规划的Viterbi算法来求解最优路径:

          关于CRF模型的特征模板就不细讲了,是参考 [3] 来做的。提好特征之后用CRF++工具包即可,这部分是小伙伴做的~

          1. 总的来说,经过仔细选择特征模板的CRF模型在人名上的识别效果要优于BiLSTM-CRF,但后者在地名、组织机构名上展现了更好的性能。究其原因,可能是因为:
          (1) 人名用字较灵活且长度比较短,用特征模板在窗口内所提取的特征要比神经网络自动学习的特征更有效、干扰更少
          (2) 地名、组织机构名的构成复杂、长度较长,使用双向LSTM能够更好地利用句子级的语义特征,而特征模板只能在窗口内进行提取,无法利用整句话的语义。

          2. 对于CRF模型来说,使用 {字符,词性,词边界,实体列表} 这一组合模板的效果在CRF模型系列中表现最好(各个单一模板以及其他组合模板的结果未列出)。

    对于BiLSTM-CRF模型来说,这里在每一层的处理都是比较简单的,还有可以提高的空间。例如字向量embedding的初始化方式,这里只是用了最简单的随机初始化,然而由于语料规模比较小,所以不太合适。可以考虑对句子做分词,然后将字向量初始化为该字所在词的词向量(可以用在别的大型语料上的预训练值)。此外,还可以尝试文献[5][7][8]的思路,将low-level的特征经过一个RNN或CNN,进而通过“组合”的方式来得到字级别的embedding(英文是用字母构造单词,中文是用偏旁部首构造汉字),将其与随机初始化的字向量拼接在一起。

          另外要提的一点是BiLSTM-CRF在这应该是过拟合了,迭代轮数(120轮)给大了,测试集指标在大约60轮之后已经开始下降。应该划个验证集做early stopping。

    说到命名实体抽取,先要了解一下基于字标注的中文分词。

    “我/爱/北京/天安门”。

    那什么是基于字标注呢?

    就是这样,给每个字都进行一个标注。我们可以发现这句话中字的标注一共有四种。他们分别代表的意义如下。

    B表示一个词的开始,E表示一个词的结尾,M表示词中间的字。如果这个词只有一个字的话,用O表示。

    了解了中文分词,那么实体识别也差不多。就是把不属于实体的字用O标注,把实体用BME规则标注,最后按照BME规则把实体提取出来就ok了。

    数据可以自己标注,也可以找个公开的数据集先练练手。我是用的是玻森数据提供的命名实体识别数据, 这是官网,在数据下载里面有一个命名实体识别数据集,或者在下载。

    这个数据集一个包含了6个实体类别:

    每个实体用都用大括号括了起来,并标明实体类别。当然自己标注的时候也不一定要这么标,只要能提取出来就可以。

    然后我们要做的就是把原始数据按照BMEO规则变成字标注的形式,以便模型训练。这使用python实现还是比较简单的,嫌麻烦的可以看我github里的代码。按字标注后结果如下。

    然后我们习惯按照标点符号把一个长句分成几个短句,反正一般实体里面也没有标点符号。结果如下。

    然后的思路就是建立一个word2id词典,把每个汉字转换成id。这里习惯现按照数据集中每个汉字出现的次数排序,id从1开始。
    再建立一个tag2id词典,把每一个字标注的类型转换成id。这里的顺序我就随便搞的。

    之后就把刚按标点分开的数据,按照一一对应的顺序,把汉字和每个字的标签转换成id,分别存到两个数组里面,一起保存到一个pkl文件中,这样模型使用时候就可以直接读取,不用每次都处理数据了。这里习惯把每一句话都转换成一样的长度。这个长度当然是自己设置的,比它长的就把后面舍弃,比它短的就在后面补零。
    这里第一个数组里是这句话汉字转换成的id,第二个数组里存的是这句话每个字的标注转换成的id。

    以上数据处理的代码是里data_util.py实现的功能。

    这里模型就直接用的里的Bilstm+crf模型,也可以看BiLSTM_CRF.py这个文件。这个模型由于没有使用batch,速度比较慢,但是初学者就先用这个吧,学会了之后再进行修改。

    至于想要看懂这部分的代码,就要学一下pytorch了,当然使用tensorflow也是可以的。推荐一下的教程,pytorch和tensorflow都有。

    pytorch里,lstm是写好的,可以直接使用,crf目前还没有,所以是直接写的。

    lstm就是很经典的lstm,网上有很多讲解。crf我想另写一篇,详细讲一下。

    训练直接运行train.py就可以了。就是把之前存到pkl中的数据取出来,转换成tensor形式,输入到模型中。crf的损失函数是另外定义的。然后通过pytorch提供的

    反向传播和梯度下降,更新参数,让损失函数越来越小即可。看代码吧。

    命名实体识别的准确度判断有三个值。准确率、召回率和f值。

    这里需要先定义一个交集,是经过模型抽取出来的实体,与数据集中的所有实体,取交集。

    准确率=交集/模型抽取出的实体
    召回率=交集/数据集中的所有实体
    f值=2×(准确率×召回率) / (准确率+召回率)

}

我要回帖

更多关于 电脑怎么修改文件名字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信