自然語言處理為AI的子領域,重點在于計算機能夠理解和處理人類語言。
一、一般處理流程
語料獲取 -> 文本預處理 -> 特征工程 -> 特征選擇
1、語料獲取
即需要處理的數據及用于模型訓練的語料。
數據源可能來自網上爬取、資料積累、語料轉換、OCR轉換等,格式可能比較混亂。需要將url、時間、符號等無意義內容去除,留下質量相對較高的非結構化數據。
2、文本預處理
將含雜質、無序、不標準的自然語言文本轉化為規則、易處理、標準的結構化文本。
①處理標點符號
可通過正則判定、現有工具(zhon包)等方式篩選清理標點符號。
②分詞
將連續的自然語言文本,切分成具有語義合理性和完整性的詞匯序列的過程。
一般看來英文較容易可通過空格符號分詞,中文相對復雜,參考結巴分詞、盤古分詞、Ansj等工具。
常見的分詞算法有:基于字符串匹配的分詞方法、基于理解的分詞方法、基于統計的分詞方法和基于規則的分詞方法,每種方法下面對應許多具體的算法。
③詞性標注
為自然語言文本中的每個詞匯賦予一個詞性的過程,如名詞、動詞、副詞等。可以把每個單詞(和它周圍的一些額外的單詞用于上下文)輸入預先訓練的詞性分類模型。
常用隱馬爾科夫模型、N 元模型、決策樹
④stop word
英文中含大量 a、the、and,中文含大量 的、是、了、啊,這些語氣詞、助詞沒有明顯的實際意義,反而容易造成識別偏差,可適當進行過濾。
⑤詞形還原
偏向于英文中,單數/復數,主動/被動,現在進行時/過去時/將來時等,還原為原型。
⑥統計詞頻
因為一些頻率過高/過低的詞是無效的,對模型幫助很小,還會被當做噪聲,做個詞頻統計用于停用詞表。
⑦給單詞賦予id
給每一個單詞一個id,用于構建詞典,并將原來的句子替換成id的表現形式
⑧依存句法分析
通過分析句子中詞與詞之間的依存關系,從而捕捉到詞語的句法結構信息(如主謂、動賓、定中等結構關系),并使用樹狀結構來表示句子的句法結構信息(如主謂賓、定狀補等)。
3、特征工程
做完語料預處理之后,接下來需要考慮如何把分詞之后的字和詞語表示成計算機能夠計算的類型。
如果要計算我們至少需要把中文分詞的字符串轉換成數字,確切的說應該是數學中的向量。有兩種常用的表示模型分別是詞袋模型和詞向量。
①詞向量
詞向量是將字、詞語轉換成向量矩陣的計算模型。目前為止最常用的詞表示方法是 One-hot,這種方法把每個詞表示為一個很長的向量。
②詞袋模型
即不考慮詞語原本在句子中的順序,直接將每一個詞語或者符號統一放置在一個集合(如 list),然后按照計數的方式對出現的次數進行統計。統計詞頻這只是最基本的方式,TF-IDF 是詞袋模型的一個經典用法。
常用的表示模型有:詞袋模型(Bag of Word, BOW),比如:TF-IDF 算法;詞向量,比如 one-hot 算法、word2vec 算法等。
4、特征選擇
在文本挖掘相關問題中,特征工程也是必不可少的。在一個實際問題中,構造好的特征向量,是要選擇合適的、表達能力強的特征。
舉個自然語言處理中的例子來說,我們想衡量like這個詞的極性(正向情感還是負向情感)。我們可以預先挑選一些正向情感的詞,比如good。然后我們算like跟good的PMI,用到點互信息PMI這個指標來衡量兩個事物之間的相關性。
特征選擇是一個很有挑戰的過程,更多的依賴于經驗和專業知識,并且有很多現成的算法來進行特征的選擇。目前,常見的特征選擇方法主要有 DF、 MI、 IG、 CHI、WLLR、WFO 六種。
5、模型訓練
在特征向量選擇好了以后,接下來要做的事情是根據應用需求來訓練模型,我們使用不同的模型,傳統的有監督和無監督等機器學習模型,如 KNN、SVM、Naive Bayes、決策樹、GBDT、K-means 等模型;深度學習模型比如 CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。這些模型在分類、聚類、神經序列、情感分析等應用中都會用到。
當選擇好模型后,則進行模型訓練,其中包括了模型微調等。在模型訓練的過程中要注意由于在訓練集上表現很好,但在測試集上表現很差的過擬合問題以及模型不能很好地擬合數據的欠擬合問題。同時,也要防止出現梯度消失和梯度爆炸問題。
6、模型評估
在機器學習、數據挖掘、推薦系統完成建模之后,需要對模型的效果做評價。模型的評價指標主要有:錯誤率、精準度、準確率、召回率、F1 值、ROC 曲線、AUC 曲線等。
7、投產上線
模型的投產上線方式主要有兩種:一種是線下訓練模型,然后將模型進行線上部署提供服務;另一種是在線訓練模型,在線訓練完成后將模型 pickle 持久化,提供對外服務。
三、NLP應用方向
1、命名實體識別
指識別自然語言文本中具有特定意義的實體,主要包括人名、地名、機構名、時間日期等。
傳統機器學習算法主要有HMM和CRF,深度學習常用QRNN、LSTM,當前主流的是基于bert的NER。
2、情感分析
文本情感分析和觀點挖掘(Sentiment Analysis),又稱意見挖掘(Opinion Mining)是自然語言處理領域的一個重要研究方向。簡單而言,是對帶有情感色彩的主觀性文本進行分析、處理、歸納和推理的過程。
情感分析技術可以分為兩類,一類是基于機器學習的方法,通過大量有標注、無標注的主觀語料,使用統計機器學習算法,通過提取特征,進行文本情感分析。另一類是基于情感詞典的方法,根據情感詞典所提供的詞的情感極性(正向、負向),從而進行不同粒度的(詞語、短語、屬性、句子、篇章)下的文本情感分析。
3、文章標簽
文章標簽是利用機器學習算法,對文章進行文字和語義的分析后,提取出若干個重要的詞或者短語(關鍵短語)。關鍵短語是NLP基礎的算法模塊,有了關鍵短語,能為后續的搜索、推薦等更高級的應用提供有力的抓手。
適用場景:1、個性化推薦:通過對文章的標簽計算,結合用戶畫像,精準的對用戶進行個性化推薦;2、話題聚合:根據文章計算的標簽,聚合相同標簽的文章,便于用戶對同一話題的文章進行全方位的信息閱讀;3、搜索:使用中心詞可以對query進行相似度計算、聚類、改寫等,可以用于搜索相關性計算。
4、案件串并
①信息抽取
運用實體抽取、關系抽取,從案情中抽取關鍵信息,如從警情中可以抽取報警人項目、報警人電話、案發地址等信息
②實體對齊
相同的實體在不同的案情中會有不同的表述,會給串并帶來困難。可針對地址、人名、組織名進行對齊處理。
③文本聚類
對于關鍵片段類信息,無法像實體那樣對齊,需要借助文本聚類技術進行關聯。
④構建圖譜
將信息抽取結果存入圖譜。每個警情id對應一個節點,實體、屬性、關鍵片段作為節點,對齊的實體、同一類的文本存為同一個節點。
除了來自于從警情中抽取的信息,還可以將其他警務系統中存在的結構化數據導入(如來自戶籍信息的人物關系),從而豐富圖譜。
⑤圖譜檢索
完成以上工作,即完成了案件串并的必要基礎建設,接下來通過圖譜的查詢功能自動完成案件的串并。首先需要設定串并的條件,案件串并的條件在警務實戰中已有很多的積累,如“具有相似的作案手段”,又如“相似作案手段,嫌疑人有共同聯系人”,只需要將這些條件用圖譜查詢語言表達出來。