傅迎華,李 江,付東翔
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
自然語言處理是計算機(jī)、自動化等本科專業(yè)的核心專業(yè)課程之一,其內(nèi)容是建立在線性代數(shù)、概率論、數(shù)據(jù)挖掘等課程內(nèi)容基礎(chǔ)上,具有更高一層次的知識。該課程一般在本科高年級階段開設(shè),需要在掌握上述前修課程基礎(chǔ)上才能選修該門課程,是一門具有較高專業(yè)技能的基礎(chǔ)課程。
自然語言處理同時也是一門應(yīng)用相當(dāng)廣的課程。自然語言處理相關(guān)技術(shù)在文本分類、信息抽取、語音識別、信息檢索和機(jī)器翻譯等領(lǐng)域有著廣泛應(yīng)用,是一門與現(xiàn)代技術(shù)聯(lián)系緊密的專業(yè)課程。隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)的海量出現(xiàn)為自然語言處理提供了大量的需求驅(qū)動,機(jī)器學(xué)習(xí)技術(shù)精度不斷提高和深度學(xué)習(xí)的普及推動著自然語言處理處理技術(shù)和應(yīng)用技術(shù)不斷演化和推進(jìn),也增加了社會對智能信息處理人才的需求。
作為一門本科生課程,怎樣在教學(xué)中將學(xué)生的認(rèn)識能力與教學(xué)目標(biāo)和任務(wù)有效結(jié)合,使學(xué)生能在一個學(xué)期的學(xué)習(xí)過程中,既能理解語言處理的基本方法和算法過程,又能結(jié)合實際問題進(jìn)行分析,是自然語言處理教學(xué)中的重點和難點之一。筆者對教學(xué)目標(biāo)定位進(jìn)行梳理,對教學(xué)內(nèi)容進(jìn)行篩選,給出理論教學(xué)和實踐教學(xué)的內(nèi)容框架,使學(xué)生在學(xué)習(xí)過程中,既能對理論有一定的分析把握,又能解決和分析一些實際問題,做到“知其然并知其所以然”。
自然語言處理是用計算機(jī)通過可計算的方法對自然語言的各級語言單位進(jìn)行轉(zhuǎn)換、傳輸、存貯、分析等加工處理的科學(xué),是一門與語言學(xué)、計算機(jī)科學(xué)、數(shù)學(xué)、心理學(xué)、信息論、聲學(xué)相聯(lián)系的交叉性學(xué)科。通過課程的學(xué)習(xí),使學(xué)生掌握自然語言處理技術(shù)(特別是基于統(tǒng)計的語言處理技術(shù))的基本概念、基本原理和主要方法,了解當(dāng)前語言處理技術(shù)的發(fā)展概貌,接觸語言處理技術(shù)的前沿課題,具備運用基本原理和主要方法解決實際問題的能力。
根據(jù)計算機(jī)學(xué)科和智能專業(yè)培養(yǎng)目標(biāo),自然語言處理的教學(xué)內(nèi)容和實驗安排圍繞以掌握智能檢測和識別系統(tǒng)的關(guān)鍵技術(shù)、算法結(jié)構(gòu)設(shè)計功能、系統(tǒng)軟件組成和應(yīng)用軟件設(shè)計為目標(biāo)展開[1-2]。
自然語言處理是在本科生高年級階段開設(shè)的為期一個學(xué)期的課程。在短短一個學(xué)期內(nèi),需要學(xué)生掌握有一定理論深度和相關(guān)實踐這兩方面的內(nèi)容是十分困難的。在教學(xué)中,有些課程注重理論學(xué)習(xí)而排除了練習(xí)時間,這使學(xué)生缺乏理論聯(lián)系實際的機(jī)會,減少了學(xué)生在學(xué)習(xí)解決自動處理語言問題帶來的挑戰(zhàn)性和成就感,使課程枯燥乏味,從而失去興趣。此外,還有一些課程只講授語言學(xué)編程問題而不講自然語言處理的相關(guān)算法和原理,這也會給學(xué)生造成知其然不知其所以然的狀況,不利于學(xué)生更進(jìn)一步發(fā)展。
根據(jù)本科生知識層次特征和課程安排,本課程在理論教學(xué)中應(yīng)精心篩選教材,避開專業(yè)理論性很強(qiáng)的書籍,選用容易理解且實現(xiàn)動手較快的入門級參考書做教材[3-4]。此外,本課程應(yīng)避免過分強(qiáng)調(diào)算法的理論分析,注重理論與實際例子的結(jié)合,將所涉及內(nèi)容進(jìn)行有針對性地區(qū)分,最大程度幫助學(xué)生減少對編程的畏懼心理,用程序來分析書面語言。
教學(xué)內(nèi)容的安排應(yīng)遵循循序漸進(jìn)、由易到難的過程。課程內(nèi)容主要包含三個基本塊:第一部分主要介紹語言處理及如何使用小的Python程序分析感興趣的文本信息,再通過結(jié)構(gòu)化程序設(shè)計鞏固編程要點;第二部分講述語言處理的基本原理及方法(如標(biāo)注、分類和信息提取等),探索句子解析、句法結(jié)構(gòu)識別和句意表達(dá)構(gòu)建;第三部分簡單講述如何管理語言數(shù)據(jù)。
目前,Python在國內(nèi)高校還不是一種很普及的程序設(shè)計語言,但課程中選用Python作為程序開發(fā)語言的原因主要基于以下幾點:①Python可以免費下載,并能在各種平臺上安裝運行,且自帶的函數(shù)非常適合于處理語言數(shù)據(jù);②Python具有強(qiáng)大的字符串處理功能,文法和語義易懂;③自然語言工具箱(NLTK)使用Python進(jìn)行NLP編程實現(xiàn),它提供了與自然語言處理相關(guān)的數(shù)據(jù)表示基類、詞性標(biāo)注、文法分析和文本分類等任務(wù)的標(biāo)準(zhǔn)接口及標(biāo)準(zhǔn)實現(xiàn),可以組合起來解決復(fù)雜問題;④Python在國際上工業(yè)、科研、教育領(lǐng)域應(yīng)用廣泛,軟件的生產(chǎn)效率、質(zhì)量和可維護(hù)性好。自然語言處理課程理論教學(xué)課時分配見表1。
理論教學(xué)主要包含Python程序設(shè)計和NLTK、自然語言處理的基本原理及方法兩大內(nèi)容。
表1 理論教學(xué)課時分配
1)Python程序設(shè)計和NLTK。
Python是一門強(qiáng)大的程序語言,學(xué)生可以在比較短的時間內(nèi)完成一些高級的任務(wù)。目前,Python語言的發(fā)展主要包含Python2.X和Python3.X,這兩個版本各有特點[5-6]。Python 3.X引入了一些與Python 2.X不兼容的關(guān)鍵字和特性,在Python 2.X中,可以通過內(nèi)置的__future__模塊導(dǎo)入這些新內(nèi)容。在Python 2.X環(huán)境下寫的代碼為方便在Python 3.X中運行,可以使用__future__模塊。目前,Python最新版本分別為Python2.7和Python3.5。自然語言工具箱NLTK的代碼示例適用的是Python2.X版本,因此本課程教學(xué)采用的是最新的Python2.7版本。
Python在自然語言處理中的廣泛應(yīng)用依賴于其強(qiáng)大的串處理功能[7]。本課程的Python程序設(shè)計主要包括Python基礎(chǔ)知識、列表和元組、適用字符串、字典、條件、循環(huán)和其他語句:Python基礎(chǔ)知識包括安裝Python、數(shù)字和表達(dá)式、變量、語句、函數(shù)、模塊和字符串等;列表和元組包括序列的通用操作如分塊和乘法及最大最小值等,列表的list函數(shù)和列表方法,元組的tuple函數(shù)和基本元組操作等;適用字符串包括字符串基本操作和字符串方法等;字典包括創(chuàng)建和使用字典等;條件、循環(huán)和其他語句包括基本賦值方式、語句塊、條件語句、基本循環(huán)操作和列表推導(dǎo)式等。
NLTK提供直觀的框架和大量模塊,使用戶獲取自然語言知識而不陷入與標(biāo)注語言類似的繁瑣事務(wù)中,還提供一種結(jié)構(gòu),使新的軟件模塊易于添加,可以獨立使用與工具包其他部分無關(guān)的組件。
2)自然語言處理的基本原理及方法。
這一部分主要包括句法語義分析、文本分析和模式識別的基本方法。
句法語義分析主要用于對給定的句子進(jìn)行分詞、詞性標(biāo)記、命名實體識別和鏈接、句法分析、語義角色識別和多義詞消歧。在統(tǒng)計自然語言處理領(lǐng)域,詞性標(biāo)注、句法分析、語義識別和多義詞消歧等通過大量樣本和監(jiān)督分類方法來實現(xiàn)。句法分析樹是一種常用的分析方法,通過算法實現(xiàn)將一句話按照句法邏輯組織成一棵樹。句法分析通過大量的訓(xùn)練數(shù)據(jù),把樹庫中的句法規(guī)則提取出來生成符合自然語言的結(jié)構(gòu)形式,從而進(jìn)行合并、歸納等處理。
文本分析包括文本信息提取和文本挖掘。圖1描述了一個信息提取系統(tǒng)的簡單流程。首先,使用句子分割器將該文檔的原始文本分割成句,使用分詞器將每個句子進(jìn)一步細(xì)分為詞。然后,對每個句子進(jìn)行詞性標(biāo)注,在下一步命名實體識別中將證明這是非常有益的。在這一步,我們尋找每個句子中提到的潛在的有趣的實體。最后,我們使用關(guān)系識別搜索文本中不同實體間的可能關(guān)系。文本挖掘包括文本聚類、分類、情感分析以及對挖掘的信息和知識的可視化、交互式的表達(dá)界面。文本挖掘涉及目前一些主流的機(jī)器學(xué)習(xí)方法。
圖1 信息提取系統(tǒng)的簡單流程
模式識別是自然語言處理的一個核心部分。自然語言處理通常會應(yīng)用一些重要的機(jī)器學(xué)習(xí)核心技術(shù),如決策樹、樸素貝葉斯分類器、最大熵分類器、K近鄰分類器、感知器算法和SVM分類器等。在本科生培養(yǎng)方案中,決策樹方法在先修課程數(shù)據(jù)挖掘中已詳細(xì)介紹,包括分類器的評價方法。本課程將著重介紹貝葉斯分類器、K近鄰分類器和SVM分類器的基本原理及其分析方法,使學(xué)生能理解不同機(jī)器學(xué)習(xí)方法的區(qū)別和應(yīng)用范圍,以便學(xué)生在以后實踐中能根據(jù)實際應(yīng)用選擇合適的處理方法。
實驗教學(xué)是理論教學(xué)內(nèi)容的實踐,讓學(xué)生認(rèn)識和動手實踐理論的內(nèi)容。課程實踐內(nèi)容主要包括Python程序語言設(shè)計和用NLTK實現(xiàn)句法分析和文本分類,實驗教學(xué)內(nèi)容安排見表2。
表2 實驗教學(xué)內(nèi)容安排
實驗教學(xué)內(nèi)容圍繞怎樣利用自然語言工具箱NLTK進(jìn)行文本分析、特征提取和文本分類等,主要包括:語料庫的調(diào)用和創(chuàng)建自己的語料庫,文本抽取和特征過濾,創(chuàng)建字典以及用最近鄰、樸素貝葉斯、決策樹和SVM等分類方法對文本進(jìn)行分類。
NLTK提供了交互式圖形用戶界面,無需用戶任何數(shù)據(jù)就能執(zhí)行有趣的任務(wù),減輕了學(xué)生的編程壓力,使學(xué)生在學(xué)習(xí)理論的同時可以通過交互式重現(xiàn)示例,還可以通過Python會話控制臺,嘗試修改算法和理論、探索經(jīng)驗性問題和理論性問題。與自然語言處理任務(wù)相關(guān)的NLTK模塊主要有語料庫模塊、字符串處理模塊、搭配模塊、詞性標(biāo)注模塊、分類模塊、分塊模塊、解析模塊、語義解釋模塊、指標(biāo)測評模塊、概率與估計模塊和應(yīng)用模塊等。課程中的章節(jié)和實踐練習(xí)與NLTK緊密結(jié)合,為學(xué)生提供一個實用的自然語言處理入門指南[8]。
如何提升自然語言處理的教學(xué)效果,使學(xué)生能夠掌握基本數(shù)據(jù)分析工具,并能應(yīng)用這些工具分析和解決具體的應(yīng)用問題;如何使課程教學(xué)內(nèi)容與當(dāng)前自然語言處理技術(shù)的發(fā)展與應(yīng)用水平保持一致,主流技術(shù)能體現(xiàn)在課程教學(xué)中,教學(xué)內(nèi)容不落伍等。針對這些問題,上海理工大學(xué)智能科學(xué)與技術(shù)本科專業(yè)的自然語言處理教學(xué)和實踐,與人工智能技術(shù)發(fā)展、大學(xué)生創(chuàng)新實踐等緊密聯(lián)系,從教學(xué)內(nèi)容、理論與實驗內(nèi)容的安排上進(jìn)行了分析和探索。
通過該課程的學(xué)習(xí),學(xué)生掌握自然語言處理基本過程、原理和框架結(jié)構(gòu),能使用和編寫簡單程序分析和處理語言數(shù)據(jù)、理解NLP與語言學(xué)的關(guān)鍵概念是怎樣用來描述和分析語言、了解數(shù)據(jù)結(jié)構(gòu)和算法在NLP種的應(yīng)用以及語言數(shù)據(jù)如何存儲為標(biāo)準(zhǔn)格式等,很好地提升了學(xué)生的專業(yè)能力[9]。智能專業(yè)學(xué)生近兩年多次在大學(xué)生創(chuàng)新項目(如基于深度學(xué)習(xí)的文字轉(zhuǎn)換圖像技術(shù)和各種智能設(shè)計比賽)獲得佳績,2017年摘取了“華為杯”中國大學(xué)生智能設(shè)計競賽的全國二等獎和華為專項獎。
實踐證明,該課程的教學(xué)與實踐培養(yǎng)了本科學(xué)生自然語言處理系統(tǒng)設(shè)計和開發(fā)的能力,為以后綜合運用知識解決實際問題奠定了基礎(chǔ),符合并達(dá)到了應(yīng)用型智能科學(xué)與技術(shù)專業(yè)人才的培養(yǎng)目標(biāo)。
參考文獻(xiàn):
[1]張昊, 李擎. 談智能科學(xué)與技術(shù)專業(yè)及相關(guān)學(xué)科的發(fā)展[J]. 計算機(jī)教育, 2013(19): 16-18.
[2]孫紅, 蔣念平, 陳瑋,等. 智能科學(xué)與技術(shù)專業(yè)理論教學(xué)與工程實踐的融合[J]. 計算機(jī)教育, 2012(18): 17-21.
[3]Bird S, Ewan K, Loper E.Python自然語言處理[M]. 陳濤, 張旭, 崔楊, 等, 譯. 北京: 人民郵電出版社, 2014.
[4]Bird S, Ewan K, Loper E. Natural Language Processing with Python[M]. 南京: 東南大學(xué)出版社, 2010.
[5]Lutz M .Learning Python[M]. 南京: 東南大學(xué)出版社, 2014.
[6]Lutz M .Python編程[M]. 鄒曉, 瞿喬, 任發(fā)科, 等, 譯. 北京: 中國電力出版社, 2015.
[7]Hetland M L. Python基礎(chǔ)教程[M].司維, 曾軍崴, 譚穎華, 譯. 北京: 人民郵電出版社, 2014.
[8]王萬森. 適應(yīng)智能化應(yīng)用發(fā)展趨勢, 培養(yǎng)創(chuàng)新型智能科技人才[J]. 計算機(jī)教育, 2013(19): 1.
[9]張俊, 陳飛, 馮士剛. 大連海事大學(xué)“智能科學(xué)與技術(shù)”本科專業(yè)建設(shè)實踐[J]. 計算機(jī)教育, 2012(18): 22-27.