我的问题:如何将词袋模型用作功能以馈入R中的svm?

我生成的一些数据很低:

Title Salary
"Software Engineer" 100000
"Software Engineer" 120000
"Junior Software Engineer" 60000
"Junior Software Engineer" 70000
"Senior Software Engineer" 130000


使用read.table,我可以获得2 * n的(字符,数字)矩阵。我想将“单词袋”应用于“标题”列。但是,如果我只是手动拆分任何条目,例如

jobs['Title'][1,] <- strsplit(jobs['Title'][1,], ' ')


这给出:

Title Salary
"Software" 100000
"Software Engineer" 120000
"Junior Software Engineer" 60000
"Junior Software Engineer" 70000
"Senior Software Engineer" 130000


并非我所料:

Title Salary
["Software", "Engineer"] 100000
"Software Engineer" 120000
"Junior Software Engineer" 60000
"Junior Software Engineer" 70000
"Senior Software Engineer" 130000


我的调用SVM的代码如下所示:

jobs <- read.table("jobs.data", header = TRUE, as.is = TRUE)
index <- 1:nrow(jobs)
testindex <- sample(index, trunc(length(index)/3))
testset <- jobs[testindex,]
trainset <- jobs[-testindex,]
svm.model <- svm(Salary ~ ., data = trainset, cost = 10, gamma = 1)
svm.pred <- predict(svm.model, testset)


我认为我做错了,但是我还没有找到解决方法,有人可以分享我应该怎么做吗?

谢谢。

最佳答案

令人担忧的是,机器学习问题中的一个基本问题被否决了。因此,让我回答我自己的问题。


每个单词都分配了一个向量,其中存在1个且不存在0个。本质上,这将形成一个稀疏矩阵以及该类的一列。
使用Python,改用字典来代表一袋单词。在Python中进行字符串操作要容易得多。将数据输入NLTK或PyOrange。


要点在于,R似乎不是用于字符串操作的语言。您可以使用tm库来帮助您。

我希望这对遇到类似问题的人有所帮助。

09-03 18:21