読者です 読者をやめる 読者になる 読者になる

Rで英文に品詞情報を付与する

r corpus nlp

 Rで英文に品詞情報を付与したいときは、openNLPパッケージを利用します。このパッケージの関数を使うと、Apache OpenNLP Maxent Part of Speech taggerによる品詞情報付与を行うことができます。以下の例では、Rの公式ウェブサイトから取った文に品詞タグを付与しています。

# パッケージの読み込み
library(openNLP)
library(NLP)

# テキストの読み込み
text <- "R is a free software environment for statistical computing and graphics."
text <- as.String(text)

# 品詞情報付与
sent_token_annotator <- Maxent_Sent_Token_Annotator()
word_token_annotator <- Maxent_Word_Token_Annotator()
text_an <- annotate(text, list(sent_token_annotator, word_token_annotator))
pos_tag_annotator <- Maxent_POS_Tag_Annotator()
text_an2 <- annotate(text, pos_tag_annotator, text_an)

# 品詞情報付与結果の整形
text_an3 <- subset(text_an2, type == "word")
tags <- sapply(text_an3$features, "[[", "POS")
sprintf("%s: %s", text[text_an3], tags)

 上記のスクリプトを実行すると、以下のような結果が表示されます。

 [1] "R: NN"           "is: VBZ"         "a: DT"          
 [4] "free: JJ"        "software: NN"    "environment: NN"
 [7] "for: IN"         "statistical: JJ" "computing: NN"  
[10] "and: CC"         "graphics: NNS"   ".: ."   

 このパッケージの詳しい使い方については、公式のマニュアルを参照してください。*1

*1:Parse_Annotator関数という構文解析のための関数も実装されていて、英文を解析するにはopenNLPmodels.enというパッケージが必要らしいのですが、現在はCRANから削除されていて、こちらで公開されているようです。