首页 文章 精选 留言 我的

精选列表

搜索[自然语言生成],共10009篇文章
优秀的个人博客,低调大师

hanlp自然语言处理包的人名识别代码解析

HanLP发射矩阵词典nr.txt中收录单字姓氏393个。袁义达在《中国的三大姓氏是如何统计出来的》文献中指出:当代中国100个常见姓氏中,集中了全国人口的87%,根据这一数据我们只保留nr.txt中的100个常见词语的姓氏角色,其他词语去掉其姓氏角色状态。过滤后,nr.txt中具有姓氏角色的单字共计97个。 列于下表:丁 万 乔 于 任 何 余 侯 傅 冯 刘 卢 史 叶 吕 吴 周 唐 夏 姚 姜 孔 孙 孟 宋 尹 崔 常 康 廖 张 彭 徐 戴 方 易 曹 曾 朱 李 杜 杨 林 梁 武 段 毛 江 汤 汪 沈 潘 熊 王 田 白 石 秦 程 罗 胡 苏 范 萧 董 蒋 薛 袁 许 谢 谭 贺 贾 赖 赵 邓 邱 邵 邹 郑 郝 郭 金 钟 钱 阎 陆 陈 雷 韩 顾 马 高 魏 黄 黎 龚 实验效果姓氏过滤前,各命名实体识别准确率nr 33%ns 83%nt 43%姓氏过滤后,各命名实体识别准确率nr 36%ns 83%nt 81%这里没有开层叠隐马预测机构名和地名,nt上升原因估计是由于很多不是人名的词语没被标为人名,那么nt的模式匹配规则匹配不上了,所以机构名准确率上来了。错误识别的人名,100个常用姓氏的不多,很多恐怕是HanLP里其他词表干预进来的。隐马一般用于分词和词性标注是比较好的,为什么通常的序列标注方法也就是BIEO方法直接用到实体识别不合适呢。用词性标注为例,每一个词它所对应的词性标记子集是有限的,而这个子集相对于词性标记全集来说是小的。但是到了实体识别则不一定,拿人名来说,除了姓氏以外,名字词语部分可以填充的词语是任意的,也就是说任何词语都有可能出现在中间位置,此时发射矩阵中的某些词实际上就没有太大意义了,因为它可能等可能的由BIEO标记发出,而如果指利用四种标记之间的转移概率信息来确定最优的标记序列势必就影响效果。因此,我们通过引入角色标记,实际上这就引入了先验知识,比如某些字只能由姓氏标记产生,某些字一般情况都充当名字首字,某些字一般情况都充当名字末字,通过给这些不同情况下的字集按照其出现的位置的分布和其语法意义做角色定义,可以缩小每种角色标记可发出的词语集合,也就是每种词语(字)所对应的标记集的大小,相当于使发射概率分布不是均匀分布,那么预测的准确性肯定就得到提高了。下边介绍一下HanLP人名识别的主要流程1.使用使用匹配法求出各种分词路径用变量wordNetAll存储2.用viterbi方法找到一条最优的分词路径,这里主要使用用户自定义词典以及核心词典,用序列变量vertexList存储。3.角色观察,也就是根据发射概率矩阵列出vertexList中每个词语可能对应的角色标记。roleObserve(...)方法实现。4.角色标注,利用viterbi方法求出最优角色标记序列。viterbiComputeSimply(...)方法实现。5.对角色序列进行模式匹配得到人名。模式匹配定义在NRPattern类中。 在精度要求比较高且时间紧的情况下,最好的提高准确率的方法为,只保留常用姓氏,只保留最可能的2gram角色标记模式。在做人名识别时还有一个注意的点,如果你的预测语料和训练语料完全在文体上差别很大,或者说你就是在公开的训练语料上训练而不在预测语料上训练的话,基本上上下文信息是没有用处的,甚至有可能上下文信息会给实体边界标注带来干扰,我想任何机器学习包括深度学习,不管是文本分类领域还是实体识别领域都会有这种泛化能力的问题,这种问题恐怕通过算法是没法解决的,如果可以解决那么任何语种任何领域都可以使用一种模型,一劳永逸了。

优秀的个人博客,低调大师

我的2017年文章汇总——自然语言处理篇

近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。 本篇推送nlp相关文章。 基于典型相关分析的词向量 来自麻省理工的信息抽取 如何用机器学习对文本分类 循环神经网络 如何使用中文维基百科语料 深度学习的Attention模型 TensorFlow实现seq2seq 深度学习的seq2seq模型 谈谈谷歌word2vec的原理 如何用TensorFlow训练词向量 如何用TensorFlow训练聊天机器人(附github) 开源一个文本分析项目 kmeans实现文本聚类 设计一个智能客服系统 全文搜索怎么给查询语句与文档相关性打分 n元语法 -------------推荐阅读------------ 我的2017文章汇总——机器学习篇 我的2017文章汇总——Java及中间件 我的2017文章汇总——深度学习篇 我的2017文章汇总——JDK源码篇 ------------------广告时间---------------- 公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。 鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以购买。感谢各位朋友。 为什么写《Tomcat内核设计剖析》 欢迎关注:

