rtexthinditerm-document-matrix

Non English term document matrix


I have the following dataframe made of English and Hindi texts I want to read the hindi texts in R

Click Percentage       Email_Subject
18.12807882         तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें
11.91957875         तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें
0                   तेजस्वी गैलेक्सी ए 5 (2016) बस 1634 रुपए प्रति माह से शुरू खरीदें
9.523809524         खेल परिवर्तक यहाँ है।
6.789250354         एक फोन अपने समय से आगे जा सकता है।

How do I create a term document matrix in Hindi(Or any Non English Language, like thai). I have tried the tm package with this code

   text<-dataframe$Email_Subject
   mycorpus<-Corpus(VectorSource(text))
   mycorpus<-tm_map(mycorpus, tolower)
   mycorpus<-tm_map(mycorpus, removeNumbers)
   #mycorpus<-tm_map(mycorpus, removeWords, c(stopwords("hindi")))
    mycorpus
   dtm<-TermDocumentMatrix(mycorpus)
   m<-as.matrix(dtm)
   v <- sort(rowSums(m),decreasing=TRUE)
   d <- data.frame(word = names(v),freq=v)
   list(d1=d)

This however doesn't generate the term document matrix


Solution

  • You could do as follows:

    library(udpipe)
    x <- data.frame(Email_Subject = c("तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें", 
                                 "तेजस्वी गैलेक्सी ए 7 (2016) बस 1856 रुपए प्रति माह से शुरू खरीदें", 
                                 "तेजस्वी गैलेक्सी ए 5 (2016) बस 1634 रुपए प्रति माह से शुरू खरीदें", 
                                 "खेल परिवर्तक यहाँ है।", 
                                 "एक फोन अपने समय से आगे जा सकता है।"),
               stringsAsFactors = FALSE)
    ud_model <- udpipe_download_model(language = "hindi")
    ud_model <- udpipe_load_model(ud_model$file_model)
    
    anno <- udpipe_annotate(ud_model, x$Email_Subject)
    anno <- as.data.frame(anno)
    anno <- subset(anno, upos %in% c("NOUN", "PRON", "ADJ"))
    
    dtm <- document_term_frequencies(anno[, c("doc_id", "lemma")])
    dtm <- document_term_matrix(dtm)