在大規模數據集上應用潛在語義分析的三種方式
本文為 AI 研習社編譯的技術博客,原標題 3 Ways to Apply Latent Semantic Analysis on Large-Corpus Text on macOS Terminal, JupyterLab, and Colab,作者為 Dr. GP Pulipaka。
翻譯 | 張知非 林佳 校對 | 餘杭 整理 | MY
在大規模數據集上利用自然語言處理產生描述發現場景,潛在語義分析會發揮作用。這有很多種不同的方法能在多個層次上執行潛在語義分析,比如文本層次,短語層次和句子層次。最重要的是,語義分析能被概括進辭彙語義學和連詞成段或成句的研究中。辭彙語義學能對辭彙項進行分類和分解,利用辭彙語義結構有不同內容的特點來區分詞的異同。段或句中的一類術語是上位詞,下位詞提供了下位詞實例間關係的含義。下位詞在相似結構中有相似語法或相似拼寫,但卻有不同含義。下位詞間無相互關係。「book」是一個簡單的下位詞,對於有些人而言,是閱讀,或是有著相同拼寫,形式或語法的預訂行為,但含義卻大相徑庭。一詞多義是另一種詞法現象,它是指單個詞能和多個相關聯的理解或是截然不同的意思相聯繫,一詞多義是希臘辭彙,表示有很多種符號。Python 提供了 NLTK 庫,通過將大段文字切成短語或有意義的字元串來實現抽象化文字。處理文字是通過抽象化的方式得到符號,詞形還原是將文字從當前屈折的形式轉變為基本形式。
圖一:詞形還原的代碼片段
圖二:用 Python 對不同數據資源進行自然語言處理
潛在語義分析
在大規模數據集的文本文檔上應用潛在語義分析,是將數學和統計計算方法用在大型文本語料庫中。大多數情況下,潛在語義分析的效果趕超人類水平,而受制於人類主導的重要測試。潛在語義分析的精確度很高,是因為它在網路規模上通讀了機器易讀文檔和文本。潛在語義分析是項應用在奇異值分解和主成分分析的技術(PCA)。文檔能被表達成矩陣 A=Z×Y, 矩陣的行代表集合里的文檔。矩陣 A 代表典型大規模語料庫文本文檔里大量成百上千的行列。應用奇異值分解提出了一系列成為矩陣分解的操作。Python 自然語言處理的 NLTK 包應用一些低秩逼近詞頻矩陣,而後,低秩逼近有助於索引和恢復文檔,這些文檔因聚類大量文字得到潛在語義索引而得名。
線性代數簡述
矩陣 A=Z×Y 包含實數值,使用非負值作為詞頻矩陣。確定矩陣的秩伴隨著矩陣中大量線性獨立的行或列。矩陣 A≤ 的秩。平方式 c×c 代表了對角矩陣,也即非對角線上的值均為零。在測試矩陣時,如果所有的 c 對角矩陣為 1,那麼,矩陣就是被 lc 表示 c 的維度的單位矩陣。對於 Z×Z 的平方矩陣,A 有不包含全部零的向量 k。矩陣分解適用於利用特徵向量分解成矩陣乘積的方陣。這樣可以降低辭彙的維度,從高維到可視化呈現在圖上的二維。利用主成分分析(PCA)和奇異值分解(SVD)的降維技術在自然語言處理上保持了較強的相關性。文檔單詞頻率的 Zipfian 屬性使得確定處於靜態階段辭彙的相似度很難。所以,特徵值分解是奇異值分解的一個副產品,因為文檔的輸入是高度不對稱的。潛在語義分析是一種特殊技術,它在語義空間上對文檔進行解析,並用 NLKT 庫確定多義詞。像類似 punkt 和 wordnet 的資源就必須從 NLTK 庫中下載。
使用 Google Colab notebooks 進行大規模深度學習
圖 3 採用多個 NVIDIA GPU 的深度學習堆棧
在 CPU 上訓練機器學習或者深度學習模型可能需要數個小時之久,並且就編程效率而言,這樣的代價對計算機資源的時間和能源來說可謂是相當昂貴的。出於研究和開發的目的,Google 建造了 Colab Notebook 環境。它完全在雲上運行,無需為每台設備設置額外的硬體或者軟體。它完全等同於 Jupyter notebook,它可以幫助數據科學家們通過存儲在 Google Drive 雲端硬碟上來分享 Colab notebooks,這就像是在協作環境下的一些 Google 表格或文檔。Colab notebook 在程序運行中啟用 GPU 以加速程序的運行時,沒有其他的消耗。不像 Jupyter notebook 那樣可以直接從機器的本地目錄訪問數據,將數據上傳到 Colab 會有一些挑戰。在 Colab 中,從本地文件系統中上傳文件時會有多種文件來源選項,或者也可以安裝一個驅動,如通過 Google 的 drive FUSE wrapper 去載入數據。
圖 4 安裝 Google 的 driver FUSE wrapper
完成完成此步驟後,它會顯示如下日誌並沒有報錯:
圖 5 macOS 上的安裝顯示的安裝日誌
下一步是生成身份驗證令牌,用以驗證 Google Drive 雲端硬碟和 Colab 的 Google 憑據。
圖 6 驗證憑據
如果顯示成功獲取訪問令牌,則 Colab 會準備就緒。
圖 7 驗證訪問令牌
在此階段,當訪問文本文件的內容時,如果驅動尚未安裝, 那麼它將顯示 False。
圖 8 驗證對 Google Drive 雲端硬碟中已上傳的 Colab notebook 文件的訪問
驅動安裝後,Colab 可以訪問 Google Drive 雲端硬碟中的數據集。
圖 9 在此鍵入標題
一旦文件可訪問,Python 就可以像是在 Jupyter 環境中執行一樣執行。Colab notebook 顯示的結果也類似於我們在 Jupyter notebook 中所看到的那樣。
圖 10 程序運行的結果
PyCharm IDE
該程序可在 PyCharm IDE 環境中編譯,並在 PyCharm 上運行,也可以在 OSX 終端中執行。
圖 11 PyCharm IDE 中 Python 自然語言處理中的 LSA 分析
在 OSX 終端中運行的結果
圖 12 在 OSX 終端中運行的結果
獨立運行的計算機中的 Jupyter Notebook
在本地機器上運行潛在語義分析的 Jupyter Notebook 給出了一個相似的輸出:
圖 13 在 Jupyter notebook 上運行潛在語義分析
圖 14 結果
參考文獻
Gorrell, G. (2006). Generalized Hebbian Algorithm for Incremental Singular Value Decomposition in Natural Language Processing. Retrieved from https://www.aclweb.org/anthology/E06-1013
Hardeniya, N. (2016). Natural Language Processing: Python and NLTK . Birmingham, England: Packt Publishing.
Landauer, T. K., Foltz, P. W., Laham, D., & University of Colorado at Boulder (1998). An Introduction to Latent Semantic Analysis. Retrieved from http://lsa.colorado.edu/papers/dp1.LSAintro.pdf
Stackoverflow (2018). Mounting Google Drive on Google Colab. Retrieved from https://stackoverflow.com/questions/50168315/mounting-google-drive-on-google-colab
Stanford University (2009). Matrix decompositions and latent semantic indexing. Retrieved from https://nlp.stanford.edu/IR-book/html/htmledition/matrix-decompositions-and-latent-semantic-indexing-1.html
https://medium.com/datadriveninvestor/3-ways-to-apply-latent-semantic-analysis-on-large-corpus-text-on-macos-terminal-jupyterlab-colab-7b4dc3e1622


※免費資源正式對外開放,快來下載!
※「OpenAI Five」戰勝的秘訣
TAG:AI研習社 |