サーチ…


前書き

自然言語処理(NLP)は、人間によって生成されたテキスト入力から情報を取り出すことに焦点を当てたコンピュータサイエンスの分野です。

項頻度行列を作成する

問題への最も簡単なアプローチ(そしてこれまでに最も一般的に使用されている)は、センテンスをトークンに分割することです。簡潔に言えば単語は抽象的で主観的な意味を持ち、受け取ったり受信したりするトークンに客観的な解釈があります:順序付けられた文字列(またはバイト)。文が分割されると、トークンの順序は無視されます。 単語のバッグのモデルとして知られている問題へのこのアプローチ。

用語頻度は辞書であり、各トークンに対して重みが割り当てられる。第1の例では、Rパッケージtm用いてコーパスコーパス文書集合)からターム頻度行列を構築する。

require(tm)
doc1 <- "drugs hospitals doctors"
doc2 <- "smog pollution environment"
doc3 <- "doctors hospitals healthcare"
doc4 <- "pollution environment water"
corpus <- c(doc1, doc2, doc3, doc4)
tm_corpus <- Corpus(VectorSource(corpus))

この例では、 CorpusVectorSource 2つの関数を持つパッケージtmによって定義されたCorpusクラスのCorpusを作成しました。これは文字ベクトルからVectorSourceオブジェクトを返します。オブジェクトtm_corpusは、各文書を記述するための追加のメタデータとオプションのメタデータのリストです。

str(tm_corpus)
List of 4
 $ 1:List of 2
  ..$ content: chr "drugs hospitals doctors"
  ..$ meta   :List of 7
  .. ..$ author       : chr(0) 
  .. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-03 00:31:34"
  .. ..$ description  : chr(0) 
  .. ..$ heading      : chr(0) 
  .. ..$ id           : chr "1"
  .. ..$ language     : chr "en"
  .. ..$ origin       : chr(0) 
  .. ..- attr(*, "class")= chr "TextDocumentMeta"
  ..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
[truncated]

私たちが持っていたらCorpus 、私たちは中に含まれるトークン前処理に進むことができCorpus最終的な出力(用語頻度行列)の品質を改善します。これを行うには、 tm関数tm_mapを使用します。関数tm_mapは、 apply関数tm_mapと同様に、各文書に関数を適用してコーパス内の文書を変換します。

tm_corpus <- tm_map(tm_corpus, tolower)
tm_corpus <- tm_map(tm_corpus, removeWords, stopwords("english"))
tm_corpus <- tm_map(tm_corpus, removeNumbers)
tm_corpus <- tm_map(tm_corpus, PlainTextDocument)
tm_corpus <- tm_map(tm_corpus, stemDocument, language="english")
tm_corpus <- tm_map(tm_corpus, stripWhitespace)
tm_corpus <- tm_map(tm_corpus, PlainTextDocument)

これらの変換に続いて、最終的に

tdm <- TermDocumentMatrix(tm_corpus)

それは

<<TermDocumentMatrix (terms: 8, documents: 4)>>
Non-/sparse entries: 12/20
Sparsity           : 62%
Maximal term length: 9
Weighting          : term frequency (tf)

それを行列に変換することで見ることができる

as.matrix(tdm)

           Docs
Terms       character(0) character(0) character(0) character(0)
  doctor               1            0            1            0
  drug                 1            0            0            0
  environ              0            1            0            1
  healthcar            0            0            1            0
  hospit               1            0            1            0
  pollut               0            1            0            1
  smog                 0            1            0            0
  water                0            0            0            1

各行は、各文書(4つの文書、4つのコラム)で、気づいたように( environmentへのenviron )各トークンの頻度を表します。

前の行では、各ペアのトークン/ドキュメントに絶対的な頻度(つまり、ドキュメントに表示されるトークンのインスタンス数)を重み付けしました。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow