ich zur Zeit versucht, die Jaccard Entfernung zwischen Tweets in einem Datensatz zu messenJaccard Abstand zwischen Tweets
Dies ist, wo der Datensatz ist
http://www3.nd.edu/~dwang5/courses/spring15/assignments/A2/Tweets.json
ich ein paar Dinge ausprobiert habe zu messen der Abstand
Dies ist, was ich
bisher habe ich gespeichert die verknüpfte Datenmenge mit einer Tweets.json Datei namens
json_alldata <- fromJSON(sprintf("[%s]", paste(readLines(file("Tweets.json")),collapse=",")))
Dann konvertiert ich json_alldata zu tweet.features und bekam
der geo Spalte befreien# get rid of geo column
tweet.features = json_alldata
tweet.features$geo <- NULL
Diese sind, was die ersten beiden Tweets wie
tweet.features$text[1]
[1] "RT @ItsJennaMarbles: Reports of Marathon Runners that crossed finish line and continued to run to Mass General Hospital to give blood to victims. #PrayforBoston"
> tweet.features$text[2]
[1] "RT @NBCSN: Reports of Marathon Runners that crossed finish line and continued to run to Mass General Hospital to give blood to victims #PrayforBoston"
Das erste, was sehe ich versucht war unter Verwendung der Methode stringdist
, die sich unter der Stringdist-Bibliothek befindet
install.packages("stringdist")
library(stringdist)
#This works?
#
stringdist(tweet.features$text[1], tweet.features$text[2], method = "jaccard")
Wenn ich laufen lasse, erhalte ich
[1] 0,1621622
Ich bin nicht sicher, das ist richtig, aber. Ein Schnittpunkt B = 23 und eine Vereinigung B = 25. Der Jaccard Abstand ist A Schnittpunkt B/A Union B - rechts? Also nach meiner Berechnung sollte der Jaccard Abstand 0,92 sein?
Also dachte ich, ich könnte es nach Sets machen. Einfach Durchschnitt und Vereinigung berechnen und teilen
Dies ist, was habe ich versucht,
# Jaccard distance is the intersection of A and B divided by the Union of A and B
#
#create set for First Tweet
A1 <- as.set(tweet.features$text[1])
A2 <- as.set(tweet.features$text[2])
Wenn ich versuche, Kreuzung zu tun ist, bekomme ich diese: Die Ausgabe nur Liste ist()
Intersection <- intersect(A1, A2)
list()
Als ich versuchen Union, bekomme ich diese:
Vereinigung (A1, A2)
[[1]]
[1] "RT @ItsJennaMarbles: Reports of Marathon Runners that crossed finish line and continued to run to Mass General Hospital to give blood to victims. #PrayforBoston"
[[2]]
[1] "RT @NBCSN: Reports of Marathon Runners that crossed finish line and continued to run to Mass General Hospital to give blood to victims #PrayforBoston"
Dies scheint die Wörter nicht zu einem einzigen Satz zu gruppieren.
Ich dachte, ich wäre in der Lage, die Kreuzung durch die Union zu teilen. Aber ich denke, ich würde das Programm brauchen, um die Anzahl oder Wörter in jedem Satz zu zählen, und dann die Berechnungen durchführen.
Unnötig zu sagen, ich bin ein bisschen fest und ich bin mir nicht sicher, ob ich auf dem richtigen Weg bin.
Jede Hilfe wäre willkommen. Vielen Dank.
'0.1621622' ist der Abstand in Bezug auf' 1 - Länge (Schnittpunkt (Spaltennamen (qgrams (tweet.features $ text [1])), Spaltennamen (qgrams (tweet.features $ text [2]))))/length (unique (c (Spaltennamen (qgrams (tweet.features $ text [1])), Spaltennamen (qgrams (tweet.features $ text [2]))))) '. Sie können N-Grams erstellen oder Ihre Tweets symbolisieren. Ich weiß am Ende nicht, was du willst. – lukeA
Danke. Also ich denke, diese Funktion, die ich ausgeführt habe, ist diese lange Codezeile? Ich versuche die Anzahl der Wörter in jedem Tweet zu messen und berechne dann die Jaccard-Distanz. Es wäre wahrscheinlich einfacher, wenn ich zwei sehr unterschiedliche Tweets auswählen würde. Die, die ich ausgewählt habe, sind einander sehr ähnlich. – user3577397