я в настоящее время пытаюсь измерить Jaccard расстояния между твитами в наборе данныхJaccard расстояния между твитами
Это где набор данные
http://www3.nd.edu/~dwang5/courses/spring15/assignments/A2/Tweets.json
Я попробовал несколько вещей, чтобы измерить расстояние
Это то, что я до сих пор
Я сохранил связанный набор данных в файл с именем Tweets.json
json_alldata <- fromJSON(sprintf("[%s]", paste(readLines(file("Tweets.json")),collapse=",")))
Тогда я преобразовал json_alldata в tweet.features и избавившись от колонки гео
# get rid of geo column
tweet.features = json_alldata
tweet.features$geo <- NULL
Это то, что первые два твиты выглядеть
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"
Первое, что я попытался было используя метод stringdist
, который находится под стеновой библиотекой
install.packages("stringdist")
library(stringdist)
#This works?
#
stringdist(tweet.features$text[1], tweet.features$text[2], method = "jaccard")
Когда я бегу, что я получаю
[1] 0,1621622
Я не уверен, что это правильно, хотя. Пересечение B = 23 и A объединение B = 25. Расстояние Jaccard - это A пересечение B/A union B - right? Итак, по моим расчетам, расстояние до Джакарта должно быть 0,92?
Итак, я решил, что смогу сделать это с помощью комплектов. Просто вычислить пересечение и объединение и разделить
Это то, что я пытался
# 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])
Когда я пытаюсь сделать пересечение, я получаю это: Выход только список()
Intersection <- intersect(A1, A2)
list()
Когда я попробовать Союз, я получаю это:
союз (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"
Это не похоже на группировку слов в один набор.
Я понял, что смогу разделить перекресток на союз. Но я предполагаю, что мне понадобится программа для подсчета числа или слов в каждом наборе, а затем выполните вычисления.
Излишне говорить, что я немного застрял, и я не уверен, что я на правильном пути.
Любая помощь будет оценена по достоинству. Спасибо.
«0.1621622» - расстояние в терминах «1 - длина (пересечение (colnames (qgrams (tweet.features $ text [1])), colnames (qgrams (tweet.features $ text [2]))))/length (уникальный (c (colnames (qgrams (tweet.features $ text [1])), colnames (qgrams (tweet.features $ text [2]))))) '. Вы можете создавать n-граммы или подписывать свои твиты. Я не знаю, чего ты хочешь в конце. – lukeA
Спасибо. Итак, я полагаю, что эта функция, которую я запускал, - это длинная строка кода? Я пытаюсь измерить количество слов в каждом твитте, а затем вычислить расстояние до Джакарта. Вероятно, было бы легче, если бы я выбрал два совершенно разных твита. Те, что я выбрал, очень похожи друг на друга. – user3577397