Re: Text entschlüsseln
Verfasst: Mi Sep 28, 2022 3:13 pm
Anbei noch ein Programm, in dem man eine Anwendung auf das vorliegende Problem (soweit ich es verstanden habe) sehen kann.
Ich möchte jetzt nicht alles im Voraus kommentieren, aber Fragen sind natürlich willkommen!
Auch nett :
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"