Librerías

Establecer conexión con el .txt con el libro del quijote, guardar información y cerrar la conexión.

quijote<-file(description = "quijote.txt",
              open = "r",
              encoding = "UTF-8")
quijote_lines<-readLines(quijote)
close.connection(quijote,"r")
rm(quijote)

Función de limpieza

clean_corpus<-function(corpus){
  corpus<-tm_map(corpus,stripWhitespace)
  corpus<-tm_map(corpus,removePunctuation)
  corpus<-tm_map(corpus,content_transformer(tolower))
  corpus<-tm_map(corpus,removeNumbers)
  return(corpus)
}

Función de separación en bigramas

BigramTokenizer<-function(x){
  unlist(lapply(ngrams(words(x),2),paste,collapse=" "),use.names = FALSE)
}

Limpieza del corpus del libro

quijote_src<-VectorSource(quijote_lines)
quijote_corpus<-VCorpus(quijote_src)
quijote_corpus<-clean_corpus(quijote_corpus)
tdm<-TermDocumentMatrix(quijote_corpus,control = list(tokenize=BigramTokenizer))
m<-as.matrix(tdm)
Error: cannot allocate vector of size 1.2 Gb

Debido a la capacidad de la memoria RAM no se pudieron realizar las acciones anteriores Por lo tanto, se carga el archivo proporcionado por el ingeniero en el laboratorio

load("data.RData")
names(bigram)<-c("frequency","bigram")
bigram<-separate(bigram,bigram,into=c("word1","word2"),sep= " ")
bigram$frequency<-as.integer(bigram$frequency)

Observar cuantas palabras existen y cuantas son únicas, para saber el tamaño de la matriz

length(bigram$word1)
[1] 29968
length(bigram$word2)
[1] 29968
length(bigram$frequency)
[1] 29968
length(unique(bigram$word1))
[1] 7083
length(unique(bigram$word2))
[1] 6795
matriz<-matrix(nrow = length(bigram$word1),ncol = length(bigram$word2))
Error: cannot allocate vector of size 3.3 Gb

Se presentaron algunas complicaciones en cuanto a la memoria de la computadora y el tamaño de las matrices

