私はすべての品詞タグを1行に数えて合計します。今では列ごとのPOSタグのカウント
は、私は2つの出力に達し:
1)/ DTの質問を/ NNでした/ VBDは、/、どのような/ WPは/ VBPあなた/ PRP// VBをカットするために/ VBGを行く/ですか?。 "VB"、 "VBP"、 "PRP"、 "VBG"、 "TO"、 "VB"、 "VB"、 "VB"、 "VB"、 "VB"、 "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))
私は初め
で記述された出力に達した方法ですIh aveは次のような出現回数をカウントしようとしました: 出現< -as.data.frame(table(unlist(result $ POStags)))
しかし、データフレーム全体で出現回数がカウントされます。既存のデータフレームに新しい列を作成し、最初の列にオカレンスを数える必要があります。
誰でも教えてください。 :(tm
を使用して
だけでなく、あなたも可能性が所望の出力を追加し、あなたがこれまでに試した上で行われますが、あなたの 'df'のサンプルを提供しますか? –
また、 'tm :: TermDocumentMatrix'を見て、ドキュメントの実際の単語の代わりにPOStagsを使って、マトリックスを作成することもできます。 –
私はtmに関して同じ考えを持っていました。私は今日後でそれを試してみます。ありがとうございました! dfについて: '問題は何だったのですか? 完全に制御不能です。 私はクリーンコールテクノロジーをサポートしています。 ' これは私がdfで持っているものです – ZverArt