2013年12月11日 星期三

[Ubuntu] 安裝Vim

相信寫程式的人大多會在就學時期接觸Ubuntu,以及鼎鼎大名的vim。

但在Ubuntu中是沒有預裝vim的,所以一般來說我們要鍵入下列指令安裝他:

sudo apt-get install vim

但我上次使用Ubuntu準備來寫作業系統Project時,
每每打入上面的指令,系統都給我以下的回復:

The following packages have unmet dependencies: vim : Depends: vim-common (= 2:7.3.154+hg~74503f6ee649-2ubuntu2) but 2:7.3.154+hg~74503f6ee649-2ubuntu3 is to be installed E: Unable to correct problems, you have held broken packages.

看起來是安裝包有問題,後來千辛萬苦,找到了這一串神擋殺神的指令:

sudo apt-get remove vim-common sudo apt-get clean && sudo apt-get purge sudo apt-get update && sudo apt-get install vim
 
基本上他是把東西砍光,然後重新下載安裝他, 
後來果然輕鬆安裝成功了,有這個問題的人也試試看吧!:) 

[Python] 繪圖工具Networkx: 安裝(Mac OS)

我目前在研究的領域是Natural Language Processing,

具體來說是利用詞圖與統計資料做出文字的摘要。


由於要建立詞圖,我覺得如果能讓詞圖視覺化,

會更有助於我們理解演算法分析使用我們的語料是否如同預期。


剛好Python 也是以函式庫眾多著稱,不好好利用怎麼行呢?

在網路上找了找,最被推薦的正是 Networkx

官網: http://networkx.github.io/ 



這個網站已經相當人性化地分門別類,列出使用者所需的資訊。

其中最讚的是它提供了超多範例!先來把它安裝起來吧!

以下的安裝過程參考自下列網址:

http://hannahfry.co.uk/2013/05/30/how-to-install-networkx-on-a-mac/

--

第一步:  下載壓縮檔
從這個網址 http://networkx.lanl.gov/download/networkx/ 下載Networkx最新版。

第二步:解壓縮到你想要的任何資料夾。

例如選擇解壓縮到桌面,解壓縮後會出現一個 "networkx-1.x"的資料夾。

第三步:開啟Terminal(終端機),移動到你解壓縮後的"networkx-1.x"資料夾下。

如:
cd ~/Desktop/networkx-1.x

第四步: 鍵入下列指令,執行networkx 提供的script。

sudo python setup.py install

Terminal會要求你輸入密碼,乖乖地輸入。

第五步:大功告成!在你的Python script裡使用Networkx吧!

 import networkx


2013年12月3日 星期二

[Python] 取得路徑下檔案

如何利用python取得特定路徑下的檔案名稱呢?

其實說起來也相當簡單,os module裡已經定義好了。

先從os.listdir本身會回傳該資料夾下的所有檔案名稱,以list回傳。

再用一個 for 迴圈遍訪每個檔名,對其用os.path.isfile()判斷即可(若要取資料夾使用os.path.isdir())。

以下為範例程式碼。


import os
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
        print f

上面是個簡潔有力的寫法,他的效果等義於下列程式碼:

import os
files = []

for f in os.listdir('.'):
        if os.path.isfile(f):
                files.append(f)
for f in files:
        print f


在做NLP時,真的有數不儘的檔案,數不盡的路徑要確認。

一般來說,如果有大量的靜態的資料,如路徑或檔名之類的,

都會為這個程式寫個獨立的config檔,可能以xml檔實作的(.NET Framework幾乎都是如此)。


但在做一些python小程式的時候,

有的時候我還是會偏好一些簡單的方法,

(感覺維護比較不易,但我儘量會統一自己參數的風格XD)

不過如果是基本不變動的,其實寫config還是美德啊!XD