Какой лучший способ сопоставить связь между блогами? - PullRequest
0 голосов
/ 23 января 2010

Я хочу провести анализ социальной сети на куче блогов, отрисовывая, кто на кого ссылается (не только по их блогроллу, но и внутри их постов). Какое программное обеспечение может выполнять такое сканирование / сбор данных / отображение?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 23 января 2010

По «сопоставлению» я не уверен, имеете ли вы в виду сопоставление необработанных данных со структурой данных ортодоксального графа или сопоставление этой структуры данных с библиотекой эстетики для ее визуализации. Если первое, то я бы догадался, что это простой вопрос - написать функцию для преобразования необработанных данных (с помощью каких блогов и на какие ссылки ссылаются и сколько) в структуру данных графа, такую ​​как матрица смежности. Отображение такой структуры данных для просмотра можно сделать так:

library(Rgraphviz)
# create an synthetic adjacency matrix for 10 blogs
M = sapply(rep(10, 10), function(x){sample(c(0, 1), 10, T, c(0.7, 0.3))})
colnames(M) = paste(rep("b", 10), 1:10, sep="-")
rownames(M) = colnames(M) 
# 0's down the main diagonal (eliminate self-edges)
diag(M) = rep(0, 10)
# call the graphviz constructor, passing in adjacency matrix
M_gr = new("graphAM", adjMat=M, edgemode="directed")
g1 = layoutGraph(M_gr)
# (optional) aesthetic parameters for nodes & edges
graph.par( list(edges = list(col="gray", lty="dashed", lwd=1), 
            nodes = list( col="midnightblue", shape="ellipse", 
               textCol="darkred", fill="#B0B7C6", fontsize=11, 
               lty="dotted", lwd=2)) )
# call the device driver
png(file='somefilename.png', width=600, height=460, res=128)
# call the plot function
renderGraph(g1)
# kill the device
dev.off()

альтернативный текст http://img13.imageshack.us/img13/7683/bloggraph.png

Если вы хотите показать не просто соединения, а силу этих соединений, например, количество или, возможно, частоту ссылок с одного блога на другой, вы можете сделать это, установив толщину линии индивидуально, с помощью параметр 'lwd', который я установил в 2 для всех ребер, для этого примера (другой вариант - показать силу соединения по типу линии, например, пунктирная, пунктирная, сплошная, цветная). Конечно, эти веса ребер должны быть установлены в вашей матрице смежности, которая достаточно проста - вместо «0» / «1» для представления «не подключен» / подключен, вы, вероятно, захотите использовать «0» /'integers'.

2 голосов
/ 23 января 2010

Вы также можете сделать это в R с комбинацией чего-то вроде RCurl или XML (чтобы получить сообщения в блоге) и что-то вроде igraph (для СНС). Вам нужно будет проанализировать HTML, чтобы получить все ссылки, и пакет XML может очень легко справиться с такой обработкой.

Посмотрите на этот связанный вопрос для некоторых указателей по анализу СНС, хотя это большая область исследования.

1 голос
/ 23 января 2010

Nutch - достаточно приличный сканер, но вам придется провести собственный анализ индексированных данных.

0 голосов
/ 08 февраля 2010

Для справки, я настоятельно рекомендую механизировать библиотеку в Python - она ​​делает создание собственного персонализированного сканера / скребка совсем несложным.

...