Создать трехуровневую зависимость в случае, если глагол присоединен к не глаголу при разборе зависимостей

Я использую синтаксический анализ зависимостей для варианта использования в R с пакетом corenlp. Однако мне нужно настроить фрейм данных для конкретного варианта использования.

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

devtools::install_github("statsmaths/coreNLP")
coreNLP::downloadCoreNLP()
initCoreNLP()
inp_cl = "generate odd numbers from column one and print."
output = annotateString(inp_cl)
dc = getDependency(output)

 sentence governor dependent      type governorIdx dependentIdx govIndex depIndex
1        1     ROOT  generate      root           0            1       NA        1
2        1  numbers       odd      amod           3            2        3        2
3        1 generate   numbers      dobj           1            3        1        3
4        1   column      from      case           5            4        5        4
5        1 generate    column nmod:from           1            5        1        5
6        1   column       one    nummod           5            6        5        6
7        1   column       and        cc           5            7        5        7
8        1 generate     print nmod:from           1            8        1        8
9        1   column     print  conj:and           5            8        5        8
10       1 generate         .     punct           1            7        1        10

Используя теги POS со следующим кодом, я получил следующий фрейм данных.

ps = getToken(output)

ps = ps[,c(1,2,7,3)]

colnames(dc)[8] = "id"

dp = merge(dc, ps[,c("sentence","id","POS")], 
     by.x=c("sentence","governorIdx"),by.y = c("sentence","id"),all.x = T)

dp = merge(dp, ps[,c("sentence","id","POS")], 
     by.x=c("sentence","dependentIdx"),by.y = c("sentence","id"),all.x = T)

colnames(dp)[9:10] = c("POS_gov","POS_dep")


  sentence dependentIdx governorIdx governor dependent      type govIndex id POS_gov POS_dep
1         1            1           0     ROOT  generate      root       NA  1    <NA>      VB
2         1            2           3  numbers       odd      amod        3  2     NNS      JJ
3         1            3           1 generate   numbers      dobj        1  3      VB     NNS
4         1            4           5   column      from      case        5  4      NN      IN
5         1            5           1 generate    column nmod:from        1  5      VB      NN
6         1            6           5   column       one    nummod        5  6      NN      CD
7         1            7           5   column       and        cc        5  7      NN      CC
8         1            8           1 generate     print nmod:from        1  8      VB      NN
9         1            8           5   column     print  conj:and        5  8      NN      NN
10        1            9           1 generate         .     punct        1  9      VB       .

В случае, если глагол (слово действия) присоединен к не глаголу (слову без действия), но не глагол (слово без действия) связан с другим не глаголом (словом без действия), тогда в одной строке должно быть указано вся связь. Например: генерировать - это глагол, связанный с числами, а числа - это не глагол, связанный с нечетным.

Таким образом, предполагаемый фрейм данных должен быть

Topic1 Topic2 Action
numbers odd    generate
column  from   generate
column  one    generate
column  and    generate
column  from   print
column  one    print
column  and    print
         .     generate

person NinjaR    schedule 15.02.2018    source источник


Ответы (1)


Сначала вам нужно, чтобы ваш тег дерева зависимостей печатался как глагол, а не как существительное.

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

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

person John R    schedule 16.02.2018
comment
Спасибо за ответ. Я отредактировал вопрос, показав состояние, к которому я пришел. Не могли бы вы взглянуть и поделиться примером кода, который может мне помочь - person NinjaR; 16.02.2018
comment
Мой ответ остается ответом. Ваш вопрос слишком широк для конкретного примера кода. Здесь никто не собирается искать для вас генератор многокорневого дерева зависимостей. Отметьте правильный ответ, попробуйте найти его самостоятельно, а затем задайте другой вопрос на следующем препятствии, с которым вы столкнетесь. - person John R; 16.02.2018
comment
Это было чрезвычайно полезно ... огромное спасибо ... Я обязательно опубликую, когда столкнусь со следующим препятствием. Отличная работа по принятию решения для всего населения SO. Спасибо еще раз. - person NinjaR; 16.02.2018