NLP(一) Python常用开发工具
一、Numpy
NumPy系统是Python的一种开源的数值计算包。
包括:
1、一个强大的N维数组对象Array;
2、比较成熟的(广播)函数
库;
3、用于整合C/C++和Fortran代码的工具包;
4、实用的线性代数、傅里叶变换和随机数生成函数。
numpy和稀疏矩阵运算包scipy配合使用更加方便。
安装:
pip install numpy
二、NLTK
Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。
pip install nltk
三、Gensim
Gensim是一个占内存低,接口简单,免费的Python库,它可以用来从文档中自劢提取语义主题。它包含了很多非监督学习算法如:
TF/IDF,潜在语义分析(Latent Semantic Analysis,LSA)、隐含狄利克雷分配(Latent Dirichlet Allocation,LDA),层次狄利克雷过程( Hierarchical Dirichlet Processes ,HDP )等。
Gensim支持Word2Vec,Doc2Vec等模型。
Gensim介绍,下载,安装
• 1)进入http://www.lfd.uci.edu/~gohlke/pythonlibs/
• 2)下载对应的版本:如python3.6,64位Windows操作系统,应该下载numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl,scipy-0.19.1-cp36-cp36mwin_amd64.whl和gensim-2.3.0-cp36-cp36m-win_amd64.whl包。
• 3)安装:
• 1、pip install gensim
• 2、Pip install ***.whl文件
四、Tensorflow
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,可被用于语音识别\图像识别等多个机器学习和深度学习领域。
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,
TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
安装
pip install tensorflow pip install tf-nightly-gpu/cpu
五、jieba
“结巴”中文分词:是广泛使用的中文分词工具,具有以下特点:
1)三种分词模式:精确模式,全模式和搜索引擎模式
2)词性标注和返回词语在原文的起止位置( Tokenize)
3)可加入自定义字典
4)代码对 Python 2/3 均兼容
5)支持多种语言,支持简体繁体
项目地址:https://github.com/fxsjy/jieba
词性标注
import jieba.posseg as pseg
words = pseg.cut(strings)
for word, flag in words:
print('%s %s' % (word, flag))
分词
# encoding=utf-8
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print(", ".join(seg_list))
seg_list = jieba.cut_for
六、Stanford NLP
Stanford NLP提供了一系列自然语言分析工具。它能够给出基本的词形,词性,不管是公司名还是人名等,格式化的日期,时间,量词,并且能够标记句子的结构,语法形式和字词依赖,指明那些名字指向同样的实体,指明情绪,提取发言中的开放关系等。
1.一个集成的语言分析工具集;
2.进行快速,可靠的任意文本分析;
3.整体的高质量的文本分析;
4.支持多种主流语言;
5.多种编程语言的易用接口;
6.方便的简单的部署web服务。
Python 版本stanford nlp 安装
•1)安装stanford nlp自然语言处理包: pip install stanfordcorenlp
•2)下载Stanford CoreNLP文件 https://stanfordnlp.github.io/CoreNLP/download.html
•3)下载中文模型jar包, http://nlp.stanford.edu/software/stanford-chinese-corenlp-2018-02-27-models.jar,
•4)把解压后的Stanford CoreNLP文件夹和下载的stanford-chinese-corenlp-2018-02-27-models.jar放在同一目录下
•5)在Python中引用模型:
from stanfordcorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP(r‘path', lang='zh')
#-*-encoding=utf8-*-
from stanfordcorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP(r'stanfordnlp', lang='zh') fin=open('news.txt','r',encoding='utf8')
fner=open('ner.txt','w',encoding='utf8')
ftag=open('pos_tag.txt','w',encoding='utf8')
for line in fin:
line=line.strip()
if len(line)<1:
continue fner.write(" ".join([each[0]+"/"+each[1] for each in nlp.ner(line) if len(each)==2 ])+"\n")
ftag.write(" ".join([each[0]+"/"+each[1] for each in nlp.pos_tag(line) if len(each)==2 ])+"\n")
fner.close()
ftag.close()
七、Hanlp
HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
功能:中文分词 词性标注 命名实体识别 依存句法分析 关键词提取 新词发现 短语提取 自动摘要 文本分类 拼音简繁
Hanlp环境安装
•1、安装Java和Visual C++:我装的是Java 1.8和Visual C++ 2015。
•2、安裝Jpype,conda install -c conda-forge jpype1
•3、测试是否按照成功:
from jpype import *
startJVM(getDefaultJVMPath(), "-ea")
java.lang.System.out.println("Hello World")
shutdownJVM()
Hanlp安装
•1)下载hanlp.jar包: https://github.com/hankcs/HanLP
•2、下载data.zip:https://github.com/hankcs/HanLP/releases中http://hanlp.linrunsoft.com/release/data-for-1.7.0.zip后解压数据包。
•3、配置文件
•示例配置文件:hanlp.properties
•配置文件的作用是告诉HanLP数据包的位置,只需修改第一行:root=usr/home/HanLP/
•比如data目录是/Users/hankcs/Documents/data,那么root=/Users/hankcs/Documents/
#-*- coding:utf-8 -*-
from jpype import * startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\change\parsenoun\hanlp\hanlp-1.5.0.jar;D:\change\parsenoun\hanlp",
"-Xms1g",
"-Xmx1g") # 启动JVM,Linux需替换分号;为冒号: print("=" * 30 + "HanLP分词" + "=" * 30)
HanLP = JClass('com.hankcs.hanlp.HanLP')
# 中文分词
print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))
print("-" * 70) print("=" * 30 + "标准分词" + "=" * 30)
StandardTokenizer = JClass('com.hankcs.hanlp.tokenizer.StandardTokenizer')
print(StandardTokenizer.segment('你好,欢迎在Python中调用HanLP的API'))
print("-" * 70) # NLP分词NLPTokenizer会执行全部命名实体识别和词性标注
print("=" * 30 + "NLP分词" + "=" * 30)
NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
print(NLPTokenizer.segment('中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'))
print("-" * 70) print("=" * 30 + "索引分词" + "=" * 30)
IndexTokenizer = JClass('com.hankcs.hanlp.tokenizer.IndexTokenizer')
termList = IndexTokenizer.segment("主副食品");
for term in termList:
print(str(term) + " [" + str(term.offset) + ":" + str(term.offset + len(term.word)) + "]")
print("-" * 70) print("=" * 30 + " CRF分词" + "=" * 30)
print("-" * 70) print("=" * 30 + " 极速词典分词" + "=" * 30)
SpeedTokenizer = JClass('com.hankcs.hanlp.tokenizer.SpeedTokenizer')
print(NLPTokenizer.segment('江西鄱阳湖干枯,中国最大淡水湖变成大草原'))
print("-" * 70) print("=" * 30 + " 自定义分词" + "=" * 30)
CustomDictionary = JClass('com.hankcs.hanlp.dictionary.CustomDictionary')
CustomDictionary.add('攻城狮')
CustomDictionary.add('单身狗')
HanLP = JClass('com.hankcs.hanlp.HanLP')
print(HanLP.segment('攻城狮逆袭单身狗,迎娶白富美,走上人生巅峰'))
print("-" * 70) print("=" * 20 + "命名实体识别与词性标注" + "=" * 30)
NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
print(NLPTokenizer.segment('中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'))
print("-" * 70) document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \
"根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
"有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
"严格地进行水资源论证和取水许可的批准。"
print("=" * 30 + "关键词提取" + "=" * 30)
print(HanLP.extractKeyword(document, 8))
print("-" * 70) print("=" * 30 + "自动摘要" + "=" * 30)
print(HanLP.extractSummary(document, 3))
print("-" * 70) text = r"算法工程师\n 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。\n \n 1职位简介\n 算法工程师是一个非常高端的职位;\n 专业要求:计算机、电子、通信、数学等相关专业;\n 学历要求:本科及其以上的学历,大多数是硕士学历及其以上;\n 语言要求:英语要求是熟练,基本上能阅读国外专业书刊;\n 必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。\n\n2研究方向\n 视频算法工程师、图像处理算法工程师、音频算法工程师 通信基带算法工程师\n \n 3目前国内外状况\n 目前国内从事算法研究的工程师不少,但是高级算法工程师却很少,是一个非常紧缺的专业工程师。算法工程师根据研究领域来分主要有音频/视频算法处理、图像技术方面的二维信息算法处理和通信物理层、雷达信号处理、生物医学信号处理等领域的一维信息算法处理。\n 在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),缩放算法(scaling),锐化处理算法(Sharpness),超分辨率算法(Super Resolution),手势识别(gesture recognition),人脸识别(face recognition)。\n 在通信物理层等一维信息领域目前常用的算法:无线领域的RRM、RTT,传送领域的调制解调、信道均衡、信号检测、网络优化、信号分解等。\n 另外数据挖掘、互联网搜索算法也成为当今的热门方向。\n"
print("=" * 30 + "短语提取" + "=" * 30) print(HanLP.extractPhrase(text, 10))
print("-" * 70) shutdownJVM()
NLP(一) Python常用开发工具的更多相关文章
- SharePoint 2013常用开发工具分享
众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协助开发人员简化开发流程.本文汇总几款SharePoint 2013开发常用开发工具,希望能够对大家有所帮助.如果您有更好的工具,没有包含在本 ...
- Drupal常用开发工具(一)——Devel模块
进行 Drupal 开发时有许多模块和工具可供使用,其中最常用的两项便是 Devel 及 Drupal for Firebug.本文和<Drupal常用开发工具(二)——Drupal for F ...
- SharePoint 2013常用开发工具
SharePoint 2013常用开发工具分享 2014-04-01 00:59 by jv9, 589 阅读, 1 评论, 收藏, 编辑 众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协 ...
- .Net 常用开发工具
,net常用开发工具 LinqPad使用 LinqPad连接Oracle 使用 LINQPad 将linq转换为 lambda表达式 或者 SQL语句 LINQPad 4 初次使用心得 一.双击 二. ...
- Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统
Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...
- Python集成开发工具(IDE)推荐
1.7 Python集成开发工具(IDE)推荐 1.7.1 Notepad++ Notepad++是Windows操作系统下的一套文本编辑器(软件版权许可证: GPL),有完整的中文化接口及支持多国语 ...
- Python测试 ——开发工具库
Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...
- python的开发工具pycharm安装及激活
下面介绍一种较好用也常用的python开发工具Pycharm,此文包括安装及注册激活码 一:安装方法如下: 1:进入官网下载:https://www.jetbrains.com/ 2:下载Commun ...
- 学习Python常用的工具
Python编程语言 Python是一门高级计算机程序设计语言! Python是一种解释型(脚本)语言,因为其代码简明,书写效率高,功能强大.易扩展.有丰富的专业库而受大众欢迎! 最常用的专业库有: ...
随机推荐
- 【leetcode】424. Longest Repeating Character Replacement
题目如下: Given a string that consists of only uppercase English letters, you can replace any letter in ...
- shell 以指定字符拆分字符串
string="hell|ttt|sss|2222" OLD_IFS="$IFS" IFS="|" array=($string) IFS= ...
- GPIO软件模拟IIC时序
一.MPU6050中的IIC时序 1.1 START和STOP SDA和SCL在高电平时,SDA拉低表示START.SCL拉低,表示可以传输数据. SDA和SCL在低电平时,SDA拉高表示STOP. ...
- QC增加Test、Defect字段
QC--Tools--customization,在Project Entities中增加字段,在Project Lists中编辑Lookup List类型字段的指定值
- leetcode上的一些分治算法
53- 思路: 95- 思路
- 没有找到MSVCR110.dll,因此这个应用程序未能启动.重新安装应用程序可能会修复此问题
问题: 在win7下用vs2012编译了一个exe放到xp上运行,弹出错误框"没有找到MSVCR110.dll,因此这个应用程序未能启动.重新安装应用程序可能会修复此问题" 解决办 ...
- display和visibility
display: none; visibility: hidden; 相同点:两者都是隐藏元素不同点:display不保留位置,visibility保留位置
- Hive 时间操作函数(转)
1.日期函数UNIX时间戳转日期函数: from_unixtime 语法: from_unixtime(bigint unixtime[, string format]) 返回值: string ...
- 三.通过jenkins对系统的监控(2)
在这记录下,通过HTTP Request Plugin监控系统的异常.和上一篇原理差不多. 1.首先需要安装HTTP Request Plugin.插件安装好后,在系统设置下面会新增如下配置: 具体有 ...
- 73、salesforce通过JAVA来Call在salesforce中已经写好的Restful处理接口
/** *使用salesforce通过REST方式作为webservice,需要以下几点 *1.类和方法需要global,方法需要静态 *2.类需要通过RestResource(UrlMapping= ...