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

Я использую разбор зависимостей для варианта использования в 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       .

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

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

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

1 ответ

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

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

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

Другие вопросы по тегам