Некоторые проблемы с загрузкой моделей в Stanford Neural Network Dependency Parser - PullRequest
0 голосов
/ 23 апреля 2019

Я использую Stanford Neural Network Dependency Parser. Я обучил некоторые модели на французских банках деревьев (GSD, ParTUT, Sequoia, Spoken), и теперь я пытаюсь сгенерировать выходные данные модели на тестовых сегментах банок дерева. Все это прекрасно работает с ParTUT, Sequoia и Spoken, но GSD вызывает у меня некоторые проблемы. Я запускаю команду:

java -Xmx1g -cp "*" edu.stanford.nlp.parser.nndep.DependencyParser \ -model Stf_ud_gsd_2200.model.txt.gz.gz -testFile fr_gsd_ud_test_new.conllu -outFile FR/Stf_gsd_ud.conllu

Я получаю следующую ошибку:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NumberFormatException: For input string: "358,6"
        at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
        at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
        at java.lang.Double.parseDouble(Unknown Source)
        at edu.stanford.nlp.parser.nndep.DependencyParser.loadModelFile(DependencyParser.java:570)
        at edu.stanford.nlp.parser.nndep.DependencyParser.loadModelFile(DependencyParser.java:508)
        at edu.stanford.nlp.parser.nndep.DependencyParser.main(DependencyParser.java:1284)

Если я правильно понимаю, проблема не в банке тестового дерева, а в самой модели и в том, как некоторые цифры были там сохранены.

У кого-нибудь есть советы, как это преодолеть? Буду очень признателен за помощь!

1 Ответ

0 голосов
/ 26 апреля 2019

Проблема в том, что во французских данных обучения GSD есть место, содержащее токен.3 358,6.Поэтому, когда код загрузки модели читает встраивание для этого токена, он разделяется на пробел и думает, что первое значение встраивания равно 358,6.

Если вы добавите запятую в этот токен (редактируя этоодна строка) ваша модель будет работать.Я думаю, что вы можете просто удалить эту строку и уменьшить размер словаря, указанный вверху, на 1 (чтобы отразить на слово меньше словарного запаса).

Мы должны исправить эту проблему, хотя в обучающем коде, как правило, токеныв них нет места.

...