Ich versuche Einträge in einer riesigen Datenbank von Zeitungsartikeln zu sammeln, basierend auf der Ähnlichkeit der Artikel selbst.Gruppenketten durch Ähnlichkeit mit einem data.frame
Meine Daten sehen irgendwie wie folgt aus:
ID Source File Newspaper Date Length Article
1 aaa The Guardian 07.30.2002 561 US scientist questions
2 aaa The Guardian 07.30.2002 426 Cash fine to clear elderly...
3 aaa The Guardian 07.30.2002 206 Token victory for HIV mother
4 aab Financial Times 07.29.2002 964 A tough question at the heart..
5 aab The Guardian 07.29.2002 500 Media: 'We want van Hoogstr…
6 aab The Mirror 07.29.2002 43 IN BRIEF…
7 aab The Sun 07.29.2002 196 US scientist questions
8 aab The Sun 07.29.2002 140 ADDED VALUE
9 aab The Times 07.29.2002 794 US-scientist questions
10 … … … … …
Nachdem ich hier für eine Weile ich Erfolg hatte mit exakten Duplikaten mit dplyr:
Dup_info <- meta_articles.m %>%
group_by(Articles) %>%
summarise(IDs = toString(ID))
Es identifiziert richtig # 1 und # 7 als Duplikate und ich kann die Informationen nach dem Entfernen von doppelten Einträgen behalten. Leider fängt es # 9 nicht als Duplikat ab, da ein einzelnes Zeichen anders ist und ich dplyr nicht gut genug kenne, um herauszufinden, wie man eine 99% oder 95% Prozent Ähnlichkeitsschwelle implementiert. Weiß jemand, ob das überhaupt möglich ist?
dput(meta_articles.m)
structure(list(ID = 1:9, Source.File = structure(c(1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L), .Label = c("aaa", "aab"), class = "factor"),
Newspaper = structure(c(2L, 2L, 2L, 1L, 2L, 3L, 4L, 4L, 5L
), .Label = c("Financial Times", "The Guardian", "The Mirror",
"The Sun", "The Times"), class = "factor"), Date = structure(c(2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("07.29.2002",
"07.30.2002"), class = "factor"), Length = c(561L, 426L,
206L, 964L, 500L, 43L, 196L, 140L, 794L), Article = structure(c(8L,
3L, 6L, 1L, 5L, 4L, 8L, 2L, 7L), .Label = c("A tough question at the heart..",
"ADDED VALUE", "Cash fine to clear elderly...", "IN BRIEF…",
"Media: 'We want van Hoogstr…", "Token victory for HIV mother",
"US-scientist questions", "US scientist questions"), class = "factor")), .Names = c("ID",
"Source.File", "Newspaper", "Date", "Length", "Article"), class = "data.frame", row.names = c(NA,
-9L))
Wenn Sie bieten die 'dput (meta_articles.m)' des Beispiels Sie ausführlichere Hilfe erhalten könnte –
Sie können 'grep' oder' pmatch' oder 'stringdist' teilweise Übereinstimmungen zu identifizieren – akrun
Sie suchen, könnte" Fuzzy-Matching "oder" Clustering "- aber nichts dergleichen ist in dplyr eingebaut. Sie können auch alle Sonderzeichen entfernen und alles in Kleinbuchstaben umwandeln, wenn Sie nichts Kompliziertes machen wollen. – Gregor