2017-10-23 11 views
0

私は現在、テキストマイニングを使用してRで文章行列を作成するのに関連するものを見つけるのに苦労しています。テキストマイニング:文章行列の取得

私はtmパッケージを使用しています。私が見つけることができるのは、tdmまたはdtmに変換することだけです。

私はテキストマイニングの1つの列だけに興味があるところで、1つしかエクセルファイルを使用していません。その1列には約1200行あります。私は行(文) - 項行列を作成したい。私は各行(文)の単語の頻度を教えてくれる行列を作りたいと思っています。

後でPCA解析を実行できる1と0の行列を作成したいと思います。

私の場合のdtmは、1つのファイルしか使用していないため、行数は1であり、列はそのドキュメント全体の単語の頻度です。

代わりに、私はそれが理にかなっていれば、文章を文書として扱いたいと思っています。そこから、私は、各文章中の単語の頻度を表す行列を求めます。

ありがとうございました!

答えて

1

text2vecを使用する場合、文字ベクトルとしての列の内容をトークナイザ関数に入力するだけで済みます。下記の例を参照してください。

ダウンストリーム解析に関しては、カウントデータ/整数値でPCAを実行することはお勧めしませんが、PCAはこの種のデータ用に設計されていません。 dtmに正規化、tfidf加重などを適用して、連続データに変換してからPCAに送ってください。そうでなければ、通信解析を適用する必要があります。

# Read Data from file using fread (for .csv from data.table package) 
dat <- fread(filename, <add parameters as needed - col.namess, nrow etc>) 
counts <- sapply(row_start:row_end, function(z) str_count(dat[z,.(selected_col_name)],"the")) 

これはあなたのすべての回出てくる与えるだろう「」選択された行のための興味の欄に:ので、ここでコメントを追加することはできません

library(text2vex) 

docs <- c("the coffee is warm", 
      "the coffee is cold", 
      "the coffee is hot", 
      "the coffee is warm", 
      "the coffee is hot", 
      "the coffee is perfect") 


#Generate document term matrix with text2vec  
tokens = docs %>% 
    word_tokenizer() 

it = itoken(tokens 
      ,ids = paste0("sent_", 1:length(docs)) 
      ,progressbar = FALSE) 

vocab = create_vocabulary(it) 

vectorizer = vocab_vectorizer(vocab) 

dtm = create_dtm(it, vectorizer, type = "dgTMatrix") 
-1

は提案です。すべての行に対応する場合は、applyを使用することもできます。または異なるバリエーションのための他のネストされた関数。小文字/大文字を確認する必要があることを覚えておいてください。これを達成するにはtolowerを使用できます。これが参考になることを願っています! コーパスライブラリと

0

:あなたはすでに文章にテキストを分割するように

library(corpus) 
library(Matrix) 

corpus <- federalist # sample data 
x <- term_matrix(text_split(corpus, "sentences")) 

があるが、あなたの場合には、それが聞こえます。それが本当であれば、text_splitコールは必要ありません。ただ

​​

(あなたのデータに適しているものは何でもしてdata$your_column_with_sentencesを交換)を行います。

関連する問題