优秀的个人博客,低调大师

自然语言处理工具LTP语言云调用方法

前言 LTP语言云平台 不支持离线调用; 支持分词、词性标注、命名实体识别、依存句法分析、语义角色标注; 不支持自定义词表,但是你可以先用其他支持自定义分词的工具(例如中科院的NLPIR)把文本进行分词,再让ltp帮你标注 支持C#、Go、Java、JavaScript、Nodejs、PHP、Python、R、Ruby等语言调用; 还有一些错误响应、频率限制、重要说明(这几个我至今也没用到); 正文 官方网址:http://www.ltp-cloud.com/ 使用文档:http://www.ltp-cloud.com/document/ 在线演示:http://www.ltp-cloud.com/demo/ 各种语言调用实例可以到Github上下载:https://github.com/HIT-SCIR/ltp-cloud-api-tutorial 例如Python版本的:https://github.com/HIT-SCIR/ltp-cloud-api-tutorial/tree/master/Python Step1:注册 在这个网址申请一个API key,稍后会用到; Step2:一个简单的例子(Python版) (1)复制代码:从Github上复制一段代码(取决于你使用的语言和所需的功能) (2)修改代码: <1>把api_key ="YourApiKey"中的"YourApiKey"修改成你Step1申请的API Key; <2>把text ="我爱北京天安门"修改成你要处理的文本; <3>根据需求设置不同的参数(其实只需要api_key,text,pattern,format四个参数就够了,仔细看下pattern): # -*- coding: utf-8 -*- #!/usr/bin/env python # This example shows how to use Python to access the LTP API to perform full # stack Chinese text analysis including word segmentation, POS tagging, dep- # endency parsing, name entity recognization and semantic role labeling and # get the result in specified format. import urllib2, urllib import sys if __name__ == '__main__': if len(sys.argv) < 2 or sys.argv[1] not in ["xml", "json", "conll"]: print >> sys.stderr, "usage: %s [xml/json/conll]" % sys.argv[0] sys.exit(1) uri_base = "http://ltpapi.voicecloud.cn/analysis/?" api_key = "YourApiKey" text = "我爱北京天安门" # Note that if your text contain special characters such as linefeed or '&', # you need to use urlencode to encode your data text = urllib.quote(text) format = sys.argv[1] pattern = "all" url = (uri_base + "api_key=" + api_key + "&" + "text=" + text + "&" + "format=" + format + "&" + "pattern=" + "all") try: response = urllib2.urlopen(url) content = response.read().strip() print content except urllib2.HTTPError, e: print >> sys.stderr, e.reason Step3:运行 如果要批量处理txt或者xml文件,需要自己写一段批量处理的代码,下边是我之前项目中用到的一段批量处理某一目录下txt文件代码(就是加了一层循环和设置了一个输出): 1 # -*- coding: utf-8 -*- 2 #!/usr/bin/env python 3 4 # This example shows how to use Python to access the LTP API to perform full 5 # stack Chinese text analysis including word segmentation, POS tagging, dep- 6 # endency parsing, name entity recognization and semantic role labeling and 7 # get the result in specified format. 8 9 import urllib2, urllib 10 import sys 11 12 if __name__ == '__main__': 13 uri_base = "http://ltpapi.voicecloud.cn/analysis/?" 14 api_key = "7132G4z1HE3S********DSxtNcmA1jScSE5XumAI" 15 16 f = open("E:\\PyProj\\Others\\rite_sentence.txt") 17 fw = open("E:\\PyProj\\Others\\rite_pos.txt",'w') 18 19 line = f.readline() 20 while(line): 21 text = line 22 # Note that if your text contain special characters such as linefeed or '&', 23 # you need to use urlencode to encode your data 24 text = urllib.quote(text) 25 format = "plain" 26 pattern = "pos" 27 28 url = (uri_base 29 + "api_key=" + api_key + "&" 30 + "text=" + text + "&" 31 + "format=" + format + "&" 32 + "pattern=" + pattern) 33 34 try: 35 response = urllib2.urlopen(url) 36 content = response.read().strip() 37 print content 38 fw.write(line+content+'\n') 39 except urllib2.HTTPError, e: 40 print >> sys.stderr, e.reason 41 line = f.readline() 42 fw.close() 43 f.close() ' 本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4585176.html,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册