Search code examples
rmatrixdata.tablesparse-matrixquanteda

R: sparse matrix multiplication with data.table and quanteda package?


I am trying to create a matrix mulptiplication with sparse matrix and with the package called quanteda, utilising data.table package, related to this thread here. So

require(quanteda) 

mytext <- c("Let the big dogs hunt", "No holds barred", "My child is an honor student")     
myMatrix <-dfm(mytext, ignoredFeatures = stopwords("english"), stem = TRUE) #a data.table
as.matrix(myMatrix) %*% transpose(as.matrix(myMatrix))

how can you get the matrix multiplication working here with quanteda package and sparse matrices?


Solution

  • This works just fine:

    mytext <- c("Let the big dogs hunt", 
                "No holds barred", 
                "My child is an honor student")     
    myMatrix <- dfm(mytext)
    
    myMatrix %*% t(myMatrix)
    ## 3 x 3 sparse Matrix of class "dgCMatrix"
    ##       text1 text2 text3
    ## text1     5     .     .
    ## text2     .     3     .
    ## text3     .     .     6
    

    No need to coerce to a dense matrix using as.matrix(). Note that it is no longer a "dfmSparse" object because it's no longer a matrix of documents by features.