当前位置: 首页 > news >正文

沈阳网站建站公司买购网

沈阳网站建站公司,买购网,企业网站建设可行性分析任务,企业网站建设用标语目录 一、引言二、Node2Vec#xff08;原理#xff09;2.1 随机游走#xff08;Random Walk#xff09;2.2 嵌入学习2.3 Node2Vec 的优势 三、使用 Node2Vec 进行图嵌入#xff08;实践#xff09;3.1 读取和转换 JSON 文件为 Graph 对象3.2 训练 Node2Vec 模型3.3 二维嵌… 目录 一、引言二、Node2Vec原理2.1 随机游走Random Walk2.2 嵌入学习2.3 Node2Vec 的优势 三、使用 Node2Vec 进行图嵌入实践3.1 读取和转换 JSON 文件为 Graph 对象3.2 训练 Node2Vec 模型3.3 二维嵌入可视化3.4 三维嵌入可视化3.5 保存嵌入和关系到 JSON 文件3.6 完整代码 四、结论 一、引言 随着互联网的发展社交网络、推荐系统以及知识图谱等应用中的图结构数据越来越多如何从这些复杂的关系网中提取出有意义的信息成为了机器学习中的一大挑战。图结构数据的关键在于节点如用户、物品等之间的关联关系而要从图中有效提取节点的特征我们需要一种能保留图的结构信息的嵌入方法。 传统的机器学习方法难以直接处理图数据因为图的结构不如图像和文本那样规则图中的节点没有固定的顺序也没有明确的拓扑形式。因此近年来图嵌入Graph Embedding技术得到了广泛关注。通过图嵌入方法我们可以将图中的节点映射为低维向量使其能够被应用到分类、聚类、推荐等任务中。 Node2Vec 是一种基于随机游走Random Walk的节点嵌入方法。它通过对图中的节点进行采样并利用这些采样结果训练出能够表示节点的嵌入向量。这些向量不仅能保留节点的局部邻域信息还能反映节点在整个图中的全局位置。本文的目的在于详细介绍如何通过代码实践使用Node2Vec进行图嵌入、对嵌入结果进行可视化并最终将嵌入向量存储为JSON文件。 二、Node2Vec原理 2.1 随机游走Random Walk Node2Vec 基于图上的随机游走来捕捉节点的结构特性。随机游走是一种类似于在图上进行漫步的过程即从一个节点出发每次根据一定的概率选择下一个要访问的节点。通过多次游走Node2Vec可以得到一系列的节点序列这些序列可以看作是图中的“路径”用于训练节点的嵌入表示。 Node2Vec 提供了两个关键参数 p p p 和 q q q用来控制随机游走的方式 参数 p p p回归系数用于控制游走时返回前一个节点的概率。 p p p 越大模型越倾向于向更远的节点扩展。 参数 q q q探索系数用于控制模型深度优先搜索DFS和广度优先搜索BFS之间的平衡。 q q q 越大游走更倾向于深度探索即更多地访问图的深层节点 q q q 较小时游走更倾向于广度探索即优先访问节点的直接邻居。 通过调节这两个参数Node2Vec 能够适应不同的任务需求。例如在社交网络中我们可能希望重点关注与用户相邻的其他用户此时较小的 q q q值能帮助我们更好地捕捉局部社区结构。而在知识图谱中我们可能希望深入挖掘某个概念与远端概念的关系此时较大的 q q q 值可以帮助捕获图的全局结构。 2.2 嵌入学习 一旦通过随机游走得到节点序列Node2Vec 将这些序列视为词语序列采用类似 Word2Vec 的 Skip-Gram 模型进行嵌入学习。Skip-Gram 模型的目标是给定一个节点预测其上下文节点即在随机游走序列中与该节点相邻的节点。 在这个过程中Node2Vec 学习到每个节点的嵌入向量。这些嵌入向量能够保留节点之间的相似性邻近的节点将拥有相近的嵌入表示。最终通过这种方式图中的每个节点都被映射到一个固定维度的向量空间中嵌入向量可以直接用于下游任务如节点分类、边预测和社区检测。 2.3 Node2Vec 的优势 Node2Vec 的最大优势在于它可以同时捕捉局部和全局的图结构信息。相比于传统的图算法如PageRank只考虑节点的全局属性或者某些仅仅考虑局部连接的嵌入方法Node2Vec 能够通过灵活的随机游走策略在不同的场景下取得更好的表现。 此外Node2Vec 的随机游走策略可以高效处理大型图尤其是对于节点和边非常多的复杂网络Node2Vec 仍然能通过较少的计算时间获得高质量的嵌入向量。 三、使用 Node2Vec 进行图嵌入实践 3.1 读取和转换 JSON 文件为 Graph 对象 在正式训练模型之前首先我们需要将原始的数据加载为图结构。在很多实际应用场景中图结构的输入数据并不是直接以图的形式给出而是以诸如JSON等格式的文件存储了节点之间的关系。因此第一步的任务是将JSON文件中的节点和边转化为可以用于训练的 Graph 对象。本文使用的json文件可以从百度网盘下载 import json import networkx as nx# 读取并转换JSON文件为Graph对象的函数 def read_and_convert_json_to_graph(json_file):with open(json_file, r) as file:json_list json.load(file)G nx.Graph() # 创建一个空的无向图for item in json_list:G.add_edge(item[object1], item[object2]) # 添加边return G在上面的代码中read_and_convert_json_to_graph 函数负责读取JSON文件并将其中的节点object1 和 object2之间的关系转换为图的边edge。具体过程如下 通过 json.load() 将JSON文件中的内容加载为Python的列表格式。 遍历该列表中的每个元素并使用 networkx 库将两个节点之间的关系加入到无向图 G 中。 最终我们会得到一个完整的 Graph 对象它包含了所有节点及它们之间的连接。这个 Graph 对象将作为Node2Vec 模型的输入进一步进行节点嵌入训练。 3.2 训练 Node2Vec 模型 接下来利用构建好的图对象我们将使用Node2Vec库进行节点嵌入的训练。Node2Vec 的核心思想是通过随机游走生成节点序列并通过这些序列学习节点的嵌入表示。 from node2vec import Node2Vec# Node2Vec模型训练函数 def train_node2vec(graph, dimensions64, walk_length30, num_walks200, p1, q1, workers4):node2vec Node2Vec(graph, dimensionsdimensions, walk_lengthwalk_length, num_walksnum_walks, pp, qq, workersworkers)model node2vec.fit(window10, min_count1, batch_words4)return model在这个 train_node2vec 函数中我们定义了几个关键参数来控制Node2Vec的训练过程 dimensions嵌入向量的维度即我们希望每个节点被映射到多少维度的向量空间。通常维度越高模型能表达的信息越丰富但训练时间也会增加。 walk_length随机游走的长度决定每次游走过程中访问的节点数目。 num_walks每个节点的游走次数即我们为每个节点采样的路径数量。 p 和 q前面介绍的控制游走策略的两个参数分别控制返回前一节点的概率和探索新节点的概率。 workers并行计算的线程数用于加速训练过程。 训练完成后fit() 函数返回的是一个包含了所有节点嵌入向量的模型对象。我们可以通过该模型获取每个节点的嵌入向量并将这些向量用于后续的任务。 3.3 二维嵌入可视化 在训练完Node2Vec模型并得到节点的高维嵌入向量后直接查看这些高维向量并不直观因此我们通常需要将其降维以便通过图形展示这些节点在嵌入空间中的分布情况。 二维可视化是最常用的手段之一。我们可以使用降维算法如主成分分析 PCA将嵌入向量从高维空间降至二维从而通过平面图直观展示节点之间的相对位置。接下来是实现代码 import numpy as np import matplotlib.pyplot as plt from sklearn.decomposition import PCA# 二维可视化嵌入的函数 def visualize_embeddings(model, graph, save_pathembeddings_visualization.png):# 获取所有节点的嵌入向量embeddings np.array([model.wv[str(node)] for node in graph.nodes()])# 使用PCA将嵌入向量降维到2Dpca PCA(n_components2)embeddings_2d pca.fit_transform(embeddings)# 绘制图形plt.figure(figsize(20, 16)) # 设置图形大小pos {node: embeddings_2d[i] for i, node in enumerate(graph.nodes())}# 绘制节点设置节点大小和颜色nx.draw_networkx_nodes(graph, pospos, node_size30, node_colorblue)# 绘制图中的边透明度alpha设置较低以减少边线干扰nx.draw_networkx_edges(graph, pospos, alpha0.1)# 隐藏坐标轴plt.axis(off)# 保存结果并展示图像plt.savefig(save_path)plt.show()获取节点嵌入向量从训练好的 Node2Vec 模型中提取节点的嵌入向量这些嵌入向量被保存在 model.wv 中其中每个节点的 ID 被转化为字符串格式。 PCA降维使用 PCA 将高维嵌入向量降至二维。PCA 是一种常见的降维技术它能够提取数据中最重要的两个主成分使得降维后的数据尽可能保留原始高维数据中的信息。 节点和边的可视化通过 networkx 提供的 draw_networkx_nodes 和 draw_networkx_edges 方法来绘制图形中的节点和边。节点颜色为蓝色边的透明度较低以减少边线的干扰使节点的位置关系更加清晰可见。 图形保存与显示绘制好的图形保存为 PNG 文件并显示出来以供查看。plt.savefig() 可以保存结果plt.show() 用于在执行程序时显示图像。 通过这种方式节点会根据其嵌入向量的相似性在二维平面上分布。距离较近的节点往往在嵌入空间中更为相似说明它们在图结构中有更密切的联系。反之距离较远的节点可能属于不同的社区或子图。 3.4 三维嵌入可视化 虽然二维可视化已经能帮助我们理解节点嵌入但在某些场景中我们可能希望更丰富的维度来展示节点的分布。此时三维可视化可以提供更直观的展示效果。通过降维到三维我们能够通过三维图形进一步观察节点的相互关系。 from mpl_toolkits.mplot3d import Axes3D from sklearn.decomposition import PCA# 三维可视化嵌入的函数 def visualize_embeddings_3d(model, graph, save_pathembeddings_visualization_3d.png):# 获取所有节点的嵌入向量embeddings np.array([model.wv[str(node)] for node in graph.nodes()])# 使用PCA将嵌入向量降维到3Dpca PCA(n_components3)embeddings_3d pca.fit_transform(embeddings)# 创建3D绘图fig plt.figure(figsize(20, 16))ax fig.add_subplot(111, projection3d)# 获取嵌入向量的三个维度x, y, z坐标xs embeddings_3d[:, 0]ys embeddings_3d[:, 1]zs embeddings_3d[:, 2]# 绘制节点ax.scatter(xs, ys, zs, cblue, markero)# 设置轴标签ax.set_xlabel(PCA1)ax.set_ylabel(PCA2)ax.set_zlabel(PCA3)# 添加标题plt.title(3D visualization of Node Embeddings)# 保存并展示图像plt.savefig(save_path)plt.show()PCA降维到三维与二维可视化类似这里我们将嵌入向量从高维空间降至三维。这三个维度能够提供更多的嵌入信息从而帮助我们更好地观察节点的分布情况。 三维绘图通过 mpl_toolkits.mplot3d 的 Axes3D 类进行三维图形的绘制。我们提取PCA降维后的三个维度x、y、z坐标并将其用于三维散点图的绘制。 散点绘制使用 scatter() 函数绘制节点每个节点显示为一个三维点。我们可以通过颜色、大小、标记等属性来调整节点的视觉效果。在本例中节点颜色为蓝色标记为圆形。 图形轴标签与标题为三维图形的各个坐标轴PCA1、PCA2、PCA3添加标签以便清晰显示每个维度代表的含义。此外还为图形添加了标题方便理解可视化内容。 三维图形相比于二维图形能够展示更多的信息。特别是在处理嵌入维度较高的情况下三维可视化能够帮助我们更好地理解节点在嵌入空间中的位置关系。通过旋转三维图形我们可以从不同角度观察节点的分布情况发现潜在的社区结构或其他有趣的模式。 3.5 保存嵌入和关系到 JSON 文件 在获得了节点嵌入向量后我们往往需要将这些向量保存下来方便后续的分析与应用。在实际项目中我们可能需要将嵌入向量与原始的关系数据一起存储以便后续模型或任务能够继续利用这些嵌入。 下面的代码展示了如何将节点的嵌入向量与原始的JSON文件结合并将结果保存为一个新的JSON文件。 def save_embeddings_to_json(graph, model, json_file_path, output_file):# 读取原始的JSON文件来获取对象间的关系with open(json_file_path, r) as file:json_list json.load(file)output_data []for item in json_list:object1, object2 item[object1], item[object2]# 对于每对对象获取其嵌入向量properties1 model.wv[object1].tolist() if object1 in model.wv else Noneproperties2 model.wv[object2].tolist() if object2 in model.wv else None# 构建新的字典项包含嵌入向量和原始关系modified_item {object1: object1,properties1: properties1,object2: object2,properties2: properties2,relationship: item.get(relationship) # 假设原始JSON中包含关系字段}output_data.append(modified_item)# 将修改后的数据写入新的JSON文件with open(output_file, w) as f:json.dump(output_data, f, indent4)原始关系读取首先我们读取原始的JSON文件获取其中包含的节点及其关系。在本例中JSON文件中的每一条记录包含两个对象object1 和 object2代表它们之间的某种关系。 嵌入向量提取对于每个对象我们通过模型中的 model.wv 获取其对应的嵌入向量。如果某个对象没有嵌入向量例如由于它在训练中未出现我们可以将其设置为 None。 数据结构修改将每对对象的嵌入向量properties1 和 properties2与它们的关系信息relationship一起构造一个新的数据项。 结果保存最终将所有修改后的数据写入一个新的JSON文件以便在后续的分析中使用。 3.6 完整代码 import json import numpy as np from node2vec import Node2Vec import networkx as nx import matplotlib.pyplot as plt# 读取并转换JSON文件为Graph对象的函数 def read_and_convert_json_to_graph(json_file):with open(json_file, r) as file:json_list json.load(file)G nx.Graph() # 创建一个空的无向图for item in json_list:G.add_edge(item[object1], item[object2]) # 添加边return G# Node2Vec模型训练函数 def train_node2vec(graph, dimensions64, walk_length30, num_walks200, p1, q1, workers4):# 使用Node2Vec库node2vec Node2Vec(graph, dimensionsdimensions, walk_lengthwalk_length, num_walksnum_walks, pp, qq,workersworkers)# 训练模型model node2vec.fit(window10, min_count1, batch_words4)return model# 可视化嵌入的函数,实现二维可视化 def visualize_embeddings(model, graph, save_pathembeddings_visualization.png):# 获取嵌入向量embeddings np.array([model.wv[str(node)] for node in graph.nodes()])# 使用PCA进行降维以便于可视化from sklearn.decomposition import PCApca PCA(n_components2)embeddings_2d pca.fit_transform(embeddings)# 绘制节点嵌入plt.figure(figsize(20, 16))pos {node: embeddings_2d[i] for i, node in enumerate(graph.nodes())}# 调整节点大小和边的透明度nx.draw_networkx_nodes(graph, pospos, node_size30, node_colorblue)edges nx.draw_networkx_edges(graph, pospos, alpha0.1) # 减少alpha以降低边的透明度plt.axis(off) # 关闭坐标轴plt.savefig(save_path, formatPNG) # 先保存可视化结果到文件plt.show() # 然后显示图像plt.close() # 关闭图形防止重复显示# 修改后的可视化嵌入函数实现三维可视化 def visualize_embeddings_3d(model, graph, save_pathembeddings_visualization_3d.png):# 获取嵌入向量embeddings np.array([model.wv[str(node)] for node in graph.nodes()])# 使用PCA进行到3维的降维from sklearn.decomposition import PCApca PCA(n_components3)embeddings_3d pca.fit_transform(embeddings)# 创建3D绘图fig plt.figure(figsize(20, 16))ax fig.add_subplot(111, projection3d)# 获取节点的三维坐标xs embeddings_3d[:, 0]ys embeddings_3d[:, 1]zs embeddings_3d[:, 2]# 绘制节点ax.scatter(xs, ys, zs, cblue, markero)ax.set_xlabel(PCA1)ax.set_ylabel(PCA2)ax.set_zlabel(PCA3)plt.title(3D visualization of Node Embeddings)plt.savefig(save_path, formatPNG) # 保存可视化结果到文件plt.show() # 显示图像plt.close() # 关闭图形防止重复显示def save_embeddings_to_json(graph, model, json_file_path, output_file):# 首先读取原始的JSON文件来获取对象间的关系with open(json_file_path, r) as file:json_list json.load(file)output_data []for item in json_list:object1, object2 item[object1], item[object2]# 对于每对对象获取其嵌入向量properties1 model.wv[object1].tolist() if object1 in model.wv else Noneproperties2 model.wv[object2].tolist() if object2 in model.wv else None# 构建新的字典项modified_item {object1: object1,properties1: properties1,object2: object2,properties2: properties2,relationship: item.get(relationship) # 假设原始JSON中包含关系字段}output_data.append(modified_item)# 将修改后的数据写入新的JSON文件with open(output_file, w) as f:json.dump(output_data, f, indent4)# 主程序 if __name__ __main__:json_file_path Node2Vec_Input.jsonoutput_file Node2Vec_Embeddings_Dim768.jsonG read_and_convert_json_to_graph(json_file_path)#节点嵌入维度为dimensionsmodel train_node2vec(G, dimensions768, walk_length20, num_walks200, p1, q2, workers4)visualize_embeddings_3d(model, G, embeddings_visualization_Dim768_3D_20-200-1-2-4.png)# 调用新定义的函数保存嵌入和关系到JSONsave_embeddings_to_json(G, model, json_file_path, output_file)四、结论 通过以上的过程我们完整地介绍了如何使用Node2Vec进行图嵌入、如何将嵌入结果可视化以及如何保存嵌入向量。Node2Vec 提供了一种灵活且高效的方式来处理图数据并且能够通过参数调整适应不同的图结构。通过嵌入向量我们可以将图结构信息转化为适合机器学习模型处理的低维向量形式从而为分类、聚类、推荐系统等任务提供支持。
文章转载自:
http://www.morning.sgbss.cn.gov.cn.sgbss.cn
http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn
http://www.morning.gfqj.cn.gov.cn.gfqj.cn
http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn
http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn
http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn
http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn
http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.lnbcx.cn.gov.cn.lnbcx.cn
http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn
http://www.morning.dytqf.cn.gov.cn.dytqf.cn
http://www.morning.qgmwt.cn.gov.cn.qgmwt.cn
http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn
http://www.morning.qnzk.cn.gov.cn.qnzk.cn
http://www.morning.ndnhf.cn.gov.cn.ndnhf.cn
http://www.morning.mqdr.cn.gov.cn.mqdr.cn
http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn
http://www.morning.qprtm.cn.gov.cn.qprtm.cn
http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn
http://www.morning.aswev.com.gov.cn.aswev.com
http://www.morning.rzrbw.cn.gov.cn.rzrbw.cn
http://www.morning.jxrpn.cn.gov.cn.jxrpn.cn
http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn
http://www.morning.ngcsh.cn.gov.cn.ngcsh.cn
http://www.morning.xtlty.cn.gov.cn.xtlty.cn
http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn
http://www.morning.yfffg.cn.gov.cn.yfffg.cn
http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn
http://www.morning.qmfhh.cn.gov.cn.qmfhh.cn
http://www.morning.yqqxj26.cn.gov.cn.yqqxj26.cn
http://www.morning.kpzrf.cn.gov.cn.kpzrf.cn
http://www.morning.kyfrl.cn.gov.cn.kyfrl.cn
http://www.morning.ybgyz.cn.gov.cn.ybgyz.cn
http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn
http://www.morning.rsxw.cn.gov.cn.rsxw.cn
http://www.morning.crqbt.cn.gov.cn.crqbt.cn
http://www.morning.myhpj.cn.gov.cn.myhpj.cn
http://www.morning.mymz.cn.gov.cn.mymz.cn
http://www.morning.sbncr.cn.gov.cn.sbncr.cn
http://www.morning.twwts.com.gov.cn.twwts.com
http://www.morning.rlhjg.cn.gov.cn.rlhjg.cn
http://www.morning.lhptg.cn.gov.cn.lhptg.cn
http://www.morning.ljcjc.cn.gov.cn.ljcjc.cn
http://www.morning.wqrdx.cn.gov.cn.wqrdx.cn
http://www.morning.mpflb.cn.gov.cn.mpflb.cn
http://www.morning.wyzby.cn.gov.cn.wyzby.cn
http://www.morning.caswellintl.com.gov.cn.caswellintl.com
http://www.morning.c7625.cn.gov.cn.c7625.cn
http://www.morning.wptdg.cn.gov.cn.wptdg.cn
http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn
http://www.morning.kzrbd.cn.gov.cn.kzrbd.cn
http://www.morning.zypnt.cn.gov.cn.zypnt.cn
http://www.morning.xctdn.cn.gov.cn.xctdn.cn
http://www.morning.xtdms.com.gov.cn.xtdms.com
http://www.morning.qnksk.cn.gov.cn.qnksk.cn
http://www.morning.hlnys.cn.gov.cn.hlnys.cn
http://www.morning.zdxinxi.com.gov.cn.zdxinxi.com
http://www.morning.nkjjp.cn.gov.cn.nkjjp.cn
http://www.morning.hdscx.cn.gov.cn.hdscx.cn
http://www.morning.tzzkm.cn.gov.cn.tzzkm.cn
http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn
http://www.morning.rlxg.cn.gov.cn.rlxg.cn
http://www.morning.chehb.com.gov.cn.chehb.com
http://www.morning.yhglt.cn.gov.cn.yhglt.cn
http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn
http://www.morning.hctgn.cn.gov.cn.hctgn.cn
http://www.morning.mkfr.cn.gov.cn.mkfr.cn
http://www.morning.kzrbn.cn.gov.cn.kzrbn.cn
http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn
http://www.morning.txzmy.cn.gov.cn.txzmy.cn
http://www.morning.zympx.cn.gov.cn.zympx.cn
http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn
http://www.morning.rcttz.cn.gov.cn.rcttz.cn
http://www.morning.dwwbt.cn.gov.cn.dwwbt.cn
http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn
http://www.morning.kzrbn.cn.gov.cn.kzrbn.cn
http://www.morning.mpngp.cn.gov.cn.mpngp.cn
http://www.morning.gpcy.cn.gov.cn.gpcy.cn
http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn
http://www.tj-hxxt.cn/news/249351.html

