热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python包子文件夹调用_使用Python中的NLTK包调用StanfordCoreNLPAPI服务

一、什么是NLTK?NLTK的全称是NaturalLanguageToolkit,是Python中进行自然语言处理(NaturalLang

一、什么是NLTK?

82630fff4afd0bd811611c7bac7efc32.png

NLTK 的全称是 Natural Language Toolkit,是 Python 中进行自然语言处理(Natural Language Processing)的包,可以方便快捷地对文本进行分词(tokenize)词性标注(pos-tag)词形还原(lemmatize)等操作。同时 NLTK 也内置了各种语言(英语、中文、俄语等)的停用词(stop word),以便进行语料分析。

下面是一些 NLTK 的使用例子:

# 分词(tokenize)
>>> from nltk import word_tokenize
>>> token_list = word_tokenize('Zhihu is the best place to study')
>>> token_list
>>> ['Zhihu', 'is', 'the', 'best', 'place', 'to', 'study']p# 词性标注(pos-tag)
>>> from nltk import pos_tag
>>> tag_result = pos_tag(token_list)
>>> [('Zhihu', 'NNP'), ('is', 'VBZ'), ('the', 'DT'),('best', 'JJS'), ('place', 'NN'), ('to', 'TO'), ('study', 'VB')]

二、什么是Stanford CoreNLP?

56468349eabcceed800e87ab5e59c76c.png

斯坦福大学(Stanford University)的自然语言处理团队是该领域的佼佼者,其开发的许多开源自然语言处理算法精确度高、使用便利,为研究者们提供了极大的方便。CoreNLP是该团队开发的自然语言处理软件,与NLTK类似,也提供了诸如文本分词、词性标注、词形还原等功能,使用者可以直接通过GUI界面进行操作,也可以在程序中调用其API服务。

三、既然有了NLTK,为什么还需要CoreNLP?

尽管NLTK可以帮助我们完成许多工作,但是在一些自然语言处理领域NLTK确实无法胜任,例如解析句子成分(parsing)、情感分析(sentiment)等等,因此当我们的研究有这方面的需求之后,就需要借助于CoreNLP。可喜的是,由于NLTK“自知”无法胜任之前提到的这些工作,便为我们提供了调用CoreNLP的API服务的接口,下面我们就一起来看看具体如何在NLTK中调用CoreNLP的API服务。

四、在NLTK中调用CoreNLP的API服务

首先要注意,不同版本的NLTK有着不一样的CoreNLP接口,因此大家在操作时请务必检查自己NLTK的版本,本文在写作时使用的是NLTK的3.4.5版,CoreNLP的3.9.2版。CoreNLP功能众多,在NLTK中也有许多接口,这里我们以解析句子成分(parsing)为例。

1. 下载NLTK与CoreNLP软件

首先我们需要进入CoreNLP官网的下载页点击Download CoreNLP 3.9.2来下载CoreNLP软件。

195b9e3c075659f0f74202733308386f.png
CoreNLP官网的下载页

下载完成后会得到一个名为stanford-corenlp-full-2018-10-05的文件夹,为了防止软件丢失,我们需要将其放置在一个安全的位置。本科毕业论文我进行的是NLP相关研究,因此我把它放在了这里:

~/Desktop/毕业论文/stanford-corenlp-full-2018-10-05

2. 开启CoreNLP的API服务

完成下载后,打开Mac下的“终端”(或者windows下的CMD)输入下面的命令,并敲击回车,将工作路径更改为CoreNLP软件文件夹所在的路径:

cd ~/Desktop/毕业论文/stanford-corenlp-full-2018-10-05

然后继续输入以下命令后,敲击回车,从而开启CoreNLP的API服务。

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
-preload tokenize,ssplit,pos,lemma,ner,parse,depparse
-status_port 9000 -port 9000 -timeout 15000 &

这时,如果你在浏览器中输入如下地址http://localhost:9000 后看到了以下内容,便说明CoreNLP的API服务已经成功开启!

f20046775ff2fa6cc7823b55e36530fd.png
CoreNLP的API服务成功开启后的http://localhost:9000

3. 使用NLTK解析句子成分

成功开启CoreNLP的API服务之后,就可以愉快地在python中解析句子成分(parsing)了!

示例代码如下:

>>> from nltk.parse import CoreNLPParser# 初始化一个Parser
>>> parser = CoreNLPParser(url='http://localhost:9000')# 解析句子成分
>>> list(parser.parse('What is the airspeed of an unladen swallow ?'.split()))
[Tree('ROOT', [Tree('SBARQ', [Tree('WHNP', [Tree('WP', ['What'])]),
Tree('SQ', [Tree('VBZ', ['is']), Tree('NP', [Tree('NP', [Tree('DT', ['the']),
Tree('NN', ['airspeed'])]), Tree('PP', [Tree('IN', ['of']),
Tree('NP', [Tree('DT', ['an']), Tree('JJ', ['unladen'])])]),
Tree('S', [Tree('VP', [Tree('VB', ['swallow'])])])])]), Tree('.', ['?'])])])]




推荐阅读
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • win10系统搭建Java开发环境的操作方法
    本文介绍了win10系统搭建Java开发环境的详细操作方法,包括下载Windows10系统和Java SE,安装Java开发环境,设置变量等步骤。操作简单,只需按照指导进行即可。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法
    本文介绍了修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法。首先解释了UEFI的概念和作用,然后提供了两种解决方法。第一种方法是在bios界面中将Boot Mode设置为Legacy Support,Boot Priority设置为Legacy First,并关闭UEFI。第二种方法是使用U盘启动盘进入PE系统,运行磁盘分区工具DiskGenius,将硬盘的分区表设置为gpt格式,并留出288MB的内存。最后,通过运行界面输入命令cmd来完成设置。 ... [详细]
  • 本文介绍了一个Python函数same_set,用于判断两个相等长度的数组是否包含相同的元素。函数会忽略元素的顺序和重复次数,如果两个数组包含相同的元素,则返回1,否则返回0。文章还提供了函数的具体实现代码和样例输入输出。 ... [详细]
  • Python的参数解析argparse模块的学习
    本文介绍了Python中参数解析的重要模块argparse的学习内容。包括位置参数和可选参数的定义和使用方式,以及add_argument()函数的详细参数关键字解释。同时还介绍了命令行参数的操作和可接受数量的设置,其中包括整数类型的参数。通过学习本文内容,可以更好地理解和使用argparse模块进行参数解析。 ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
author-avatar
fan9210729
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有