如何用文本和数字变量训练套索?

时间:2018-06-16 13:56:10

标签: r classification tm text2vec

考虑这个经过修改的经典示例:

library(dplyr)
library(tibble)

dtrain <- data_frame(text = c("Chinese Beijing Chinese",
                              "Chinese Chinese Shanghai",
                              "France",
                              "Tokyo Japan Chinese"),
                     add_numeric = c(1, 1, 0, 1),
                     doc_id = 1:4,
                     class = c(1, 1, 1, 0))


> dtrain
# A tibble: 4 x 4
  text                     add_numeric doc_id class
  <chr>                          <dbl>  <int> <dbl>
1 Chinese Beijing Chinese            1      1     1
2 Chinese Chinese Shanghai           1      2     1
3 France                             0      3     1
4 Tokyo Japan Chinese                1      4     0

在这里,我想使用 lasso 来预测class。感兴趣的变量是textadd_numeric

我知道如何使用text2vectm仅使用class预测text:包会将text转换为稀疏文档字词矩阵,喂模型。

但是,在这里,我想同时使用文字变量textadd_numeric。我不知道如何混合这两种方法。有任何想法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

我还没有检查过如何用text2vec做这个,但是使用quanteda这很容易做到,只使用cbind,其优点是保持稀疏矩阵。我没有更改dimnames,因此添加的列将显示为feat1。

library(quanteda)

dtm <- dfm(dtrain$text) # create documenttermmatrix
dtm_num <- cbind(dtm, dtrain$add_numeric) # add column to sparse matrix.
dtm_num
Document-feature matrix of: 4 documents, 7 features (60.7% sparse).
4 x 7 sparse Matrix of class "dfm"
       features
docs    chinese beijing shanghai france tokyo japan feat1
  text1       2       1        0      0     0     0     1
  text2       2       0        1      0     0     0     1
  text3       0       0        0      1     0     0     0
  text4       1       0        0      0     1     1     1