1

我正在使用 corenlp 包对 R 中的用例进行依赖项解析。但是,我需要针对特定​​用例调整数据框。

我需要一个数据框,其中包含三列。我已经使用下面的代码到达依赖树。

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 是一个连接到数字的动词,而 numbers 是一个连接到奇数的非动词。

所以预期的数据框需要是

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
4

1 回答 1

1

首先,您需要将依赖树标记打印为动词,而不是名词。

尝试使用带有两个独立子句的句子,并查看第二个独立子句的词根是否被标记为这样。

如果是这样,只需简单地浏览Governoridx 列。如果没有,您将需要解决依赖树生成器的机制。

于 2018-02-16T05:45:51.820 回答