形態素解析やってみた
形態素解析の種類
主に上三つは日本語に、下二つは英語に使われているようです。
今回は、使用するデータが英語であることから Tree Tagger を用います。
形態素解析の準備
形態素解析の関数 treetag() を使用するには以下のパッケージが必要です。
library(koRpus) library(dplyr)
英語用のコーパス(辞書)もインストールします。
library(koRpus.lang.en) # available.koRpus.lang()
「koRpus.lang.XX」の XX に使用したい言語の頭文字二つを入力しています。
他の使用できる言語は二つ目の関数 available.koRpus.lang() で参照できます。
形態素解析の準備(Tree Tagger のインストール)
以下のサイトを参考にしながらインストールしました。
- https://www.cis.lmu.de/~schmid/tools/TreeTagger/ (公式)
- http://whchat.blogspot.com/2014/06/mac-treetagger.html#HowToPath
以下のように、ファイルを選ぶと環境設定が完了する。
set.kRp.env(TT.cmd="/Applications/TreeTagger/cmd/tree-tagger-english", lang="en")
形態素解析【実践】
形態素解析をおこないます。
関数 treetag() にテキストファイル(**.txt)を入力すればOKです。
ここでは、オブジェクト file.txt に代入しています。
tagged.text <- treetag(file.txt, doc_id = "sample")
形態素解析【結果】
結果を見てみます。
- doc_id…txt データの名前です。今回は関数の引数で指定した”sample”と表示されています。
- token … 単語
- tag … タグ 詳細はこちら
- lemma … 原形
- lttr … 文字数(読みこんだ文書中の)
- wclass… 品詞
- idx. … 文書中の場所
tagged.text %>% head
## doc_id token tag lemma lttr wclass desc stop stem idx sntc ## 1 sample THE DT the 3 determiner NA NA NA 1 1
データの要約は以下のように確認できます。
- all.chars … 文字数の合計
- lines …
- words …
- sentences …
describe(tagged.text) %>% head
## $all.chars
## [1] 146268
##
## $lines
## [1] 2958
##
## $normalized.space
## [1] 144636
##
## $chars.no.space
## [1] 117776
##
## $punct
## [1] 7145
##
## $digits
## [1] 250
出力結果はS4クラスでした。
関数 taggedText() でデータフレームに変換できます。
taggedText(tagged.text) %>% head()
## doc_id token tag lemma lttr wclass desc stop stem idx
## 1 sample THE DT the 3 determiner NA NA NA 1
## 2 sample BIRTH NN birth 5 noun NA NA NA 2
## 3 sample OF IN of 2 preposition NA NA NA 3
## 4 sample MY PP$ my 2 pronoun NA NA NA 4
## 5 sample KITCHEN-TABLE JJ kitchen-table 13 adjective NA NA NA 5
## 6 sample FICTION NN fiction 7 noun NA NA NA 6
## sntc
## 1 1
## 2 1
## 3 1
## 4 1
## 5 1
## 6 1
参考
今後やりたいこと
- 結果の可視化
- 複数の文書への適用
- 次元削減手法の適用
- 出力結果が多い時、スクロールさせたいんだけどなんかできない。。