チェックアウトこのリンクを。
ここでは、非構造化テキストを読み込んでワードクラウドを作成します。この戦略を適用して、ワードクラウドを作成する代わりに、使用する用語の頻度マトリックスを作成できます。アイデアは、構造化されていないテキストを受け取り、何らかの形で構造化することです。Document Term Matricesを使用して、すべてを小文字(または大文字)に変更し、ストップワードを削除し、各職務の頻出用語を見つけます。単語をステミングするオプションもあります。単語をステミングすると、さまざまな形式の単語を同じ単語として検出できます。たとえば、「programmed」と「programming」は「program」にステム処理できます。これらの頻出用語の出現を、MLモデルトレーニングの重み付き機能として追加することができます。
また、これを頻繁なフレーズに適合させて、職務ごとに2〜3語の共通グループを見つけることもできます。
例:
1)ライブラリをロードし、サンプルデータをビルドする
library(tm)
library(SnowballC)
doc1 = "I am highly skilled in Java Programming. I have spent 5 years developing bug-tracking systems and creating data managing system applications in C."
job1 = "Software Engineer"
doc2 = "Tested new software releases for major program enhancements. Designed and executed test procedures and worked with relational databases. I helped organize and lead meetings and work independently and in a group setting."
job2 = "Quality Assurance"
doc3 = "Developed large and complex web applications for client service center. Lead projects for upcoming releases and interact with consumers. Perform database design and debugging of current releases."
job3 = "Software Engineer"
jobInfo = data.frame("text" = c(doc1,doc2,doc3),
"job" = c(job1,job2,job3))
2)次に、テキストの構造化を行います。次のことを行うためのより速い/より短い方法があると確信しています。
# Convert to lowercase
jobInfo$text = sapply(jobInfo$text,tolower)
# Remove Punctuation
jobInfo$text = sapply(jobInfo$text,function(x) gsub("[[:punct:]]"," ",x))
# Remove extra white space
jobInfo$text = sapply(jobInfo$text,function(x) gsub("[ ]+"," ",x))
# Remove stop words
jobInfo$text = sapply(jobInfo$text, function(x){
paste(setdiff(strsplit(x," ")[[1]],stopwords()),collapse=" ")
})
# Stem words (Also try without stemming?)
jobInfo$text = sapply(jobInfo$text, function(x) {
paste(setdiff(wordStem(strsplit(x," ")[[1]]),""),collapse=" ")
})
3)コーパスのソースとドキュメントの用語マトリックスを作成します。
# Create Corpus Source
jobCorpus = Corpus(VectorSource(jobInfo$text))
# Create Document Term Matrix
jobDTM = DocumentTermMatrix(jobCorpus)
# Create Term Frequency Matrix
jobFreq = as.matrix(jobDTM)
これで、頻度行列jobFreqができました。これは(3 x x)行列、3つのエントリ、X個の単語です。
ここからどこへ行くかはあなた次第です。特定の(より一般的な)単語のみを保持し、モデルの機能として使用できます。もう1つの方法は、「java」が「ソフトウェアエンジニア」で80%発生し、「品質保証」で50%しか発生しないなど、各ジョブの説明で使用する単語の割合を単純にすることです。
ここで、「保証」に1つの「r」があり、「発生」に2つの「r」がある理由を調べてみましょう。