热门标签 | 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('.', ['?'])])])]




推荐阅读
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 单片机编程为何偏爱C语言
    尽管现代有许多高级编程语言如Java、Python等,但单片机编程依然广泛使用C语言。本文将探讨C语言在单片机编程中的优势及其原因。 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文通过复旦大学自然语言处理课程中的一个具体案例,详细解析了中文词汇分割技术的实现方法。该案例利用Java编程语言,结合词典和算法模型,展示了如何高效地进行中文文本的词汇分割,为相关研究和应用提供了宝贵的参考。 ... [详细]
  • lightgbm过去版本安装包_集成学习算法LightGBM
    LightGBM在Kaggle,KDD等各类数据竞赛中,无论是分类问题还是回归问题亦或是排序问题,以GBDT(分类回归决策树 ... [详细]
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社区 版权所有