(信陽農林學院外國語學院 河南 信陽 464000)
UNIX是一種操作系統(tǒng),它最早是在20世紀60年代開發(fā)出來的,此后一直在不斷發(fā)展。常規(guī)所說的操作系統(tǒng),是指使計算機工作的整套程序。它是一個穩(wěn)定、多用戶、多任務的系統(tǒng),適用于服務器、臺式機和筆記本電腦。隨著UNIX系統(tǒng)的衰落,越來越多新的操作系統(tǒng)開始嶄露頭叫,其中包括微軟公司的Windows操作系統(tǒng)和蘋果公司的Mac操作系統(tǒng),這些新的操作系統(tǒng)推出了圖形用戶界面(GUI),提供了一個易于使用的環(huán)境。但是,對于圖形化程序所不能覆蓋的操作,但是依賴字符模式的Unix操作方式并沒有被時代淘汰,接起Unix大旗的是一系列類Unix操作系統(tǒng)(Unix-like Operating Systems)。其中最顯著的包括FreeBSD、OpenBSD、NetBSD以及Linux操作系統(tǒng)。
UNIX操作系統(tǒng)由三部分組成:內核、shell和程序。UNIX的內核是操作系統(tǒng)的中樞:它為程序分配時間和內存,并處理文件存儲和響應系統(tǒng)調用的通信。shell作為用戶和內核之間的一個接口。當用戶登錄時,登錄程序檢查用戶名和密碼,然后啟動另一個名為shell的程序。shell是一個命令行解釋器(CLI)。它對用戶輸入的命令進行解釋,并安排這些命令的執(zhí)行。這些命令本身就是程序:當它們終止時,shell會給用戶另一個提示符。我們可以簡單的認為,shell搭建起了程序與內核之間的橋梁,而shell同時也構筑了用戶與操作系統(tǒng)之間的溝通之路。
Unix的哲學在于“小而精的工具,干好每一件事”。因而,利用Unix操作系統(tǒng)和Unix平臺之上的工具工作,用戶應當通過將若干小工具進行組合的方式,這種類似搭積木的工作模式,看似簡單,但威力無窮。
自然語言處理(Natural Language Processing,簡稱NLP)就是用計算機來處理、理解以及運用人類語言(如中文、英文等),它屬于人工智能的一個分支,是計算機科學與語言學的交叉學科,又常被稱為計算語言學。由于自然語言是人類區(qū)別于其他動物的根本標志。沒有語言,人類的思維也就無從談起,所以自然語言處理體現了人工智能的最高任務與境界,也就是說,只有當計算機具備了處理自然語言的能力時,機器才算實現了真正的智能。
從研究內容來看,自然語言處理包括語法分析、語義分析、篇章理解等。從應用角度來看,自然語言處理具有廣泛的應用前景。特別是在信息時代,自然語言處理的應用包羅萬象,例如:機器翻譯、手寫體和印刷體字符識別、語音識別及文語轉換、信息檢索、信息抽取與過濾、文本分類與聚類、輿情分析和觀點挖掘等,它涉及與語言處理相關的數據挖掘、機器學習、知識獲取、知識工程、人工智能研究和與語言計算相關的語言學研究等。
而互聯(lián)網的高速發(fā)展,使得自然語言處理的發(fā)展迎來了前所未有的機遇,海量的數據使得自然語言處理擁有了前所未有的資料庫和檔案館,而計算機、智能手機等終端的大規(guī)模普及也使得對文本的數字化分析不再停留在實驗室和論文之上,更多用戶迫切的需要日常的、自動化的語言分析,例如每個用戶都會使用的中文輸入法,就需要有大量的自然語言處理工作在幕后發(fā)揮作用。而海量的視頻、彈幕和社交媒體信息都需要自然語言處理來概括總結和提供前瞻性預測。尤其是在近年來,隨著人工智能技術的飛速發(fā)展,憑借機器學習、深度學習和神經網絡等技術的幫助,自然語言處理的精度、準確度和智能程度都得到了很大的改善,可以判斷的是,未來的時代是屬于人工智能的,而留給自然語言處理的舞臺只會越來越大,需要進行自然語言處理的場景只會越來越多。而與此同時,傳統(tǒng)語言學和文學工作中需要借助自然語言處理的地方也會越來越多。這個領域的跨學科的研究也會越來越多。
而詞頻分析,應當屬于在進行自然語言處理過程中,一個基本的操作步驟。詞頻分析(Word Frequency Analysis)是對文獻正文中重要詞匯出現的次數進行統(tǒng)計與分析,是文本挖掘的重要手段。它是文獻計量學中傳統(tǒng)的和具有代表性的一種內容分析方法,基本原理是通過詞出現頻次多少的變化,來確定熱點及其變化趨勢。
威廉·莎士比亞(William Shakespeare,1564-1616)應該屬于在中文世界里最為人所知的西方作家了,作為英國文學史上最杰出的戲劇家,也是西方文藝史上最杰出的作家之一,全世界最卓越的文學家之一,他的影響深遠,其作品往往被視為英語語言文學的瑰寶。他流傳下來的作品包括38部戲劇、154首十四行詩、兩首長敘事詩和其他詩歌。戲劇創(chuàng)作是莎士比亞主要的成就。關于莎士比亞也存在許多傳說,坊間一直流傳莎士比亞是英國文學史上使用單詞數量最大的作家,甚至認為其使用的單詞總數遠遠超過同時代的其他作家。
首先,本文使用的莎士比亞全集來自于古騰堡計劃。該文件為完整版的莎士比亞全集,但是首先需要去除部分無關文本,其中主要包括古騰堡計劃的說明和一些版權信息。為了實現該目的,需要執(zhí)行下述命令:
cat shakes.txt|sed-e’149260,149689d’|sed-e’1,141d’>shakes_new.txt
該命令將從尾部移除該文件14926到149689行的內容,上述內容均屬與莎士比亞文本無關的元信息。
首先,讓我們通過命令行工具看一下,整個干凈的文本的基本統(tǒng)計學信息,包括行數、字符數、和單詞總數。
cat shakes_new.txt|wc|awk’{print "Lines:" $1 " Words:" $2 " Character:" $3 }’
獲得的數據為:行數:149118,單詞總數:956209,字符總數:5827807。上面命令中,cat命令為提取整個文本,通過管道“|”將其輸入到wc中來計算三個數據,最終利用awk命令來輸出整個數據。這種操作方式,正是上文提到的“Unix哲學”,也就是“搭積木”的操作流程,通過簡潔的小命令組合在一起,從而實現目的。
因為英語中存在大量干擾自然語言處理的元素,因此進行到這一步的時候需要對文本進行清洗,以便進一步分析。清理的內容包括:將文本轉換為小寫,去除所有的數字,去除所有的標點符號,以及去除高頻詞(隔斷詞)。當然處理方法并不限于這些步驟,要依賴處理和分析的目的而定。這里展示一些基本的文本處理。
首先,將現有文本里面所有的大寫都轉換成小寫,并去掉所有的標點符號和數字。此處,借用Unix系統(tǒng)里的tr工具,該工具可以根據我們的指令將文本中的元素進行替換或者刪除。
cat shakes_new.txt|tr’A-Z’’a-z’|tr-d[:punct:]|tr-d[:digit:]>shakes_new_cleaned.txt
得到的文本如下文所示(因為空間有限,只展示五行):
1 from fairest creatures we desire increase
2 that thereby beautys rose might never die
3 but as the riper should by time decease
4 his tender heir might bear his memory
5 but thou contracted to thine own bright eyes
現有的文本已經展現出和原始材料截然不同的面貌,下面的步驟至關重要,現在需要對文本進行分詞(Tokenization),也就是將句子、段落分解為字詞單位,方便后續(xù)的處理的分析。文本都是一些“非結構化數據”,我們需要先將這些數據轉化為“結構化數據”,結構化數據就可以轉化為數學問題了,而分詞就是轉化的第一步。
cat shakes_new_cleaned.txt|tr-sc ‘a-z’ ‘12’ > shakes_tokenized.txt
通過上述命令我們可以實現分詞。得到按詞來排列的一行一行的文本。這樣,距離我們計算詞頻就只剩下最后一步了。通過下面兩條命令,我們可以計算莎士比亞全集里出現頻率最高的10個詞以及頻率最低的10個詞。
catshakes_tokenized.txt|sort|uniq-c|sort-nr>shakes_sorted_desc.txt
catshakes_tokenized.txt|sort|uniq-c|sort-n>shakes_sorted_asc.txt
其中出現頻率最高的是個詞分別是:
29768 the 28276 and 21868 i 20805 to 18650 of 15933 a 14363 you 13191 my 11966 in 11760 that
出現頻率最低的分別是:
1 aarons 1 abandoner 1 abatements 1 abatfowling 1 abbominable 1 abaissiez 1 abashd 1 abates 1 abbeys 1 abbots
可以發(fā)現的是,高頻的詞都是英語中最基本、最常用、最普遍的詞,而那些出現頻率最低的詞,都是一些現代英語中很難一見的詞。這一結論也基本符合我們的預期和判斷。
通過對莎士比亞全集的分析,不難發(fā)現,利用Unix系統(tǒng)提供的工具構成的工具鏈,可以輕松的打造出一個高效簡潔的流程,而在這個流程中,除了簡明扼要這個最大的優(yōu)勢,同時也可以實現,每一步都可以自動輸出結果,從而保證整個流程中容易了解每一步的進展,同時也最大程度上避免錯誤的發(fā)生。誠如上文所述,“殺雞焉用宰牛刀”,使用短小的流程,實現目標,不失為一次成功的新的嘗試。