最近在做NE方面的毕业论文,慢慢摸索,先看了DeepWalk的论文《DeepWalk:Online Learning of Social Representations》,从github上download了代码,想要试着跑一跑,发现遇到了一些小坑和问题,在此记录一下,以便大家不要再掉坑里。接下来就是学渣的手把手摸坑教学~~
需要安装Anaconda
python:不知道为什么用过3的版本很多报错 以下都是基于2的版本
(1)代码和数据:
代码:https://github.com/phanein/deepwalk
数据:在第一作者的个人主页:http://www.perozzi.net/resources/ 然后去到作者的旧网页找到data的部分就有了
代码下载下来:deepwalk-master
数据下载下来:blogcatalog.mat、flickr.mat、youtube.mat
(2)deepwalk的安装
按照github上面的一步步来
打开anaconda下的prompt命令行,输入:
“cd C:\Users\Administrator\Desktop\DeepWalk\deepwalk-master”
具体个人的路径有所不同,总之将路径进入到deepwalk-master
看到目录下有requirements.txt文件,在命令行输入:
“pip install -r requirement.txt”
然后再一鼓作气输入:
"python setup.py install"
至此,deepwalk就安装成功了~(目前为止没有遇到什么问题~)
(3)deepwalk的测试
在测试之前说明一点,你得保证你拥有numpy和scipy和gensim这三个库。
前两个库可以直接在prompt输入:pip install numpy 和pip install scipy就可以安装成功
但是gensim这个库我没法通过pip安装,就去https://www.lfd.uci.edu/~gohlke/pythonlibs/里面找到对应的版本下载whl文件
在prompt里先安装wheel,输入:pip install wheel
再接着将路径转入你下载的gensim.whl文件的目录下,输入:
pip install gensim-3.6.0-cp27-cp27m-win_amd64.whl
然后就算可以前期准备好了。
将路径重新转回到deepwalk-master\deepwalk,正式的测试开始~
首先,github上给的文档测试例子是错误的
如果想要运行,请在命令行输入:
“python __main__.py --input karate.adjlist --output karate.embeddings”
这里的karate.adjlist是我从deepwalk-master/example_graphs里移到deepwalk-master/deepwalk里面的,无关紧要,只是不想输很长的路径名。这里的karate.embeddings是指训练之后生成的embedding向量文件名,以embeddings为后缀。
一般在这一步会出现很多bug,其中一种是:
ValueError:Asttempted relative import in non-package
这是什么错误?一下子看不懂,百度了一下,发现https://blog.csdn.net/sky453589103/article/details/78863050 有详细的解释。
再看回我们的deepwalk目录下的文件,有五个py文件,其中一个是执行文件__main__.py
其他的几个graph.py、skipgram.py都是__main__.py里引用的模块包
出错的简单一句解释就是__main__.py文件应该放在它所引用的包的上一级别,否则那些跟它在同一个目录下的模块包就没有办法通过from . import graph的方法引用。
解决方法:在deepwalk目录下新开一个文件夹package,将除了__main__.py之外的所有py文件放入package文件夹中(尤其注意__init__.py也要放进去)
同时,将__main__.py文件中的from .改为from package:
再次运行:
大功告成~~