使用 e1071 (SVM) 的文本分类
Text classification using e1071 (SVM)
我有一个包含两列的数据框。一栏包含文本。该列的每一行都包含三种不同 classes(技能、资格、经验)的某种类型的数据,另一列是它们各自的 class 标签。
数据帧的快照:
如何应用包 e1071 中的 svm。如何将文本数据列转换为一些乐谱。我想将文本列转换为文档术语矩阵。他们还有别的办法吗?如何制作 d-t 矩阵?
您可以使用 RTextTools 包来创建文档术语矩阵。
使用 create_matrix 函数:
# Create the document term matrix. If column name is v1
dtMatrix <- create_matrix(data["v1"])
然后你可以使用这个训练你的 SVM 模型:
# Configure the training data
container <- create_container(dtMatrix, data$label, trainSize=1:102, virgin=FALSE)
# train a SVM Model
model <- train_model(container, "SVM", kernel="linear", cost=1)
有关信息,RTextTools 用户 e1071 内部打包以训练模型。
更多详细信息,请参阅 RTextTools 和 e1071 文档。
您可以使用 R 中的 tm 包。您必须在形成文档术语矩阵之前对文本进行预处理,其中包括 - 删除停用词、标点符号、数字、规范化(USA = U.S.A) 、词干提取等。为 dtm 添加权重 - ( tfidf) 以增加重要术语的重要性。
完成这些步骤后,您可以使用 e1071 中的 svm() 来训练分类器
fit <- svm(x, y, kernel = "linear")
这里,
x = dtm
y = a vector of the corresponding labels
使用模型为您的测试数据预测 类(确保您的测试数据也经过预处理)
我也考虑过使用 RTextTools。它有一个相对容易的实现。但是,如果您的数据有 class 不平衡,它就没用了。它不允许您控制容器中的分层拆分。
container <- create_container(dtMatrix, data$label, trainSize=1:102, virgin=FALSE)
您不知道您的 class 标签的比例如何最终出现在“trainSize=1:102”参数中。
它也没有得到维护。所以,我会避免使用它。
我有一个包含两列的数据框。一栏包含文本。该列的每一行都包含三种不同 classes(技能、资格、经验)的某种类型的数据,另一列是它们各自的 class 标签。
数据帧的快照:
如何应用包 e1071 中的 svm。如何将文本数据列转换为一些乐谱。我想将文本列转换为文档术语矩阵。他们还有别的办法吗?如何制作 d-t 矩阵?
您可以使用 RTextTools 包来创建文档术语矩阵。 使用 create_matrix 函数:
# Create the document term matrix. If column name is v1
dtMatrix <- create_matrix(data["v1"])
然后你可以使用这个训练你的 SVM 模型:
# Configure the training data
container <- create_container(dtMatrix, data$label, trainSize=1:102, virgin=FALSE)
# train a SVM Model
model <- train_model(container, "SVM", kernel="linear", cost=1)
有关信息,RTextTools 用户 e1071 内部打包以训练模型。
更多详细信息,请参阅 RTextTools 和 e1071 文档。
您可以使用 R 中的 tm 包。您必须在形成文档术语矩阵之前对文本进行预处理,其中包括 - 删除停用词、标点符号、数字、规范化(USA = U.S.A) 、词干提取等。为 dtm 添加权重 - ( tfidf) 以增加重要术语的重要性。
完成这些步骤后,您可以使用 e1071 中的 svm() 来训练分类器
fit <- svm(x, y, kernel = "linear")
这里,
x = dtm
y = a vector of the corresponding labels
使用模型为您的测试数据预测 类(确保您的测试数据也经过预处理)
我也考虑过使用 RTextTools。它有一个相对容易的实现。但是,如果您的数据有 class 不平衡,它就没用了。它不允许您控制容器中的分层拆分。
container <- create_container(dtMatrix, data$label, trainSize=1:102, virgin=FALSE)
您不知道您的 class 标签的比例如何最终出现在“trainSize=1:102”参数中。 它也没有得到维护。所以,我会避免使用它。