NLTK 无法找到 java.exe(自发路径缩减)

NLTK unable to find java.exe (spontaneous path reduction)

类似的问题已发布 and here,我的问题实际上是基于这些问题的答案中的建议。

我尝试使用 Stanford Parser 和 NLTK 解析一些德语文本。

from nltk.parse.stanford import StanfordParser
import os
os.environ['STANFORD_PARSER'] ='C:\PretestKorpus\stanford-parser-full-2018-10-17'
os.environ['STANFORD_MODELS'] = 'C:\PretestKorpus\stanford-parser-full-2018-10-17'
parser=StanfordParser(model_path="C:\PretestKorpus\germanPCFG.ser.gz")
new=list(parser.raw_parse("Es war einmal ein Bauer"))

然后,当然,我得到 NLTK was unable to find the java file! 错误:

所以我这样设置配置:

nltk.internals.config_java('C:\Program Files (x86)\Java\jre1.8.0_251\bin\java.exe')

但是 returns

NLTK was unable to find the C:\Program Files (x86)\Java\jre1.8.0_251in\java.exe file!
Use software specific configuration paramaters or set the JAVAHOME environment variable.

所以,不知何故 Python 将路径 \jre1.8.0_251\bin\java.exe 减少到 \jre1.8.0_251in\java.exe

看起来像这样:

设置环境变量也无济于事(returns NLTK was unable to find the java file!错误)。显然,python 没有正确读取路径。但是出于什么原因以及如何解决这个问题?任何帮助将不胜感激。

在python\b里面一个String被解析为退格字符。因此,您在图片中看到了白色的 BS,因为控制台试图表示这个特殊字符(BS 表示退格键)。
您需要做的是像这样转义 String 中的 \

nltk.internals.config_java('C:\Program Files (x86)\Java\jre1.8.0_251\bin\java.exe')

始终对所有反斜杠字符进行转义是一种很好的做法,因此您可以确保永远不会发生此类问题。