NLTK не может найти java .exe (спонтанное сокращение пути) - PullRequest
0 голосов
/ 22 апреля 2020

Подобные вопросы были опубликованы здесь и здесь , и мой вопрос фактически основан на том, что было предложено в ответах на эти вопросы.

Я пытаюсь разобрать некоторые Немецкие тексты с использованием 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')

, но возвращается

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

Выглядит так:

enter image description here

Установка переменной среды тоже не помогает (возвращает NLTK was unable to find the java file! ошибка). Очевидно, python неправильно читает путь. Но по какой причине и как это исправить? Любая помощь будет оценена.

1 Ответ

1 голос
/ 22 апреля 2020

В python \b внутри строки преобразуется в символ возврата. Поэтому вы видите белый BS на рисунке, потому что консоль пытается представить этот специальный символ (BS для возврата). Что вам нужно сделать, это экранировать \ внутри вашей строки следующим образом:

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

Хорошей практикой всегда является экранирование всех символов backsla sh, поэтому вы можете быть уверены, что подобные проблемы никогда не будут происходят.

...