最近在做NE方面的畢業(yè)論文牲览,慢慢摸索旨剥,先看了DeepWalk的論文《DeepWalk:Online Learning of Social Representations》,從github上download了代碼,想要試著跑一跑匀奏,發(fā)現(xiàn)遇到了一些小坑和問題,在此記錄一下,以便大家不要再掉坑里早歇。接下來就是學渣的手把手摸坑教學~~
需要安裝Anaconda
python:不知道為什么用過3的版本很多報錯 以下都是基于2的版本
(1)代碼和數(shù)據(jù):
代碼:https://github.com/phanein/deepwalk
數(shù)據(jù):在第一作者的個人主頁:http://www.perozzi.net/resources/ 然后去到作者的舊網(wǎng)頁找到data的部分就有了
代碼下載下來:deepwalk-master
數(shù)據(jù)下載下來: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
再接著將路徑轉(zhuǎn)入你下載的gensim.whl文件的目錄下,輸入:
pip install gensim-3.6.0-cp27-cp27m-win_amd64.whl
然后就算可以前期準備好了茄靠。
將路徑重新轉(zhuǎn)回到deepwalk-master\deepwalk,正式的測試開始~
首先帚桩,github上給的文檔測試例子是錯誤的
如果想要運行,請在命令行輸入:
“python __main__.py --input karate.adjlist --output karate.embeddings”
這里的karate.adjlist是我從deepwalk-master/example_graphs里移到deepwalk-master/deepwalk里面的嘹黔,無關(guān)緊要账嚎,只是不想輸很長的路徑名。這里的karate.embeddings是指訓練之后生成的embedding向量文件名儡蔓,以embeddings為后綴郭蕉。
一般在這一步會出現(xiàn)很多bug,其中一種是:
ValueError:Asttempted relative import in non-package
這是什么錯誤?一下子看不懂喂江,百度了一下召锈,發(fā)現(xiàn)https://blog.csdn.net/sky453589103/article/details/78863050 有詳細的解釋。
再看回我們的deepwalk目錄下的文件获询,有五個py文件涨岁,其中一個是執(zhí)行文件__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:
再次運行:
大功告成~~