自动生成stanford解析器(Python)的二进制代码时出错

自动生成stanford解析器(Python)的二进制代码时出错,python,stanford-nlp,Python,Stanford Nlp,我正在使用Stanford解析器以所需的注释格式从给定数据生成树。我可以通过运行以下命令为单个文件执行此操作: ./lexparser.sh input_file > output_file 从stanford-parser-full-2018-02-27文件夹。但是,我有多个文件,因此我尝试使用python将其自动化,如下所示: import os import glob import subprocess for movie in glob.glob("../full_movies

我正在使用Stanford解析器以所需的注释格式从给定数据生成树。我可以通过运行以下命令为单个文件执行此操作:

./lexparser.sh input_file > output_file
stanford-parser-full-2018-02-27
文件夹。但是,我有多个文件,因此我尝试使用python将其自动化,如下所示:

import os
import glob
import subprocess

for movie in glob.glob("../full_movies/annotated/*.txt"):
    tree = subprocess.call(['./lexparser.sh', os.path.basename(movie)])
    with open("../full_movies/trees/" + os.path.basename(movie), "w") as fid:
        fid.write(tree)
但它显示了以下错误:

SLF4J:未能加载类“org.SLF4J.impl.StaticLoggerBinder”。 SLF4J:默认为无操作(NOP)记录器实现 SLF4J:有关更多详细信息,请参阅。 线程“main”edu.stanford.nlp.io.RuntimeIOException:java.io.IOException:无法将“movie_name.txt”作为类路径、文件名或URL打开 位于edu.stanford.nlp.io.IOUtils.slurpFileNoExceptions(IOUtils.java:1316) 在edu.stanford.nlp.emotional.BuildBinarizedDataset.main(BuildBinarizedDataset.java:171) 原因:java.io.IOException:无法将“movie_name.txt”作为类路径、文件名或URL打开 在edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:480)上 位于edu.stanford.nlp.io.IOUtils.readerFromString(IOUtils.java:637) 位于edu.stanford.nlp.io.IOUtils.slurpFile(IOUtils.java:1159) 位于edu.stanford.nlp.io.IOUtils.slurpFile(IOUtils.java:1184) 位于edu.stanford.nlp.io.IOUtils.slurpFileNoExceptions(IOUtils.java:1314) ... 还有一个

我无法理解这一点。这是我的python脚本中的一个错误还是其他什么地方出了问题? 如果您想查看
/lexparser.sh
的内容,请告诉我。
提前谢谢。

我认为您的问题很简单,您只需给lex解析器提供文件名,因为您需要在其上调用basename。但是,由于lexparser与文件不在同一目录中,因此需要提供文件的完整路径。只需使用movie并删除os.path.basename调用。

请提供脚本的内容以及斯坦福解析器的格式(是jar还是maven项目等),因为错误是在Java中发生的,似乎您没有将正确的文件格式传递给解析器。一旦添加了该文件,尝试添加java标记,因为它可能会更快引起注意