如何从NLP树中提取元素?

时间:2015-01-25 04:58:40

标签: r nlp opennlp

我使用 NLP 包来解析句子。如何从创建的Tree输出中提取元素?例如,我想从以下示例中获取名词短语(NP):

library(NLP)
library(openNLP)

s <- c(
    "Really, I like chocolate because it is good.", 
    "Robots are rather evil and most are devoid of decency"
)
s <- as.String(s)


sent_token_annotator <- Maxent_Sent_Token_Annotator()
word_token_annotator <- Maxent_Word_Token_Annotator()
a2 <- annotate(s, list(sent_token_annotator, word_token_annotator))

parse_annotator <- Parse_Annotator()

p <- parse_annotator(s, a2)
ptexts <- sapply(p$features, `[[`, "parse")
ptexts

ptrees <- lapply(ptexts, Tree_parse)

ptrees

## [[1]]
## (TOP
##   (S
##     (S
##       (S
##         (ADVP (RB Really))
##         (, ,)
##         (NP (PRP I))
##         (VP
##           (VBP like)
##           (NP (NN chocolate))
##           (SBAR (IN because) (S (NP (PRP it)) (VP (VBZ is) (ADJP (JJ good)))))))
##       (. .)
##       (, ,)
##       (NP (NNP Robots))
##       (VP (VBP are) (ADJP (RB rather) (JJ evil))))
##     (CC and)
##     (S (NP (RBS most)) (VP (VBP are) (ADJP (JJ devoid) (PP (IN of) (NP (NN decency))))))))

我想从Tree抓取一些内容,但无法从Tree_parse的文档中找到答案。使用str表示它应该很容易,但我无法实现它。

我希望返回类似的内容:

[1] "I"      "Robots"

或者作为list而不是矢量。

这可能需要安装 openNLPmodels.en http://datacube.wu.ac.at/src/contrib/

下载并运行

install.packages(
    "http://datacube.wu.ac.at/src/contrib/openNLPmodels.en_1.5-1.tar.gz",  
    repos=NULL, 
    type="source"
)
              `

如果有帮助的人可以直接使用我的Dropbox中的 curl 包来源Tree

library(curl)
ptrees <- source(curl("https://dl.dropboxusercontent.com/u/61803503/Errors/tree.R"))[[1]]

0 个答案:

没有答案