我正在尝试计算所有行中的部分语音标签并对其进行总结。按列计算POS标签
现在我达到了两个输出:
1)/ DT问题/ NN为/ VBD,/什么/ WP是/ VBP你/ PRP要去/ VBG到/剪切/ VB /?。 (“DT”,“NN”,“VBD”,“,”,“WP”,“VBP”,“PRP”,“VBG”,“T0”,“VB”,“ “)
在该特定示例期望输出是:
DT NN VBD WP VBP PRP VBG TO VB
1 doc 1 1 1 1 1 1 1 1 1
但是,由于我想创建它用于在数据帧的整个列我想看到有0值以及在一个列,其对应于这个句子中没有使用的POS标签。
例子:
1 doc = "The/DT question/NN was/VBD ,/, what/WP are/VBP you/PRP going/VBG to/TO cut/VB ?/"
2 doc = "Response/NN ?/."
输出:
DT NN VBD WP VBP PRP VBG TO VB
1 doc 1 1 1 1 1 1 1 1 1
2 doc 0 1 0 0 0 0 0 0 0
我做什么现在:
library(stringr)
#Spliting into sentence based on carriage return
s <- unlist(lapply(df$sentence, function(x) { str_split(x, "\n") }))
library(NLP)
library(openNLP)
tagPOS <- function(x, ...) {
s <- as.String(x)
word_token_annotator <- Maxent_Word_Token_Annotator()
a2 <- Annotation(1L, "sentence", 1L, nchar(s))
a2 <- annotate(s, word_token_annotator, a2)
a3 <- annotate(s, Maxent_POS_Tag_Annotator(), a2)
a3w <- a3[a3$type == "word"]
POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
list(POStagged = POStagged, POStags = POStags)
}
result <- lapply(s,tagPOS)
result <- as.data.frame(do.call(rbind,result))
这就是我如何达到这是在开头描述的输出
我h ave试图计算这样的事件: 发生< -as.data.frame(表(unlist(result $ POStags)))
但它统计整个数据帧的发生次数。我需要为现有数据框创建新列并在第一列中统计出现次数。
任何人都可以帮助我吗? :(使用tm
上添加所需的输出,到目前为止,你已经尝试过什么做得很好,但你也可以提供你的'df'的样本? –
也可能会查看'tm :: TermDocumentMatrix',使用您的POS标签代替文档中的实际字词来创建矩阵。 –
我对tm有同样的想法。我会在今天晚些时候尝试。谢谢! 关于df: '问题是,你要削减什么? 它完全失去控制。 我支持洁净煤技术.' 这是我在df – ZverArt