« Je voyage moi-même, je viens apporté un billet de monde pour aller à singapour, darwin, perth, adelaide, melbourne, brisbane, le coût de l'or, sydney Opra, christchurch , côte d'or Richland, Aukland, Austrlia, et fji C'est un voyage de 10 mois Je vais y aller seul, je n'ai pas peur mais mes amis et ma famille semblent être contre l'idée J'ai expliqué que c'est sûr et que je vais probablement rencontrer des gens le long du chemin et les auberges ne sont pas aussi mauvaises que ce qu'elles ont été faites pour être au moins un tiers de mon voyage je resterai avec mes amis et ma famille. Les vues me font douter de la sécurité, je viens du Royaume-Uni, je serai loin de chez moi, et ils ont peur que je sois dans le pétrin ... Je n'ai jamais été aux Etats-Unis "
J'ai une liste de lieux aussi grande que 5000 lignes. Comme Londres, Singapour, Sydney, Aukland, Fidji, Gold Coast, Sydney Opera, Australie, Royaume-Uni, Etats-Unis ....
Problème Obtenez les places sur l'entrée en faisant correspondre de la liste des lieux. Avec des erreurs d'orthographe et le match le plus proche. Une optimisation est requise.
sortie Singapour | Darwin | perth | adelaide | melbourne | brisbane | gold coast | sydney Opera | christchurch | Aukland | Austrlia | fidji | Royaume-Uni | USA
Méthodes Essayé
library(RecordLinkage)
library(stringdist)
input=tolower(gsub('[[:punct:]]', " ", input))
Places <- read.delim("\\Data\\Places_List.csv", row.names =NULL,header=TRUE,sep=",")
Places <-as.matrix(Places)
##################Different Methods Tried##########################
ClosestMatch2 = function(string, stringVector){
distance = levenshteinSim(string, stringVector);
stringVector[distance == max(distance)]
}
ClosestMatch2(input,Places)
###############The above 1 doesn't Work##################
ClosestMatch <- function(string,StringVector) {
matches <- agrep(string,StringVector,value=TRUE)
distance <- sdists(string,matches,method = "",weight = c(1, 0, 2))
matches <- data.frame(matches,as.numeric(distance))
matches <- subset(matches,distance==min(distance))
as.character(matches$matches)
}
ClosestMatch(input,Places)
########This work but not proper Results###########
k=as.matrix((sapply(input,agrep,places)))
###### Ce travail na pas non plus
agrep, pmatch , str_detect(wont work for spelling Mistakes) doesn't work for bigger data sets