{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 网络科学理论简介\n", "***\n", "***\n", "# 天涯论坛的回帖网络分析\n", "***\n", "***\n", "\n", "王成军 \n", "\n", "wangchengjun@nju.edu.cn\n", "\n", "计算传播网 http://computational-communication.com" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:34:29.084018Z", "start_time": "2018-05-06T06:34:28.612341Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:34:41.770174Z", "start_time": "2018-05-06T06:34:41.667215Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "8079" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dtt = []\n", "file_path = '../data/tianya_bbs_threads_network.txt'\n", "with open(file_path, 'r') as f:\n", " for line in f:\n", " pnum, link, time, author_id, author,\\\n", " content = line.replace('\\n', '').split('\\t')\n", " dtt.append([pnum, link, time, author_id, author, content])\n", "len(dtt)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:34:47.779888Z", "start_time": "2018-05-06T06:34:46.996707Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
page_numlinktimeauthorauthor_namereply
01/post-free-2849477-1.shtml2012-10-29 07:59:0050499450贾也先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开!  宁波的事,怎谈?无从谈,...
11/post-free-2849477-1.shtml2012-10-29 08:13:5422122799三平67我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花...
21/post-free-2849477-1.shtml2012-10-29 08:27:0239027950赶浪头默默围观~
31/post-free-2849477-1.shtml2012-10-29 08:43:1553986501m408833176不能收藏?
41/post-free-2849477-1.shtml2012-10-29 08:55:5239073643兰质薰心楼主好文!  相信政府一定有能力解决好这些问题.
\n", "
" ], "text/plain": [ " page_num link time author \\\n", "0 1 /post-free-2849477-1.shtml 2012-10-29 07:59:00 50499450 \n", "1 1 /post-free-2849477-1.shtml 2012-10-29 08:13:54 22122799 \n", "2 1 /post-free-2849477-1.shtml 2012-10-29 08:27:02 39027950 \n", "3 1 /post-free-2849477-1.shtml 2012-10-29 08:43:15 53986501 \n", "4 1 /post-free-2849477-1.shtml 2012-10-29 08:55:52 39073643 \n", "\n", " author_name reply \n", "0 贾也 先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开!  宁波的事,怎谈?无从谈,... \n", "1 三平67 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花... \n", "2 赶浪头 默默围观~ \n", "3 m408833176 不能收藏? \n", "4 兰质薰心 楼主好文!  相信政府一定有能力解决好这些问题. " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "dt = pd.DataFrame(dtt)\n", "dt=dt.rename(columns = {0:'page_num', 1:'link', 2:'time', 3:'author',4:'author_name', 5:'reply'})\n", "dt[:5]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:37:10.752517Z", "start_time": "2018-05-06T06:37:10.744618Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# extract date from datetime\n", "date = [i[:10] for i in dt.time]\n", "dt['date'] = pd.to_datetime(date)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:37:13.850919Z", "start_time": "2018-05-06T06:37:13.837196Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
page_numlinktimeauthorauthor_namereplydate
01/post-free-2849477-1.shtml2012-10-29 07:59:0050499450贾也先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开!  宁波的事,怎谈?无从谈,...2012-10-29
11/post-free-2849477-1.shtml2012-10-29 08:13:5422122799三平67我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花...2012-10-29
21/post-free-2849477-1.shtml2012-10-29 08:27:0239027950赶浪头默默围观~2012-10-29
31/post-free-2849477-1.shtml2012-10-29 08:43:1553986501m408833176不能收藏?2012-10-29
41/post-free-2849477-1.shtml2012-10-29 08:55:5239073643兰质薰心楼主好文!  相信政府一定有能力解决好这些问题.2012-10-29
\n", "
" ], "text/plain": [ " page_num link time author \\\n", "0 1 /post-free-2849477-1.shtml 2012-10-29 07:59:00 50499450 \n", "1 1 /post-free-2849477-1.shtml 2012-10-29 08:13:54 22122799 \n", "2 1 /post-free-2849477-1.shtml 2012-10-29 08:27:02 39027950 \n", "3 1 /post-free-2849477-1.shtml 2012-10-29 08:43:15 53986501 \n", "4 1 /post-free-2849477-1.shtml 2012-10-29 08:55:52 39073643 \n", "\n", " author_name reply date \n", "0 贾也 先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开!  宁波的事,怎谈?无从谈,... 2012-10-29 \n", "1 三平67 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花... 2012-10-29 \n", "2 赶浪头 默默围观~ 2012-10-29 \n", "3 m408833176 不能收藏? 2012-10-29 \n", "4 兰质薰心 楼主好文!  相信政府一定有能力解决好这些问题. 2012-10-29 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt[:5]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:37:31.357158Z", "start_time": "2018-05-06T06:37:31.339001Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titlelinkauthorauthor_pageclickreplytime
0【民间语文第161期】宁波px启示:船进港湾人应上岸/post-free-2849477-1.shtml贾也http://www.tianya.cn/5049945019467527032012-10-29 07:59
1宁波镇海PX项目引发群体上访 当地政府发布说明(转载)/post-free-2839539-1.shtml无上卫士ABChttp://www.tianya.cn/743418358824410412012-10-24 12:41
\n", "
" ], "text/plain": [ " title link author \\\n", "0 【民间语文第161期】宁波px启示:船进港湾人应上岸 /post-free-2849477-1.shtml 贾也 \n", "1 宁波镇海PX项目引发群体上访 当地政府发布说明(转载) /post-free-2839539-1.shtml 无上卫士ABC \n", "\n", " author_page click reply time \n", "0 http://www.tianya.cn/50499450 194675 2703 2012-10-29 07:59 \n", "1 http://www.tianya.cn/74341835 88244 1041 2012-10-24 12:41 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "df = pd.read_csv('../data/tianya_bbs_threads_list.txt', sep = \"\\t\", header=None)\n", "df=df.rename(columns = {0:'title', 1:'link', 2:'author',3:'author_page', 4:'click', 5:'reply', 6:'time'})\n", "df[:2]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:41:16.700899Z", "start_time": "2018-05-06T06:41:16.407279Z" } }, "outputs": [], "source": [ "from collections import defaultdict\n", "\n", "link_user_dict = defaultdict(list)\n", "for i in range(len(dt)):\n", " link_user_dict[dt.link[i]].append(dt.author[i])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:41:25.371014Z", "start_time": "2018-05-06T06:41:25.357396Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titlelinkauthorauthor_pageclickreplytimeuser
0【民间语文第161期】宁波px启示:船进港湾人应上岸/post-free-2849477-1.shtml贾也http://www.tianya.cn/5049945019467527032012-10-29 07:592478
1宁波镇海PX项目引发群体上访 当地政府发布说明(转载)/post-free-2839539-1.shtml无上卫士ABChttp://www.tianya.cn/743418358824410412012-10-24 12:41830
\n", "
" ], "text/plain": [ " title link author \\\n", "0 【民间语文第161期】宁波px启示:船进港湾人应上岸 /post-free-2849477-1.shtml 贾也 \n", "1 宁波镇海PX项目引发群体上访 当地政府发布说明(转载) /post-free-2839539-1.shtml 无上卫士ABC \n", "\n", " author_page click reply time user \n", "0 http://www.tianya.cn/50499450 194675 2703 2012-10-29 07:59 2478 \n", "1 http://www.tianya.cn/74341835 88244 1041 2012-10-24 12:41 830 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['user'] = [len(link_user_dict[l]) for l in df.link]\n", "df[:2] " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:42:20.431585Z", "start_time": "2018-05-06T06:42:18.598454Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import statsmodels.api as sm\n", "import numpy as np\n", "\n", "x = np.log(df.user+1)\n", "y = np.log(df.reply+1)\n", "xx = sm.add_constant(x, prepend=True)\n", "res = sm.OLS(y,xx).fit()\n", "constant,beta = res.params\n", "r2 = res.rsquared\n", "fig = plt.figure(figsize=(8, 4),facecolor='white')\n", "plt.plot(df.user, df.reply, 'rs', label= 'Data')\n", "plt.plot(np.exp(x), np.exp(constant + x*beta),\"-\", label = 'Fit')\n", "plt.yscale('log');plt.xscale('log')\n", "plt.xlabel(r'$Users$', fontsize = 20)\n", "plt.ylabel(r'$Replies$', fontsize = 20)\n", "plt.text(max(df.user)/300,max(df.reply)/20,\n", " r'$\\beta$ = ' + str(round(beta,2)) +'\\n' + r'$R^2$ = ' + str(round(r2, 2)))\n", "plt.legend(loc=2,fontsize=10, numpoints=1)\n", "plt.axis('tight')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:43:59.383362Z", "start_time": "2018-05-06T06:43:58.732325Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.log(df.user+1)\n", "y = np.log(df.click+1)\n", "xx = sm.add_constant(x, prepend=True)\n", "res = sm.OLS(y,xx).fit()\n", "constant,beta = res.params\n", "r2 = res.rsquared\n", "fig = plt.figure(figsize=(8, 4),facecolor='white')\n", "plt.plot(df.user, df.click, 'rs', label= 'Data')\n", "plt.plot(np.exp(x), np.exp(constant + x*beta),\"-\", label = 'Fit')\n", "plt.yscale('log');plt.xscale('log')\n", "plt.xlabel(r'$Users$', fontsize = 20)\n", "plt.ylabel(r'$Clicks$', fontsize = 20)\n", "plt.text(max(df.user)/300,max(df.click)/20,\n", " r'$\\beta$ = ' + str(round(beta,2)) +'\\n' + r'$R^2$ = ' + str(round(r2, 2)))\n", "plt.legend(loc=2,fontsize=10, numpoints=1)\n", "plt.axis('tight')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:45:51.874280Z", "start_time": "2018-05-06T06:45:51.858734Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "pandas.tslib.Timestamp" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# convert str to datetime format\n", "dt.time = pd.to_datetime(dt.time)\n", "dt['month'] = dt.time.dt.month\n", "dt['year'] = dt.time.dt.year\n", "dt['day'] = dt.time.dt.day\n", "type(dt.time[0])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:46:03.224977Z", "start_time": "2018-05-06T06:46:03.217789Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "d = dt.year.value_counts()\n", "dd = pd.DataFrame(d)\n", "dd = dd.sort_index(axis=0, ascending=True)\n", "ds = dd.cumsum()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:46:21.082456Z", "start_time": "2018-05-06T06:46:21.075548Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def getDate(dat):\n", " dat_date_str = map(lambda x: str(x) +'-01-01', dat.index)\n", " dat_date = pd.to_datetime(list(dat_date_str))\n", " return dat_date\n", "\n", "ds.date = getDate(ds)\n", "dd.date = getDate(dd)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:46:24.041214Z", "start_time": "2018-05-06T06:46:23.786334Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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+ef5wx/+UKDHS09PB2Dr1q3s3r2bVq1andX7t27dyvbt22nYsKFPqF+5ciVHjx4lLi6uQOs9aefOnWzfvp0WLVoU2D5PnouzMXv2bG699VbCwsK8bV27duXw4cMcPnyY+fPnA55werItISHBe77zW/+51JZfy5Yto1GjRlSoUKHQjiEiUpRlD8tNxzZlxIIRRFWI8oblhX0W8tClDxETFuPvUqUYKl3BOSEB+vWDTZvAzPO1X79CDc/9+/cH4N1332X37t106tSJfv36MXDgQADmzJnDlVdeSVRUFLGxsbzzzjve92ZmZnLvvfdSp04dQkNDqV+/PlOmTPH2z5s3j8qVK/P6669Tr149atf2LLqekpJCbGwsERERREREMGfOHJ+aunTpwuOPP56j1sTERCpVqsRjjz3GRx995G1PSkqiXr16REZGAjB+/Hjat2/v896+ffvy6KOP+tQ1duxY6tevT0hICEOGDGHXrl3cddddVKxYkYsuuohvv/3WW2/FihVZuHAh9evXJyIigj59+pCWluZzjNOdq7zORXZTpkyhVatWhIWF0ahRI2bMmOHtq1mzJgkJCbz66quEhoYyb968HO9PTk6mZs2aREf7PhY1JSWFSpUqsXDhQho1akRISAhdunTx1n+62s7n8weYOnUqzZs3JywsjO7du7No0SLvbxr27dtH3759iYmJITQ0lLp16/LZZ5/lGJeISHG3ctdKhs8fTtOxTb1huVJwJcbcNEZhWQqWmRXJV9u2bS03q1at8m0YMsTsqqvy9ypXzswTmX1f5crl7/1DhuRa05nEx8dbvXr1LC4uzgYNGuRtf//9961KlSr25ZdfWkZGhn3//fcWGhpqK1euNDOzffv22QcffGC//fabZWRk2BtvvGHlypWz48ePm5nZSy+9ZIGBgTZs2DA7fPiwHTt2zMzMRowYYV26dDEzs44dO9qzzz7rPebcuXMtOjraDhw4kKPOJ5980jp16mR79+61smXL2q+//mpmZv3797fu3bt7t+vXr589+OCDPu9t0aKFvffee966goKC7NVXX7Vjx47ZwoULDbDrr7/ekpOTLT093e655x67+eabzczshRdesKCgIBsxYoQdPHjQfv75Z6tWrZq9+eab+T5XeZ2Lk9566y2LjY21H3/80czMZs+ebeXLl7dNmzaZmdnRo0etTJky9tNPP+X5Od53331222235WgfMWKElS1b1l566SVLTU21LVu2WGRkpH3++eenre18P/933nnHatWqZd98842lp6fb66+/bkFBQfbyyy+bmVn37t1t4MCBdujQIcvIyLDVq1fbxo0b8xxfUZHjZ1xEJBcrdq6wZ75+xprENzGGY264sw7vdLAxi8bYtoPb/F2eFCNAkuUzn/o9IOf1KpTgnFtoPvkqxOB8/Phxq1q1qt16662WkZFhZmaHDx+2yMhImz59us+21157rU2aNCnX/Rw6dMgA27dvn5mZ9ejRwxs+s7v99tvtueeeMzOzYcOGWefOnc3MLC0tzZo2bWoTJ07Mdf8dO3a0oUOHmplZp06dbPTo0WZm1rZtW++fzczatGnjU2NqaqqVKVPGG/h69OhhPXr0yFH3vHnzvG2jR4+2G264wczMunXrZrfccotPLffff78NGDAg3+cqr3NhZnbw4EGLioryOb6ZWa1atezTTz81M7MffvjBwsLCvJ9Pblq2bOk9r9ndfvvtduedd/q0xcbG2r/+9a88azvfz//IkSMWFRXlDedmZseOHTPAvv76azMza926tQ0YMMD27t2b55iKIgVnEclNZmamLd+53IbNG2aN32jsDctXvXOVvbHoDYVlOWelKzifjTp1cg/Ndeqc+z7zISMjw8LCwnxC0qxZs8w5ZxERET6v4OBg+/jjj83MbM6cOXbjjTdajRo1LDw83EJDQ6169erefTRo0MASEhJyGWYdb6D697//bVWqVDEzs9dee83i4uIsMzMz1zojIyNtxowZZmY2ceJEa9eunR0/ftzKli1r8+fPNzPzfr906VLv+77//nsLCQnxhs4GDRrYlClTvP3ffPONhYeH+4TSXr162eOPP25mZvXq1bMPPvjAp5Zbb73Vhg0blu9zlde5MDP7z3/+4z0HJ2VmZlpwcLB3Bjo+Pt46dOiQ6/vN/jcj/cUXX+Toq1Onjk2bNs37/f79+805553dza228/38Z8+ebeHh4T6f5YYNGwyw/fv3m5nZkiVLrGvXrhYZGWlXXXWVzZkzJ8/xFSUKziJyUvaw3OiNRt6wfPXkqy3+x3jbfmi7v0uUEkDBOS/vv28WHOwbmoODPe2FaOXKlQZ4LwswM3v33XetTZs2eb7nhx9+sKioKJs9e7YdOXLEzMyee+45+/3vf29mZgcOHDDn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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(12,5))\n", "plt.plot(ds.date, ds.year, 'g-s', label = '$Cumulative\\: Number\\:of\\: Threads$')\n", "plt.plot(dd.date, dd.year, 'r-o', label = '$Yearly\\:Number\\:of\\:Threads$')\n", "#plt.yscale('log')\n", "plt.legend(loc=2,numpoints=1,fontsize=13)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Extract @ " ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:46:42.522408Z", "start_time": "2018-05-06T06:46:42.515409Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0 先生是一位真爷们!第161期导语:人人宁波,面朝大海,春暖花开!  宁波的事,怎谈?无从谈,...\n", "1 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花...\n", "2 默默围观~\n", "3 不能收藏?\n", "4 楼主好文!  相信政府一定有能力解决好这些问题.\n", "5 人民在觉醒。\n", "6 理性的文字,向楼主致敬!\n", "7 呼唤变革,人民需要的是服务型政府!\n", "8 顶贾兄!让我们携手努力保卫家园!\n", "9 围观就是力量,顶起就有希望.\n", "10 文章写得太有力量了,支持你!\n", "11 @贾也 2012-10-29 7:59:00  导语:人人宁波,面朝大海,春暖花开  ......\n", "12 中国人从文盲走向民粹,实在是太快了。\n", "13 杀死娘胎里的,毒死已出生的,这个社会怎么了?\n", "14 3\n", "15 环境比什么都可贵,每一次呼吸,每一顿粮食,都息息相关,若任其恶化,而无从改观,那遑谈国家之未...\n", "16 写的很好\n", "17 未来这里将是全球最大的垃圾场,而他们早已放浪西方。苟活的将面临数不清的癌症,无助的死亡。悲哀...\n", "18 媒体失声,高压维稳,只保留微博和论坛可以说这件事!因为那些人知道,网上的人和事就只能热几天,...\n", "19 说的太好了,看的我泪流满面!\n", "20 “我相信官场中,许多官员应该葆有社会正能量”  通篇好文,顶!唯这句,不说也罢....\n", "21 先占一环,然后看帖\n", "22 说的太好了\n", "23 我上的小学,隔壁就是一家水泥厂,到处飞扬的水泥灰是我最熟悉的颜色;坐一站地车,就是一家造纸厂...\n", "24 我们中国人都在一条船,颠簸已久,我们都想做宁波人,希望有一个风平浪静的港湾,面朝大海,春暖花开!\n", "25 前排占座~~\n", "26 贾也先生是一位真爷们!\n", "27 \n", "28 为什么我的眼里常含着泪水?因为我对这片土地爱得深沉!\n", "29 又是因为环保的群体事件,影响面大,危害严重,理由叫的响,取得阶段性胜利。  那些拆迁的、城管...\n", "30 回复第20楼,@rual_f  “我相信官场中,许多官员应该葆有社会正能量”   通篇好文,...\n", "31 好文.\n", "32 一环  天涯现在太滞后了,看消息还是得靠微博。太失望了。\n", "33 刘明……\n", "34 杂谈的低智商屌丝男们确定自己懂什么是px?\n", "35 屁民的胜利\n", "36 说的太好了\n", "37 .....  。。。。\n", "38 。。。。。。\n", "39 宁波人民胜利了!\n", "40 好文\n", "41 不显示\n", "42 含泪顶起~~~~~~~~\n", "43 盲目决策,  然后群众反对,  再抓人,  政府出面承诺项目搁置,  再偷偷上马,  在各地轮回\n", "44 好文頂一個先!希望我們的政府不要再置人民的利益于不顧!不要再行滅絕漢族子孫的政策!不要逼民眾...\n", "45 每次看到这样的消息,都很痛心,很堵很堵。为什么在经济发展的同时,我的祖国却越来越残忍,越来越...\n", "46 @兰质薰心 2012-10-29 08:55:52  楼主好文!  相信政府一定有能力解决好...\n", "47 记得以前有人说过 厦门 必将会成为一座里程碑 烛照万里 看来真的成了\n", "48 贾也,真爷们,  一直爱在天涯逛逛,是因为这还多少能让人说话\n", "49 帖子咋了,啥都看不到。\n", "50 顶\n", "51 顶,好文章\n", "52 在宁波呆过几年,感觉还不错\n", "53 @昊爷7 2012-10-29 11:19:29  杂谈的低智商屌丝男们确定自己懂什么是px...\n", "54 什么时候变成了奴隶\n", "Name: reply, dtype: object" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt.reply[:55]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "@贾也2012-10-297:59:00  导语:人人宁波,面朝大海,春暖花开  ........\n", "\n", " @兰质薰心2012-10-2908:55:52  楼主好文!  相信政府一定有能力解决好这些...\n", " \n", " 回复第20楼,@rual_f  “我相信官场中,许多官员应该葆有社会正能量”  通篇好文,顶..." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:47:20.460627Z", "start_time": "2018-05-06T06:47:20.454926Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "lilei\n", "Bob\n", "Girl\n", "魏武\n", "MarkGreene\n" ] } ], "source": [ "import re\n", "tweet = u\"//@lilei: dd //@Bob: cc//@Girl: dd//@魏武: \\\n", " 利益所致 自然念念不忘// @诺什: 吸引优质 客户,摆脱屌丝男!!!//@MarkGreene: 转发微博\"\n", "RTpattern = r'''//?@(\\w+)'''\n", "for word in re.findall(RTpattern, tweet, re.UNICODE):\n", " print(word)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:47:55.663244Z", "start_time": "2018-05-06T06:47:55.660104Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "@贾也 2012-10-29 7:59:00  导语:人人宁波,面朝大海,春暖花开  ...........  -----------------------------  顶贾兄!  充分说明:莫言或诺贝尔,名至实归!\n" ] } ], "source": [ "print(dt.reply[11])" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:48:11.362603Z", "start_time": "2018-05-06T06:48:11.357682Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "['贾也']" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "RTpattern = r'''@(\\w+)\\s'''\n", "re.findall(RTpattern, dt.reply[11], re.UNICODE)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:48:31.620947Z", "start_time": "2018-05-06T06:48:31.615638Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n" ] } ], "source": [ "if re.findall(RTpattern, dt.reply[0], re.UNICODE):\n", " print(True)\n", "else:\n", " print(False)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:48:50.330017Z", "start_time": "2018-05-06T06:48:50.320128Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11 \t 木兰清风_ \t 贾也 \t\t @贾也 2012-10-29 7:59:00  导语:人人宁\n", "30 \t 此东西非南北 \t rual_f \t\t 回复第20楼,@rual_f  “我相信官场中,许多官员应该\n", "46 \t 弱水三千chen \t 兰质薰心 \t\t @兰质薰心 2012-10-29 08:55:52  楼主好\n", "53 \t 彼得与梦想 \t 昊爷7 \t\t @昊爷7 2012-10-29 11:19:29  杂谈的低\n", "66 \t lenglengjing \t 蒙上眼睛的牛 \t\t @蒙上眼睛的牛 2012-10-29 10:15:56  未\n", "67 \t AGy戰女 \t 天时怼兮威灵怒 \t\t @天时怼兮威灵怒 66楼   http://baike.ba\n", "69 \t 我真的要说吗 \t 香湖人 \t\t @香湖人 27楼     -----------------\n", "71 \t 2011我为卿狂 \t shdsb \t\t @shdsb 2012-10-29 10:17:43  媒体\n", "72 \t 无色天空FRANK \t pals2009 \t\t @pals2009 48楼   每次看到这样的消息,都很痛心\n", "76 \t gaolihshq \t 兰质薰心 \t\t 作者:弱水三千chen 回复日期:2012-10-29 11\n", "80 \t LBJStream \t 曾开贵 \t\t @曾开贵 2012-10-29 11:40:09  没有ZF\n", "93 \t 大头菜烤年糕 \t 横冲节度使 \t\t @横冲节度使 2012-10-29 12:11:50  楼主\n", "94 \t xinggzyyc \t 赶浪头 \t\t @赶浪头 2楼   默默围观~    -----------\n" ] } ], "source": [ "for k, tweet in enumerate(dt.reply[:100]):\n", "# tweet = tweet.decode('utf8')\n", " RTpattern = r'''@(\\w+)\\s'''\n", " for person in re.findall(RTpattern, tweet, re.UNICODE):\n", " print(k,'\\t',dt.author_name[k],'\\t', person,'\\t\\t', tweet[:30])" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:49:22.885476Z", "start_time": "2018-05-06T06:49:22.881757Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "@曾开贵 2012-10-29 11:40:09  没有ZF,哪来新ZG,没有新ZG,你们吃什么?为什么你们总是要攻击ZF呢,就像之前那样骂骂小日本多好啊……看看台湾,一碗牛肉面竟然卖到100台币一碗,大L都才卖10元一碗,你还不知足!啥,工资不一样?没错,台湾平均工资5万台币能买500碗牛肉面,大L平均工资2000能买200碗牛肉面。但是,小同志,事情没这么简单啊,你能一下吃完500碗面吗?在倡导节约、环保低碳的今天,你不觉得铺张浪费是件可耻...........  -----------------------------  叼\n" ] } ], "source": [ "print(dt.reply[80])" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:49:36.724126Z", "start_time": "2018-05-06T06:49:36.703771Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "link_author_dict = {}\n", "for i in range(len(df)):\n", " link_author_dict[df.link[i]] =df.author[i] \n", " " ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:50:10.726514Z", "start_time": "2018-05-06T06:50:10.343850Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "graph = []\n", "for k, tweet in enumerate(dt.reply):\n", " url = dt.link[k]\n", " RTpattern = r'''@(\\w+)\\s'''\n", " persons = re.findall(RTpattern, tweet, re.UNICODE)\n", " if persons:\n", " for person in persons:\n", " graph.append([dt.author_name[k], person])\n", " else:\n", " graph.append( [dt.author_name[k], link_author_dict[url]] )\n", " " ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:50:13.340926Z", "start_time": "2018-05-06T06:50:13.336806Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "8769" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(graph)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:50:44.357156Z", "start_time": "2018-05-06T06:50:44.352752Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "贾也 贾也\n", "三平67 贾也\n", "赶浪头 贾也\n" ] } ], "source": [ "for x, y in graph[:3]:\n", " print(x, y)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:50:58.605462Z", "start_time": "2018-05-06T06:50:58.263735Z" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "import networkx as nx" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:51:27.437227Z", "start_time": "2018-05-06T06:51:27.405288Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "G = nx.DiGraph()\n", "for x,y in graph:\n", " if x != y:\n", " G.add_edge(x,y)\n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:51:30.030096Z", "start_time": "2018-05-06T06:51:30.014499Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "'Name: \\nType: DiGraph\\nNumber of nodes: 4289\\nNumber of edges: 5995\\nAverage in degree: 1.3978\\nAverage out degree: 1.3978'" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nx.info(G)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:52:13.793290Z", "start_time": "2018-05-06T06:52:13.549868Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "GU=G.to_undirected(reciprocal=True)\n", "graphs = list(nx.connected_component_subgraphs(GU))" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:52:23.020295Z", "start_time": "2018-05-06T06:52:23.005476Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "(4067, 120)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "size = []\n", "for i in graphs:\n", " size.append(len(i.nodes()))\n", "len(size), np.max(size)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:53:20.458023Z", "start_time": "2018-05-06T06:53:20.444795Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gs = []\n", "for i in graphs:\n", " if len(i.nodes()) >5:\n", " gs.append(i)\n", "len(gs)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:53:35.879607Z", "start_time": "2018-05-06T06:53:35.874929Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6\n", "120\n", "44\n", "9\n" ] } ], "source": [ "for g in gs:\n", " print(len(g.nodes()))" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:54:10.317889Z", "start_time": "2018-05-06T06:54:10.313504Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "120" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g_max = gs[1]\n", "len(g_max.nodes())" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "ExecuteTime": { "end_time": "2018-05-06T06:54:15.033165Z", "start_time": "2018-05-06T06:54:14.906973Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pos = nx.spring_layout(g_max) \n", "#定义一个布局,此处采用了spectral布局方式,后变还会介绍其它布局方式,注意图形上的区别\n", "nx.draw(g_max,pos,with_labels=False,node_size = 30) \n", "#绘制规则图的图形,with_labels决定节点是非带标签(编号),node_size是节点的直径\n", "plt.show() #显示图形" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "ExecuteTime": { "end_time": "2017-05-21T13:58:37.678460", "start_time": "2017-05-21T13:58:37.673412" }, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# with open('../data/tianya_network_120.csv', 'a') as f:\n", "# for x, y in g_max.edges():\n", "# f.write(x + ',' + y + '\\n')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![](./img/tianyaGephi.png)\n", "\n", "# 使用 Gephi进行网络可视化" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "# 1\t/post-free-2849477-1.shtml\t2012-10-29 11:11:32\t51150428\t生生0326\t一环  天涯现在太滞后了,看消息还是得靠微博。太失望了。\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 作业:\n", "- 1. 计算节点的度,并绘制其散点图。\n", "- 2. 计算节点的聚类系数\n", "- 3. 计算节点的pagerank" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python [conda env:anaconda]", "language": "python", "name": "conda-env-anaconda-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.4" }, "latex_envs": { "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 0 }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": false, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "48px", "left": "1539px", "top": "189.396px", "width": "168px" }, "toc_section_display": false, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 1 }