NLP常用Python开发工具

摘要:
PipinstallnltkIII.GensimGensim是一个免费的Python库,具有低内存消耗、简单的界面,可以用于自动从文档中提取语义主题。3) 安装:1.Pipinstallgensim2,Pipinstall***Whl文件4.TensorflowTensorFlow是谷歌基于DistBelief开发的第二代人工智能学习系统,可用于语音识别和图像识别等许多机器学习和深度学习领域。

一、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 ])+"
")
    ftag.write(" ".join([each[0]+"/"+each[1] for each in nlp.pos_tag(line) if len(each)==2 ])+"
")
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:changeparsenounhanlphanlp-1.5.0.jar;D:changeparsenounhanlp",
         "-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"算法工程师
 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。
 
 1职位简介
 算法工程师是一个非常高端的职位;
 专业要求:计算机、电子、通信、数学等相关专业;
 学历要求:本科及其以上的学历,大多数是硕士学历及其以上;
 语言要求:英语要求是熟练,基本上能阅读国外专业书刊;
 必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。

2研究方向
 视频算法工程师、图像处理算法工程师、音频算法工程师 通信基带算法工程师
 
 3目前国内外状况
 目前国内从事算法研究的工程师不少,但是高级算法工程师却很少,是一个非常紧缺的专业工程师。算法工程师根据研究领域来分主要有音频/视频算法处理、图像技术方面的二维信息算法处理和通信物理层、雷达信号处理、生物医学信号处理等领域的一维信息算法处理。
 在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),缩放算法(scaling),锐化处理算法(Sharpness),超分辨率算法(Super Resolution),手势识别(gesture recognition),人脸识别(face recognition)。
 在通信物理层等一维信息领域目前常用的算法:无线领域的RRM、RTT,传送领域的调制解调、信道均衡、信号检测、网络优化、信号分解等。
 另外数据挖掘、互联网搜索算法也成为当今的热门方向。
"
print("=" * 30 + "短语提取" + "=" * 30)

print(HanLP.extractPhrase(text, 10))
print("-" * 70)

shutdownJVM()

免责声明:文章转载自《NLP常用Python开发工具》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android GUI之View布局adb 命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux 安装Python3.6

1、安装依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2、下载安装包(可以Windows下载https:...

python 安装PyV8 和 lxml

近来在玩python爬虫,需要使用PyV8模块和lxml模块。但是执行pip install xx 或者easy_install xx 指令都会提示一些错误。这些错误有些是提示pip版本过低或者缺少vc++ 9.0环境,再或者一些头文件无法引用等等。我也懒得找错误解决方法。就直接下载Pyv8模块的安装包和lxml的安装包。 Pyv8的安装包链接: 1.针对...

神经网络算法简介

神经网络算法  锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 。 逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点...

在lua环境中使用protobuf

最近在cocos2dx的项目中,需要在LUA脚本层使用protobuf协议。官方已经推出了很多种语言的版本。但唯独LUA版本不全。于是开始研究protobuf在LUA下的实现,将完整的过程记录了下来,希望对其它人能有所帮助。 1、下载protoc-gen-lua 可以通过HG从服务器(hg clonehttps://code.google.com/p/pr...

《Python》并发编程

手工操作 —— 穿孔卡片       1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。             程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果...

Java高级之虚拟机垃圾回收机制

博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 区别于C语言手动回收,Java自动执行垃圾回收,但为了执行高效,需要了解其策略,更好的去应用。 以下用HotSpot虚拟机为例,选取几个有意思的参数讲一下 1、默认GC时间为总时间的1%。也就是说GC线程设置有超时...