"###### Kami mendefinisikan fungsi yang akan mengambil node dan panjang path yang dilalui sebagai input. Fungsi akan berjalan melalui node yang terhubung dari input node yang ditentukan random walk. Lalu fungsi akan mengembalikan urutan node yang dilalui."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"def get_randomwalk(node, path_length):\n",
" \n",
" random_walk = [node]\n",
" \n",
" for i in range(path_length-1):\n",
" temp = list(G.neighbors(node))\n",
" temp = list(set(temp) - set(random_walk)) \n",
" if len(temp) == 0:\n",
" break\n",
"\n",
" random_node = random.choice(temp)\n",
" random_walk.append(random_node)\n",
" node = random_node\n",
" \n",
" return random_walk"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Contoh fungsi untuk: Men Formal Trousers"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Men Formal Trousers', 'invictu men black slim fit solid formal trouser']"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_randomwalk('Men Formal Trousers', 10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Kami menentukan panjang path untuk dilintasi dengan nilai 10. Kami akan menangkap random walk untuk semua node dalam dataset kami."
"###### Dengan panjang path yang kami atur dengan nilai 10, maka didapatkan 40.625 urutan random walk. Urutan ini dapat digunakan sebagai input ke model skip-gram dan mengekstraksi bobot yang dipelajari oleh model (node embedding)."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"from gensim.models import Word2Vec\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Lalu kami melatih model skip-gram dengan random walk."