Ich möchte jetzt nicht alles im Voraus kommentieren, aber Fragen sind natürlich willkommen!
Code: Alles auswählen
library(data.table)
library(stringr)
library(parallel)
Kerne <- 40
alphabet <- c(letters[1:26],"ä","ö","ü","ß")
Transl <- function(wort) paste0(str_count(wort, alphabet), collapse="-")
DT <- fread("~/Buchstaben/Daten/word_list_german_spell_checked.txt", header=FALSE)
setnames(DT, "Wort")
DT.uni <- unique(DT[ , Wort:=tolower(Wort)])
a <- proc.time()
DT.uni[ , Uebersetzung:=unlist(mclapply(Wort, Transl, mc.cores=Kerne))]
proc.time() - a
DT.uni[ , lnr:=1:.N, by=Uebersetzung]
DT.uni[ , Gruppenname:=min(Wort), by=Uebersetzung]
setkey(DT.uni, Uebersetzung)
#----------- Konstruktion eines verstellten Beispielstextes -------------------
Ursprünglicher_Satz <- "Hallo zusammen, ich habe das Problem, dass ich einen unbekannten Text entschlüsseln möchte."
Ohne_Satzzeichen <- tolower(gsub('[[:punct:] ]+',' ',Ursprünglicher_Satz))
einzelne_Wörter <- strsplit(Ohne_Satzzeichen, split=" ")[[1]]
Verstellung <- function(Wort){
l <- nchar(Wort)
torw <- paste(strsplit(tolower(Wort),"")[[1]][sample(1:l)], collapse="")
}
verschwurbelt <- paste(sapply(einzelne_Wörter, Verstellung), collapse=" ")
#---------------- Auffinden von Alternativen -----------------------------------
Finder <- function(xWort){
such <- Transl(xWort)
Alternativen <- DT.uni[such]
Ausgabe <- paste(Alternativen$Wort, collapse=("|"))
if(is.na(Ausgabe)) Ausgabe <- paste0("-- NOMATCH: ", xWort, " --")
return(Ausgabe)
}
Einzelteile <- strsplit(verschwurbelt, " ")[[1]]
Vorschlag <- paste(sapply(Einzelteile, Finder), collapse=" ")
Code: Alles auswählen
Ursprünglicher_Satz <- "Hier mein erster Gedanke: ich denke, Du kannst Dir das ganze Permutieren komplett ersparen und einfach die Buchstaben in jedem Wort alphabetisch sortieren."
Code: Alles auswählen
> Vorschlag
[1] "hier|ihre mein|mine erster gedanke chi|ich denke du kannst dir das ganze|gazen|zange permutieren komplett ersparen und einfach die|eid|ide buchstaben in jedem wort alphabetisch riesentor|sortieren|torriesen|torserien"