Как получить расширенный анализ зависимостей от инструментов Stanford NLP? - PullRequest
0 голосов
/ 17 марта 2019

Я работаю над проектом по разбору зависимостей для польского языка. Мы пытаемся обучить анализатор зависимостей нейросетей Stanford на данных с польского языка (используя древовидные блоки Universal Dependencies в формате .conllu). Данные уже токенизированы и аннотированы, поэтому мы не обучили ни токенизатор, ни парсер, предоставляемый CORE NLP. До сих пор нам удавалось добиться некоторого успеха с pl_lfg-ud Treebank в стандартных зависимостях, запустив анализатор из командной строки. Но мы также хотели бы научить синтаксический анализатор воспроизводить расширенные универсальные зависимости, которые также представлены в дереве. До сих пор я не смог найти способ сделать это в документация и FAQ для NNDEP и CORE NLP, хотя, насколько я понимаю, это возможно с анализатором Stanford NLP. Это тот случай, когда расширенный анализ зависимостей работает только для английского языка (или других официально поддерживаемых языков), или я просто делаю что-то не так?

Я буду очень благодарен за любые подсказки!

1 Ответ

1 голос
/ 18 марта 2019

Информация о том, как тренировать модель:

https://stanfordnlp.github.io/CoreNLP/depparse.html

пример команды:

java -Xmx12g edu.stanford.nlp.parser.nndep.DependencyParser -trainFile fr-ud-train.conllu -devFile fr-ud-dev.conllu -model new-french-UD-model.txt.gz -embedFile wiki.fr.vec -embeddingSize 300 -tlp edu.stanford.nlp.trees.international.french.FrenchTreebankLanguagePack -cPOS

Вам также понадобится обучить модель части речи:

https://nlp.stanford.edu/software/pos-tagger-faq.html

https://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/tagger/maxent/MaxentTagger.html

пример команды:

java -mx1g edu.stanford.nlp.tagger.maxent.MaxentTagger -props myPropertiesFile.props 

Вы можете найти в документации соответствующий стиль учебного файла.

Файл примера:


## tagger training invoked at Sun Sep 23 19:24:37 PST 2018 with arguments:
                   model = english-left3words-distsim.tagger
                    arch = left3words,naacl2003unknowns,wordshapes(-1,1),distsim(/u/nlp/data/pos_tags_are_useless/egw4-reut.512.clusters,-1,1),distsimconjunction(/u/nlp/data/pos_tags_are_useless/egw4-reut.512.clusters,-1,1)
            wordFunction = edu.stanford.nlp.process.AmericanizeFunction
               trainFile = /path/to/training-data
         closedClassTags = 
 closedClassTagThreshold = 40
 curWordMinFeatureThresh = 2
                   debug = false
             debugPrefix = 
            tagSeparator = _
                encoding = UTF-8
              iterations = 100
                    lang = english
    learnClosedClassTags = false
        minFeatureThresh = 2
           openClassTags = 
rareWordMinFeatureThresh = 10
          rareWordThresh = 5
                  search = owlqn
                    sgml = false
            sigmaSquared = 0.0
                   regL1 = 0.75
               tagInside = 
                tokenize = true
        tokenizerFactory = 
        tokenizerOptions = 
                 verbose = false
          verboseResults = true
    veryCommonWordThresh = 250
                xmlInput = 
              outputFile = 
            outputFormat = slashTags
     outputFormatOptions = 
                nthreads = 1

Здесь приведен исчерпывающий список примеров файлов свойств обучения:

https://github.com/stanfordnlp/CoreNLP/tree/master/scripts/pos-tagger

Если вы используете конвейер Java, вам понадобится написать токенизатор или предоставить предварительно токенизированный текст.

Возможно, вас заинтересует наш проект Python, в котором есть польская модель токенизации, разбиения предложений, лемматизации и анализа зависимостей. Также вы можете тренировать свою собственную модель:

https://github.com/stanfordnlp/stanfordnlp

...