Python 调用 Stanford Parser 两种方法

本文详细介绍了如何在Windows 7环境下,利用Jython和NLTK库,结合Stanford Parser实现自然语言处理任务。包括安装配置环境、引入依赖库、设置路径及运行示例代码,确保在指定版本的Java、Jython和Stanford Parser环境下成功执行代码。

本人操作环境:
windows7,64位操作系统
64位Python2.7.6
jython2.5.2

NLTK-3.0.4

JAVA 8


方法一:官网推荐的Jython接口

参考:
http://nlp.stanford.edu/software/lex-parser.shtml#Download
https://github.com/vpekar/stanford-parser-in-jython


第一,将stanford.py放到F:\jython2.5.2\Lib;
第二,在文件test_stanford.py中将englishPCFG.ser.gz的完整路径作为StanfordParser的参数,如下:
PARSER = StanfordParser('E:\jcode\englishPCFG.ser.gz')
第三,将stanford-parser.jar的完整路径添加到jython的classpath中,在stanford.py的文件头部添加如下代码:
sys.path.append('F:\jython2.5.2\extlibs\stanford-parser.jar')
第四,在cmd中运行test_stanford.py
结果如下图:


第五,注意这三个软件的版本,Stanford parser v.3.5.0(我试了高版本3.6.0,会报错), Java 8, Jython 2.5.2
注:关于Jython的安装和配置环境变量很简单,请自行百度。


方法二:调用NLTK中的stanford parser接口
参考:
http://stackoverflow.com/questions/13883277/stanford-parser-and-nltk
http://blog.youkuaiyun.com/qq_19670461/article/details/42681551
第一,修改F:\Python2.7.6\Lib\site-packages\nltk-3.0.4-py2.7.egg\nltk\parse\stanford.py文件中的如下代码:

 # Run the tagger and get the output.
            stdout,stderr=java(cmd, classpath=(self._stanford_jar, self._model_jar,'E:/jars/slf4j-api-1.7.17.jar'),
                                  stdout=PIPE, stderr=PIPE)
            stdout = stdout.decode(encoding)
将slf4j-api-1.7.17.jar的完整路径加入到classpath中,这样就可以解决如下异常
java.lang.ClassNotFoundException: org/slf4j/LoggerFactory
slf4j下载地址:http://www.slf4j.org/download.html
第二,运行如下demo

# -*- coding: cp936 -*-  
import os  
  
from nltk.parse import stanford  
  
#添加stanford环境变量,此处需要手动修改,jar包地址为绝对地址。  
os.environ['STANFORD_PARSER'] = 'E:/jars/stanford-parser.jar'  
os.environ['STANFORD_MODELS'] = 'E:/jars/stanford-parser-3.6.0-models.jar'  
  
#为JAVAHOME添加环境变量  
java_path = "C:/Program Files/Java/jdk1.8.0_51/bin/java.exe"  
os.environ['JAVAHOME'] = java_path  
  
#句法标注  
parser = stanford.StanfordParser(model_path="E:/jcode/englishPCFG.ser.gz")  
print list(parser.raw_parse("the quick brown fox jumps over the lazy dog"))  
运行结果如下:

其他功能参考Python2.7.6\Lib\site-packages\nltk-3.0.4-py2.7.egg\nltk\parse\stanford.py文件中头部示例。
第三,注意nltk的版本3.0版本,3.1版本用法可能与上述不同。

<think>好的,我需要帮助用户查找Stanford Parser的安装和使用教程。首先,我得回顾一下用户提供的引用内容,看看里面有没有相关的信息。 用户提供的引用[3]提到Stanford ParserStanford NLP小组的工具,支持多种语言,包括中文。引用[5]指出需要到官方网站下载软件包并解压,这应该是安装步骤的一部分。引用[2]和[5]都提到了下载链接,用户可能需要这些链接来获取软件。此外,引用[4]展示了如何在Python中使用Stanford Parser,这属于使用教程的一部分。引用[1]提到了在线示例,用户可能对实际解析效果感兴趣。 接下来,我需要整理这些信息,分步骤说明安装和使用过程。安装部分应包括下载、解压、环境变量设置和依赖项安装。使用部分要涵盖命令行操作和Python集成,比如通过NLTK。同时,需要注意用户可能需要Java环境,因为Stanford Parser基于Java开发。此外,引用中的下载链接和示例链接需要正确引用,确保用户可以直接访问。 用户的问题还要求生成相关问题,我需要根据内容提出相关的安装、配置、使用和常见问题。这些问题应该帮助用户进一步探索可能遇到的挑战,比如环境配置错误或性能优化。 最后,要确保回答符合格式要求:使用中文,数学公式用$...$,独立公式用$$...$$,但当前内容可能不涉及数学公式,所以重点放在代码块和引用标识的正确使用上。同时,保持回答结构清晰,分步骤说明,引用正确来源。</think>### Stanford Parser安装与使用教程 #### **一、安装步骤** 1. **下载软件包** 访问[Stanford Parser官方下载页面](http://nlp.stanford.edu/software/lex-parser.shtml#Download),选择对应操作系统的压缩包(如`stanford-parser-4.2.0.zip`)[^2][^5]。 2. **解压文件** 解压后目录包含: - JAR文件(如`stanford-parser.jar`) - 预训练模型(如`englishPCFG.ser.gz`) - 示例脚本和文档 3. **配置环境变量** 确保系统已安装Java 8+,并设置`CLASSPATH`指向JAR文件: ```bash export CLASSPATH=/path/to/stanford-parser.jar ``` 4. **安装依赖(Python使用)** 若需通过Python调用,安装NLTK库并关联Stanford Parser: ```python from nltk.parse.stanford import StanfordParser eng_parser = StanfordParser(model_path='edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz') ``` [^4] --- #### **二、基础使用** 1. **命令行解析** 运行以下命令解析英文句子: ```bash java -mx1g edu.stanford.nlp.parser.lexparser.LexicalizedParser \ -outputFormat "penn" \ edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz \ input.txt > output.txt ``` `input.txt`为待解析文本,`output.txt`保存语法树结果。 2. **在线演示** 访问[Stanford Parser在线示例](http://nlp.stanford.edu:8080/parser/index.jsp),输入文本可直接查看解析效果[^1]。 3. **Python集成** 使用NLTK调用示例: ```python sentences = eng_parser.raw_parse("The quick brown fox jumps over the lazy dog.") for line in sentences: print(line) ``` 输出为Penn Treebank格式的语法树。 --- #### **三、常见问题** - **依赖冲突**:确保Java版本与Stanford Parser兼容,避免`UnsupportedClassVersionError`。 - **模型路径错误**:Python调用时需指定完整的模型文件路径。 - **内存不足**:调整Java虚拟机内存参数,例如`-mx2g`分配2GB内存。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值