LS0tDQp0aXRsZTogIkxhYm9yYXRvcmlvIDMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpMaWJyZXLtYXMNCmBgYHtyLCB3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0bSkNCmxpYnJhcnkodGlkeXIpDQpgYGANCg0KRXN0YWJsZWNlciBjb25leGnzbiBjb24gZWwgLnR4dCBjb24gZWwgbGlicm8gZGVsIHF1aWpvdGUsIA0KZ3VhcmRhciBpbmZvcm1hY2nzbiB5IGNlcnJhciBsYSBjb25leGnzbi4NCmBgYHtyfQ0KcXVpam90ZTwtZmlsZShkZXNjcmlwdGlvbiA9ICJxdWlqb3RlLnR4dCIsDQogICAgICAgICAgICAgIG9wZW4gPSAiciIsDQogICAgICAgICAgICAgIGVuY29kaW5nID0gIlVURi04IikNCg0KcXVpam90ZV9saW5lczwtcmVhZExpbmVzKHF1aWpvdGUpDQpjbG9zZS5jb25uZWN0aW9uKHF1aWpvdGUsInIiKQ0Kcm0ocXVpam90ZSkNCmBgYA0KDQpGdW5jafNuIGRlIGxpbXBpZXphDQpgYGB7cn0NCmNsZWFuX2NvcnB1czwtZnVuY3Rpb24oY29ycHVzKXsNCiAgY29ycHVzPC10bV9tYXAoY29ycHVzLHN0cmlwV2hpdGVzcGFjZSkNCiAgY29ycHVzPC10bV9tYXAoY29ycHVzLHJlbW92ZVB1bmN0dWF0aW9uKQ0KICBjb3JwdXM8LXRtX21hcChjb3JwdXMsY29udGVudF90cmFuc2Zvcm1lcih0b2xvd2VyKSkNCiAgY29ycHVzPC10bV9tYXAoY29ycHVzLHJlbW92ZU51bWJlcnMpDQogIHJldHVybihjb3JwdXMpDQp9DQpgYGANCg0KRnVuY2nzbiBkZSBzZXBhcmFjafNuIGVuIGJpZ3JhbWFzDQpgYGB7cn0NCkJpZ3JhbVRva2VuaXplcjwtZnVuY3Rpb24oeCl7DQogIHVubGlzdChsYXBwbHkobmdyYW1zKHdvcmRzKHgpLDIpLHBhc3RlLGNvbGxhcHNlPSIgIiksdXNlLm5hbWVzID0gRkFMU0UpDQp9DQpgYGANCg0KDQpMaW1waWV6YSBkZWwgY29ycHVzIGRlbCBsaWJybw0KYGBge3J9DQpxdWlqb3RlX3NyYzwtVmVjdG9yU291cmNlKHF1aWpvdGVfbGluZXMpDQpxdWlqb3RlX2NvcnB1czwtVkNvcnB1cyhxdWlqb3RlX3NyYykNCg0KcXVpam90ZV9jb3JwdXM8LWNsZWFuX2NvcnB1cyhxdWlqb3RlX2NvcnB1cykNCmBgYA0KDQpgYGB7cn0NCnRkbTwtVGVybURvY3VtZW50TWF0cml4KHF1aWpvdGVfY29ycHVzLGNvbnRyb2wgPSBsaXN0KHRva2VuaXplPUJpZ3JhbVRva2VuaXplcikpDQptPC1hcy5tYXRyaXgodGRtKQ0Kcm93U3Vtcyhhcy5tYXRyaXgodGRtKSklPiVhcy5kYXRhLmZyYW1lKCklPiVWaWV3KCkNCmJpZ3JhbTwtcm93U3VtKG0pJT4lYXMuZGF0YS5mcmFtZSgpDQpgYGANCg0KRGViaWRvIGEgbGEgY2FwYWNpZGFkIGRlIGxhIG1lbW9yaWEgUkFNIG5vIHNlIHB1ZGllcm9uIHJlYWxpemFyIGxhcyBhY2Npb25lcyBhbnRlcmlvcmVzDQpQb3IgbG8gdGFudG8sIHNlIGNhcmdhIGVsIGFyY2hpdm8gcHJvcG9yY2lvbmFkbyBwb3IgZWwgaW5nZW5pZXJvIGVuIGVsIGxhYm9yYXRvcmlvDQoNCmBgYHtyfQ0KbG9hZCgiZGF0YS5SRGF0YSIpDQoNCm5hbWVzKGJpZ3JhbSk8LWMoImZyZXF1ZW5jeSIsImJpZ3JhbSIpDQpiaWdyYW08LXNlcGFyYXRlKGJpZ3JhbSxiaWdyYW0saW50bz1jKCJ3b3JkMSIsIndvcmQyIiksc2VwPSAiICIpDQpiaWdyYW0kZnJlcXVlbmN5PC1hcy5pbnRlZ2VyKGJpZ3JhbSRmcmVxdWVuY3kpDQpgYGANCg0KT2JzZXJ2YXIgY3VhbnRhcyBwYWxhYnJhcyBleGlzdGVuIHkgY3VhbnRhcyBzb24g+m5pY2FzLCBwYXJhIHNhYmVyIGVsIHRhbWHxbyBkZSBsYSBtYXRyaXoNCmBgYHtyfQ0KbGVuZ3RoKGJpZ3JhbSR3b3JkMSkNCmxlbmd0aChiaWdyYW0kd29yZDIpDQpsZW5ndGgoYmlncmFtJGZyZXF1ZW5jeSkNCmxlbmd0aCh1bmlxdWUoYmlncmFtJHdvcmQxKSkNCmxlbmd0aCh1bmlxdWUoYmlncmFtJHdvcmQyKSkNCmBgYA0KDQpgYGB7cn0NCm1hdHJpejwtbWF0cml4KG5yb3cgPSBsZW5ndGgoYmlncmFtJHdvcmQxKSxuY29sID0gbGVuZ3RoKGJpZ3JhbSR3b3JkMikpDQpmb3IoaSBpbiAxOmxlbmd0aChiaWdyYW0kd29yZDEpKXsNCiAgZm9yKGogaW4gMTpsZW5ndGgoYmlncmFtJHdvcmQyKSl7DQogICAgaWYoaT09ail7DQogICAgICBtYXRyaXpbaSxqXTwtYmlncmFtJGZyZXF1ZW5jeVtpXQ0KICAgIH0NCiAgfQ0KfQ0KYGBgDQoNClNlIHByZXNlbnRhcm9uIGFsZ3VuYXMgY29tcGxpY2FjaW9uZXMgZW4gY3VhbnRvIGEgbGEgbWVtb3JpYSBkZSBsYSBjb21wdXRhZG9yYSB5IGVsIHRhbWHxbyBkZSBsYXMgbWF0cmljZXMNCg0K