我使用 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]]