Стэнфордский NER бросает исключение на докер - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть исполняемый файл .net 472, который использует пакет nuget https://www.nuget.org/packages/Stanford.NLP.NER/.

            var classifierPath = (config.ClassifierDirectory ?? DEFAULT_CLASSIFIER_DIRECTORY) + @"\english.all.3class.distsim.crf.ser.gz";
            _entityClassifier = CRFClassifier.getClassifierNoExceptions(classifierPath);

Это прекрасно работает в Windows.

Однако, когда я создаю LinuxDocker контейнер и запустить его на моно Я получаю это исключение:

Произошла ошибка при обработке запроса.Ошибка: edu.stanford.nlp.io.RuntimeIOException: java.io.IOException: Невозможно открыть «Stanford \ Classifiers \ english.all.3class.distsim.crf.ser.gz» в качестве пути к классу, имени файла или URL-адреса

Я проверил, и файл определенно существует в контейнере Docker.

Вот мой файл Docker:

FROM mono

RUN apt-get update

RUN mkdir /dotnet

WORKDIR /dotnet

ARG PROJECT_NAME

COPY $PROJECT_NAME/bin/Release/net472/publish .

ENV ENTRY_POINT=$PROJECT_NAME.exe

RUN rm config.json

RUN chmod a+rwx -R .

CMD mono $ENTRY_POINT

Кто-нибудь может подсказать причину этогои как я могу это исправить?

РЕДАКТИРОВАТЬ:

Я официальный идиот.Все, что мне нужно было сделать, это перейти с путей Windows на пути Linux:

            var classifierPath = (config.ClassifierDirectory ?? DEFAULT_CLASSIFIER_DIRECTORY) + @"/english.all.3class.distsim.crf.ser.gz";

работает абсолютно нормально!

...