Update README.md

This commit is contained in:
Chengbin 2018-12-03 12:27:05 +00:00
parent 2039d5d3f1
commit f331885d91
2 changed files with 35 additions and 18 deletions

View File

@ -1,4 +1,4 @@
# OpenANE: The first Open source framework specialized in Attributed Network Embedding (ANE)
# OpenANE: the first Open source framework specialized in Attributed Network Embedding (ANE)
We reproduce several ANE (Attributed Network Embedding) methods as well as PNE (Pure Network Embedding) methods in **one unified framework**, where they all share the same I/O, downstream tasks, etc. We start this project based on [OpenNE](https://github.com/thunlp/OpenNE) which mainly integrates PNE methods in one unified framework.
<br> OpenANE not only integrates those PNE methods that consider pure structural information, but also provides the state-of-the-art ANE methods that consider both structural and attribute information during embedding.
@ -10,27 +10,38 @@ In many real-world scenarios, a network often comes with node attributes such as
<br> From engineering perspective, by offering more APIs to handle attribute information in graph.py and utils.py, OpenANE shall be easy to use for embedding an attributed network. Except attributed networks, OpenANE can also deal with pure networks by calling PNE methods, or by assigning node degrees as node attributes and then calling ANE methods. Therefore, to some extent, ANE methods can be regarded as the generalization of PNE methods.
## Methods
ANE methods:
[ABRW](https://github.com/houchengbin/ABRW),
[SAGE-GCN](https://github.com/williamleif/GraphSAGE),
[SAGE-Mean](https://github.com/williamleif/GraphSAGE),
[ASNE](https://github.com/lizi-git/ASNE),
[TADW](https://github.com/thunlp/OpenNE),
[AANE](https://github.com/xhuang31/AANE_Python),
[SAGE-Mean](https://github.com/williamleif/GraphSAGE),
[SAGE-GCN](https://github.com/williamleif/GraphSAGE),
[TADW](https://github.com/thunlp/OpenNE),
AttrComb,
AttrPure <br>
PNE methods:
[DeepWalk](https://github.com/thunlp/OpenNE),
[Node2Vec](https://github.com/thunlp/OpenNE),
[LINE](https://github.com/thunlp/OpenNE),
[GraRep](https://github.com/thunlp/OpenNE),
AttrPure,
AttrComb
<br> Note: all methods in this framework are unsupervised, and so do not require any label during embedding phase.
[others](https://github.com/thunlp/OpenNE)
<br> All methods in this framework are **unsupervised**, and so do not require any label during embedding phase.
**For more details of each method, please have a look at our paper https://arxiv.org/abs/1811.11728**
<br> And if you find ABRW or this framework is useful for your research, please consider citing it.
For more details of each method, please have a look at our paper https://arxiv.org/abs/1811.11728. And if you find ABRW or this framework is useful for your research, please consider citing it.
```
@article{hou2018abrw,
title={Attributed Network Embedding for Incomplete Structure Information},
author={Hou, Chengbin and He, Shan and Tang, Ke},
journal={arXiv preprint arXiv:1811.11728},
year={2018}
}
```
## Usages
#### Requirements
```bash
cd OpenANE
pip install -r requirements.txt
```
Python 3.6.6 or above is required due to the new [`print(f' ')`](https://docs.python.org/3.6/reference/lexical_analysis.html#f-strings) feature
@ -72,23 +83,28 @@ STEPS: Cora -> NE method -> node embeddings -> (downstream) LP/NC -> scores
| sagemean | 0.8948 | 0.7899 | 0.7748 |
| tadw | 0.8877 | 0.8442 | 0.8321 |
*We take the average of six runs. During embedding phase, 10% links are removed. During downstream phase, the removed 10% links and the equal number of non-existing links are used for LP testing; and 30% of labels are used for NC testing.
#### 2D Visualization task:
STEPS: Cora -> NE method -> node embeddings -> (downstream) PCA to 2D -> vis
<br> ![Cora vis](https://github.com/houchengbin/OpenANE/blob/master/log/vis.jpg) <br>
<br> The different colors indicate different ground truth labels.
*The different colors indicate different ground truth labels.
## Other Datasets
More well-prepared (attributed) network datasets are available at [NetEmb-Datasets](https://github.com/houchengbin/NetEmb-Datasets)
### Your Own Dataset
*--------------- Structural Info (each row) --------------------*
adjlist: node_id1 node_id2 node_id3 ... (neighbors of node_id1)
or edgelist: node_id1 node_id2 weight (weight is optional)
*--------------- Attribute Info (each row) ---------------------*
node_id1 attr1 attr2 ...
*--------------- Label Info (each row) -------------------------*
node_id1 label1 label2 ...
```
*--------------- Structural Info (each row) --------------------*
adjlist: node_id1 node_id2 node_id3 ... (neighbors of node_id1)
or edgelist: node_id1 node_id2 weight (weight is optional)
*--------------- Attribute Info (each row) ---------------------*
node_id1 attr1 attr2 ...
*--------------- Label Info (each row) -------------------------*
node_id1 label1 label2 ...
```
### Parameter Tuning
For different dataset, one may need to search the optimal parameters instead of taking the default parameters.
@ -96,7 +112,7 @@ For the meaning and suggestion of each parameter, please see main.py.
## Contribution
We highly welcome and appreciate your contribution in fixing bugs, reproducing new ANE methods, etc. Please use the *pull request* and your contribution will automatically appear in this project once accepted. We will add you to authors list, if your contribution is significant to this project.
We highly welcome and appreciate your contribution in fixing bugs, reproducing new ANE methods, etc. Please use the *pull requests* and your contribution will automatically appear in this project once accepted. We will add you to authors list, if your contribution is significant to this project.
## References
To do...

View File

@ -0,0 +1 @@
# where your node embeddings can be stored under this file