我有一大块句子,我想建立单词共现的无向边列表,并查看每个边的频率.我看了看tm包但没找到类似的功能.我可以使用一些包/脚本吗?非常感谢!
注意:单词不会与自身共存.出现两次或更多次的单词与同一句子中的其他单词共同出现一次.
DF:
sentence_id text
1 a b c d e
2 a b b e
3 b c d
4 a e
5 a
6 a a a
Run Code Online (Sandbox Code Playgroud)
OUTPUT
word1 word2 freq
a b 2
a c 1
a d 1
a e 3
b c 2
b d 2
b e 2
c d 2
c e 1
d e 1
Run Code Online (Sandbox Code Playgroud) 我正在使用的数据集显示节点之间的链接。例如:
> data2
V1 V2
1 10000 4725
2 4725 6805
3 4725 3250
4 5725 3250
5 1725 7673
Run Code Online (Sandbox Code Playgroud)
(例如使用小数据框)。这里的数据框表示节点 10000 和 4725 之间存在无向链接,节点 4725 和 6805 之间存在链接等等。使用 igraph 包,我正在获取单个节点的度数:
g<-graph.data.frame(data2, directed=F)
deg <- igraph::degree(g)
> deg
10000 4725 5725 1725 6805 3250 7673
1 3 1 1 1 2 1
Run Code Online (Sandbox Code Playgroud)
接下来,我根据节点的度数以降序对节点进行排序:
> dSorted <-sort.int(deg,decreasing=TRUE,index.return=FALSE)
> dSorted
4725 3250 10000 5725 1725 6805 7673
3 2 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
取数据框的第一列:
> ln1 <- data2[,1]
> ln1
[1] …Run Code Online (Sandbox Code Playgroud) 我在摸索某些在 igraph 中相对简单的 Tidygraph 操作时遇到了一些麻烦。
我特别想以不同的顺序分析特定的社区。我想我需要使用 Morphs 来实现这一点,但我还没有让它发挥作用。
library(tidygraph)
library(ggraph)
Run Code Online (Sandbox Code Playgroud)
net <- tibble::tibble(A = letters[1:6],
B = rep(c("x", "y"), each = 3)) %>%
tidygraph::as_tbl_graph()
Run Code Online (Sandbox Code Playgroud)
我想分析 x 的邻域。
net %>%
ggraph(layout = "nicely") +
geom_edge_link() +
geom_node_point(size = 10, fill = "white", shape = 21) +
geom_node_text(aes(label = name)) +
theme_graph()
Run Code Online (Sandbox Code Playgroud)
提取节点 x 的邻域。
v <- net %>%
tidygraph::as.igraph() %>%
igraph::neighborhood(nodes = "x", order = 1)
Run Code Online (Sandbox Code Playgroud)
igraph::induced_subgraph(net, vids = unlist(v)) %>%
tidygraph::as_tbl_graph() %>%
ggraph(layout = …Run Code Online (Sandbox Code Playgroud) 我注意到,如果我使用相同的值更改图中的所有边权重,则community.best_partition并不总是导致相同的社区。
我在所有情况下都使用相同的随机状态,图形完全相同,只是不是所有边权重都等于 1,例如它们可能等于 5。模块化的定义抵消了这个乘以邻接矩阵的因素当我阅读算法时,我找不到应该改变结果的步骤。是否有导致这种差异的原因?
import networkx as nx
import community
from sklearn.metrics import adjusted_rand_score
def main():
g = nx.davis_southern_women_graph()
nodes = g.nodes()
clusters_init = community.best_partition(g, random_state=10)
print("modularity with initial clusters = %.15f" % community.modularity(clusters_init, g))
labels_init = [clusters_init[n] for n in nodes]
for num in range(1, 9):
for u, v in g.edges():
g[u][v]["weight"] = num
clusters = community.best_partition(g, random_state=10)
labels = [clusters[n] for n in nodes]
print("value of edge weight = %d," % num, "modularity = %.15f," % …Run Code Online (Sandbox Code Playgroud) 我无法理解网络上的任何人如何使用数据包嗅探器。
我对网络的工作原理知之甚少,但让我这样说:假设邮递员将包裹送到我家门口。为什么我可以翻遍他所有的其他包裹并环顾四周?邮递员不应该只把属于我的包裹交给我吗?
我有一个有69个顶点的有向图,如下所示。它是使用igraph软件包绘制的:
library(igraph)
ig <- graph.adjacency(data, mode="directed", weighted=TRUE)
plot(ig)
Run Code Online (Sandbox Code Playgroud)
我正在寻求实现以下两点:
(a)将顶点隔开,并可能加长边缘,使其更易于阅读
(b)实际上,我的标签更长。是否可以使顶点变大而使文本变小以适应这个问题。
有任何想法吗?
这是我的数据:https : //www.dropbox.com/s/rtedrd1x1duqllj/data.Rdata?dl=0
R中有没有办法测试网络图是否是平面的?我看过 igraph 但无济于事。
我知道我可以使用 BGL 工具箱在 MATLAB 中使用,但我想知道是否有人在 R 中尝试过。
我有一个形式的熊猫数据帧(df) -
Col1
A [Green,Red,Purple]
B [Red, Yellow, Blue]
C [Brown, Green, Yellow, Blue]
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为边缘列表,即表单的数据框:
Source Target Weight
A B 1
A C 1
B C 2
Run Code Online (Sandbox Code Playgroud)
编辑 请注意,新数据框的行数等于可能的成对组合的总数.此外,要计算"权重"列,我们只需找到两个列表之间的交集.例如,对于B&C,元素共享两种颜色:蓝色和黄色.因此,相应行的"权重"为2.
最快的方法是什么?原始数据框包含大约28,000个元素.
我需要在 r 中使用 ggraph 生成一个网络。我想要的是通过权重变量(或节点的大小)调整边缘宽度。有谁知道我该怎么做?多谢。
示例代码如下:
library(ggraph)
library(igraph)
data=data.frame(w1=rep('like', 5),
w2 = c('apple', 'orange', 'pear','peach', 'banana'),
weight= c(2,3,5,8, 15))
data %>%
graph_from_data_frame() %>%
ggraph(layout = "fr") +
geom_edge_link(alpha = .25) +
geom_node_point(color = "blue", size = 2) +
geom_node_text(aes(label = name), repel = TRUE)
Run Code Online (Sandbox Code Playgroud) 我正在爬行slideshare.net图,从我的节点开始,跟踪BFS中的所有用户,直到访问的节点数为1000。我按以下方式执行BFS:
from urllib.request import urlopen
from collections import deque
import sys
import json
import codecs
import csv
import io
import hashlib
import time
import xml.etree.ElementTree as etree
queue = deque(["himanshutyagi11"])
while len_visitedset < 1ooo:
vertex = queue.pop()
if vertex in visited:
continue
visited.add(vertex)
length_visited = len(visited)
print(vertex,length_visited)
crawl(vertex)
Run Code Online (Sandbox Code Playgroud)
crawl() 是一个函数,我在其中进行幻灯片 api 查询,如此处所述, 使用我的shared_secret 和 api_key(在 api 注册时给出)创建查询有效负载,发送查询并解析存储在变量“response”中的 XML 响应'。解析后,我将当前节点的联系人添加到队列中。
request_timestamp = int(time.time())
request_hash_string = shared_secret+str(request_timestamp)
request_hash_value = hashlib.sha1(request_hash_string.encode('utf-8')).hexdigest()
request_url = 'https://www.slideshare.net/api/2/get_user_contacts?username_for='+username+'&api_key='+api_key+'&hash='+request_hash_value+'&ts='+str(request_timestamp)
response = etree.parse(urlopen(request_url)).getroot()
# Append all the adjacent …Run Code Online (Sandbox Code Playgroud) network-analysis ×10
r ×6
igraph ×5
python ×3
networkx ×2
dataframe ×1
ggraph ×1
graph ×1
pandas ×1
planar-graph ×1
text-mining ×1
tidygraph ×1