相关文章:

  • php可以做网站吗网站建设任务书
  • 目前做汽配的网站有哪些建设工程查询系统
  • 做网站编辑好还是推广好68网页设计欣赏
  • 网站对联广告图片库尔勒网站建设推广
  • 钟表网站开发背景文章阿里云nas做网站
  • 做图模板网站公司起名字大全免费二字
  • 网站常用特效电影视频网站建设费用
  • 网站建设忄金手指花总网站积分系统方案
  • 桂林景区网站建设策划方案国内永久免费crm系统网站推荐大全
  • 广西网站建设培训wordpress与微信连接
  • 西安网站开发外包公司有上海网站开发有限公司
  • 做特色线路的旅游网站企业邮箱域名解析
  • 宁波做网站的大公司排名做域名不做网站可以吗
  • 北京网站制作设计价格官网网站设计
  • 网站怎么认证wordpress评论表情不显示不出来
  • 内江市建设信息网站wordpress文章页打不开
  • 石家庄网站建设价格公司网站制作苏州
  • 网站建设评审会阳泉软件定制网站建设
  • 墙蛙网站谁家做的网线制作实训总结
  • 深圳网站建设的公商标logo图案大全图片
  • 红色网站建设的作用和意义云南做网站
  • 建设银行官方网站客户资料修改网站建设的SOWT分析
  • 网站横条广告化妆品网站设计报告
  • 官方网站的必要性四川网站建设方案
  • 网站后台密码修改望野原文翻译
  • 心理医院网站优化服务商全国招聘网站排名
  • 网站开发算固定资产建e室内设计网官网全景效果图
  • 南宁网站建站公司国家域名注册
  • 外贸怎么做公司网站刚做的网站怎么
  • 做视频网站服务器配置建行系统