斯坦福解析器(Python)的自动化二值化器出错

时间:2018-07-01 05:18:34

标签: python stanford-nlp

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

./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:有关更多详细信息,请参见http://www.slf4j.org/codes.html#StaticLoggerBinder。   线程“主”中的异常edu.stanford.nlp.io.RuntimeIOException:java.io.IOException:无法打开“ movie_name.txt”作为类路径,文件名或URL       在edu.stanford.nlp.io.IOUtils.slurpFileNoExceptions(IOUtils.java:1316)       在edu.stanford.nlp.sentiment.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)       ...还有1个

我不明白这一点。这是我的python脚本中的错误还是这里有其他错误? 如果您想查看./lexparser.sh的内容,请告诉我。 预先感谢。

1 个答案:

答案 0 :(得分:1)

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