如何为构建的模型分配新文本(文本挖掘)

时间:2015-08-23 06:53:46

标签: r text-mining

昨天我找到了良好的R代码,用于分类情感并采取了一些措施

happy = readLines("./happy.txt")
sad = readLines("./sad.txt")
happy_test = readLines("./happy_test.txt")
sad_test = readLines("./sad_test.txt")

tweet = c(happy, sad)
tweet_test= c(happy_test, sad_test)
tweet_all = c(tweet, tweet_test)
sentiment = c(rep("happy", length(happy) ), 
              rep("sad", length(sad)))
sentiment_test = c(rep("happy", length(happy_test) ), 
                   rep("sad", length(sad_test)))
sentiment_all = as.factor(c(sentiment, sentiment_test))


library(RTextTools)

mat= create_matrix(tweet_all, language="english", 
                   removeStopwords=FALSE, removeNumbers=TRUE, 
                   stemWords=FALSE, tm::weightTfIdf)

container = create_container(mat, as.numeric(sentiment_all),
                              trainSize=1:160, testSize=161:180,virgin=FALSE) 

models = train_models(container, algorithms=c("MAXENT",
                                              "SVM",
                                               #"GLMNET", "BOOSTING", 
                                               "SLDA","BAGGING", 
                                              "RF", # "NNET", 
                                              "TREE" 
                                               ))

# test the model
results = classify_models(container, models)

table(as.numeric(as.numeric(sentiment_all[161:180])), results[,"FORESTS_LABEL"])

一切都很好,但有一个问题。在这里,我们处理数据,我们自己向机器指出什么是悲伤的,什么是快乐的文本。如果我有新文件而没有表明什么是悲伤,什么是快乐或什么是积极的,什么是消极的(假设,这篇文件的路径之一n = read.csv(“C:/1/ttt.csv”)),怎么做,那个建立模型可以定义什么短语是否定的和什么是积极的?

1 个答案:

答案 0 :(得分:0)

那么,建立一个模型来检测什么是悲伤和什么是幸福的目的是什么?你想要实现什么?这看起来不像是问题/答案。

因此,您在标记数据中使用监督学习(您已经知道是悲伤或快乐)来了解定义这些类的内容,因此稍后您可以使用构建的模型来预测您没有标签的新内容。

因此,对于训练数据所做的任何转换都必须为新数据进行,并且您要求模型根据这些新输入数据进行预测(评估)。所以你使用预测作为结果。这不会改变您的模型,只是在新数据中进行评估。

另一种情况是你带来了新的标签数据,所以你想要更新你的模型,这样你就可以根据新数据重新训练它,你可能会学习可能有更多功能的新模型。

在您的情况下,您应该查看该程序包中的classify_modelclassify_models函数。