1

我正在尝试运行以下代码行:

import os
os.environ['JAVAHOME'] = 'path/to/java.exe'
os.environ['STANFORD_PARSER'] = 'path/to/stanford-parser.jar'
os.environ['STANFORD_MODELS'] = 'path/to/stanford-parser-3.8.0-models.jar'

from nltk.parse.stanford import StanfordDependencyParser
dep_parser = StanfordDependencyParser(model_path="path/to/englishPCFG.ser.gz")
sentence = "sample sentence ..."

# Dependency Parsing:
print("Dependency Parsing:")
print([parse.tree() for parse in dep_parser.raw_parse(sentence)])

并在线:

print([parse.tree() for parse in dep_parser.raw_parse(sentence)])

我收到以下问题:

Traceback(最近一次调用最后):文件“C:/Users/Norbert/PycharmProjects/untitled/StanfordDependencyParser.py”,第 21 行,在 print([parse.tree() for parse in dep_parser.raw_parse(sentence)]) 文件中“C:\Users\Norbert\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\parse\stanford.py”,第 134 行,在 raw_parse 返回下一个(self.raw_parse_sents([sentence],详细)) 文件“C:\Users\Norbert\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\parse\stanford.py”,第 152 行,在 raw_parse_sents 中返回 self._parse_trees_output(self._execute( cmd, '\n'.join(sentences), verbose)) 文件“C:\Users\Norbert\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\parse\stanford.py”,行218,在_execute stdout=PIPE, stderr=PIPE) 文件“C:\Users\Norbert\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\internals.py”,第 135 行,在 java print(_decode_stdoutdata(stderr)) 文件“C:\Users\Norbert\AppData \Local\Programs\Python\Python36\lib\site-packages\nltk\internals.py",第 737 行,在 _decode_stdoutdata 返回 stdoutdata.decode(encoding) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xac in position 3097: 无效的起始字节t 解码位置 3097 中的字节 0xac:无效的起始字节t 解码位置 3097 中的字节 0xac:无效的起始字节

知道有什么问题吗?我什至不处理任何非 utf-8 文本。

4

1 回答 1

1

我可以通过这样做打印一些东西,也许不是你想要的,而是一个开始。

print("Dependency Parsing:")
result = dependency_parser.raw_parse(sentence)
#print (next(result))
dep = next(result)
print (list(dep.triples()))

如果您想查看整个输出,请取消注释该行 -> print(next(result))。

于 2018-03-22T08:51:20.027 回答