使用pynlpl庫的文本統計分析
介紹
文本的統計分析是文本預處理的重要步驟之一。它可以幫助我們以一種深刻的數學方式理解文本數據。這種類型的分析可以幫助我們理解隱藏的模式,以及句子中特定單詞的重量,總體上有助於構建良好的語言模型。 Pynlpl或我們稱其為菠蘿庫,是文本統計分析的最佳Python庫之一。該庫也可用於其他任務,例如清潔和分析文本,並提供文本預處理功能,例如Tokenizers,N-gram提取器等。此外,Pynlpl可用於構建簡單的語言模型。
在此博客中,您將了解如何使用Pynlpl執行文本分析。我們將首先了解在系統上安裝此庫的所有方法。接下來,我們將使用PYNLPL庫理解一詞共發生矩陣及其實現。之後,我們將學習如何創建頻率列表以識別最重複的單詞。接下來,我們將執行文本分佈分析,以衡量兩個文本文檔或字符串之間的相似性。最後,我們將使用此庫理解併計算Leveshtein的距離。您可以獨自關注並編碼,也可以單擊此鏈接中的“複製和編輯”按鈕即可執行所有程序。
學習目標
- 了解如何通過所有可用方法詳細安裝此庫。
- 了解如何創建一個術語共發生矩陣來分析單詞關係。
- 學會執行常用任務,例如生成頻率列表和計算Levenshtein距離。
- 學會執行高級任務,例如進行文本分配分析和衡量文檔相似性。
本文作為數據科學博客馬拉鬆的一部分發表。
目錄
- 如何安裝pynlpl?
- 如何使用pynlpl進行文本分析?
- 術語共發生矩陣
- 頻率列表
- 文本分配分析
- Levenshtein距離
- 測量文件相似性
- 常見問題
如何安裝pynlpl?
我們可以以兩種方式安裝此庫,首先使用PYPI,然後使用GitHub安裝。
通過PYPI
使用pypi粘貼在您的終端中安裝下面的命令。
PIP安裝pynlpl
如果您使用的是Jupyter筆記本,Kaggle Notebook或Google Colab之類的筆記本,請添加“!”在上述命令之前。
通過github
要使用GitHub安裝此庫,請使用以下命令將官方Pynlpl存儲庫克隆到您的系統中。
git克隆https://github.com/proycon/pynlpl.git
然後使用“ CD”將終端的目錄更改為此文件夾,然後將以下命令粘貼到安裝庫。
python3設置。 py安裝
如何使用pynlpl進行文本分析?
現在讓我們探討如何使用Pynlpl進行文本分析。
術語共發生矩陣
術語共發生矩陣(TCM)是一種統計方法,可以識別單詞與文本中另一個特定單詞共同相關的頻率。該矩陣有助於我們了解單詞之間的關係,並可以揭示有用的隱藏模式。它通常用於構建文本摘要中,因為它提供了可以幫助產生簡潔摘要的單詞之間的關係。現在,讓我們看看如何使用Pynlpl庫構建此矩陣。
我們將首先從pynlpl.Statistics導入頻列函數,該功能用於計算在文本中重複一個單詞的次數。我們將在以後的部分中更詳細地探討這一點。此外,我們將從集合模塊中導入默認方法。接下來,我們將創建一個名為create_cooccurrence_matrix的函數,該函數獲取文本輸入和窗口大小,並返回矩陣。在此功能中,我們將首先將文本分為單個單詞,並使用DefaultDict創建一個共發生矩陣。對於文本中的每個單詞,我們將在指定的窗口大小中識別其上下文單詞,並更新共發生矩陣。最後,我們將打印矩陣並顯示每個項的頻率。
從pynlpl.Statistics導入頻列表 從集合導入違約 def create_cooccurrence_matrix(text,window_size = 2): 單詞= text.split() COOCCURRENCE_MATRIX = DEFAULTDICT(fryserlist) 對於我,列舉中的單詞(單詞): start = max(i -window_size,0) end = min(i window_size 1,len(單詞)) context =單詞[start:i]單詞[i 1:end] 對於上下文中的Context_word: cooccurrence_matrix [word.lower()]。 count(context_word.lower()) 返回Cooccurrence_matrix text =“你好,這是分析性的vidhya,到目前為止,您正在做得很好。探索數據科學主題。分析Vidhya是學習數據科學和機器學習的絕佳平台。” #創建術語共發生矩陣 Cooccurrence_matrix = create_cooccurrence_matrix(text) #打印一詞共發生矩陣 打印(“術語共發生矩陣:”) 對於術語,context_freq_list in Cooccurrence_matrix.items(): 打印(f“ {term}:{dict(context_freq_list)}”)
輸出:
頻率列表
頻率列表將包含在文檔或段落中重複特定單詞的次數。這是一個有用的功能,可以理解整個文檔的主要主題和上下文。我們通常在語言學,信息檢索和文本挖掘等領域中使用頻率列表。例如,搜索引擎使用頻率列表來對網頁進行排名。我們還可以將其用作營銷策略來分析產品評論並了解產品的主要公眾情感。
現在,讓我們看看如何使用Pynlpl庫創建此頻率列表。我們將首先從pynlpl.statistics導入頻列函數。然後,我們將將示例文本帶入變量中,然後將整個文本分為單個單詞。然後,我們將將此“單詞”變量傳遞到頻列函數中。最後,我們將遍歷頻率列表中的項目,並打印每個單詞及其相應的頻率。
從pynlpl.Statistics導入頻列表 text =“你好,這是分析性的vidhya,到目前為止,您正在做得很好。探索數據科學主題。分析Vidhya是學習數據科學和機器學習的絕佳平台。” 單詞= text.lower()。 split() freq_list = firenserlist(單詞) 對於Word,freq_list.items()中的freq: print(f“ {word}:{freq}”)
輸出:
文本分配分析
在文本分佈分析中,我們計算句子中單詞的頻率和概率分佈,以了解構成句子上下文的哪個單詞。通過計算單詞頻率的分佈,我們可以識別最常見的單詞及其統計屬性,例如熵,困惑,模式和最大熵。讓我們一一了解這些屬性:
- 熵:熵是分佈中隨機性的度量。在文本數據方面,較高的熵意味著文本具有廣泛的詞彙範圍,並且單詞不再重複。
- 困惑:困惑是語言模型在樣本數據上的預測程度的度量。如果困惑性較低,則文本遵循可預測的模式。
- 模式:由於我們從小就學到了這個學期,因此它告訴我們文本中最重複的單詞。
- 最大熵:此屬性告訴我們文本可以擁有的最大熵。這意味著它提供了一個參考點來比較分佈的實際熵。
我們還可以計算特定單詞的信息內容,這意味著我們可以計算單詞提供的信息量。
使用pynlpl實施
現在,讓我們看看如何使用pynlpl實施所有這些。
我們將從pynlpl.Statistic模塊和數學模塊中導入分佈和頻列函數。接下來,我們將創建一個示例文本,併計算該文本中每個單詞的頻率。為此,我們將遵循與上面相同的步驟。然後,我們將通過傳遞頻率列表來創建分佈函數的對象。然後,我們將通過循環瀏覽分佈變量的項目來顯示每個單詞的分佈。要計算熵,我們將調用分佈。 entropy()函數。
要計算困惑,我們將調用分佈。 perplexity()。對於模式,我們將調用Distributs.mode()。為了計算最大熵,我們將調用分佈。 maxentRopy()。最後,要獲取特定單詞的信息內容,我們將調用分佈。信息(word)。在下面的示例中,我們將將模式單詞作為參數傳遞給此函數。
導入數學 從pynlpl.Statistics進口分佈,頻率清單 text =“你好,這是分析性的vidhya,到目前為止,您正在做得很好。探索數據科學主題。分析Vidhya是學習數據科學和機器學習的絕佳平台。” #計數單詞頻率 單詞= text.lower()。 split() freq_list = firenserlist(單詞) word_counts = dict(freq_list.items()) #從單詞頻率創建分發對象 分銷=分佈(Word_counts) #顯示分佈 打印(“發行:”) 對於單詞,概率分配。 ITEMS(): print(f“ {word}:{prob:.4f}”) #各種統計 打印(“ \ nstatistics:”) print(f“熵:{distribal.entropy():。4f}”) print(f“困惑:{distribut.perplexity():。4f}”) print(f“模式:{distributs.mode()}”) 打印(f“最大熵:{Distribal.maxentropy():。4f}”) #“模式”單詞的信息內容 Word = Distribut.Mode() 信息_content =發行。 print(f“ {word}'的信息內容:{inovery_content:.4f}”)
輸出:
Levenshtein距離
Levenshtein距離是兩個單詞之間差異的度量。它計算兩個單詞相同需要進行多少個單字符更改。它根據單詞中字符的插入,刪除或替換來計算。此距離度量通常用於檢查拼寫,DNA序列分析和自然語言處理任務,例如文本相似性,我們將在下一節中實現,並且可以用於構建pla竊檢測器。通過計算Levenshtein的距離,我們可以理解兩個單詞之間的關係,我們可以分辨兩個單詞是否相似。如果Levenshtein的距離非常小,那麼這些單詞可能具有相同的含義或上下文,如果它非常高,則意味著它們完全不同。
為了計算此距離,我們將首先從pynlpl.Statistic模塊導入Levenshtein函數。然後,我們將定義兩個單詞:“分析”和“分析”。接下來,我們將將這些單詞傳遞到Levenshtein函數中,該功能將返回距離值。如您在輸出中所見,這兩個單詞之間的Levenshtein距離是2,這意味著將“分析”轉換為“分析”僅需兩個單字符編輯。第一個編輯是將字符“ t ”用“分析”中的“ s ”代替,第二個編輯是在“分析”中刪除index 8的字符“ c ”。
從Pynlpl.Statistics進口Levenshtein Word1 =“分析” Word2 =“分析” 距離= Levenshtein(Word1,Word2) print(f“'{word1}'和'{word2}':{distand}”之間的levenshtein距離
輸出:
測量文件相似性
在許多應用程序中衡量如何相似的兩個文檔或句子可以有用。它使我們能夠了解這兩個文檔的密切相關。該技術用於許多應用程序,例如竊棋子檢查器,代碼差異檢查器等。通過分析兩個文檔的相似之處,我們可以識別副本。這也可以在推薦系統中使用,其中向用戶A顯示的搜索結果可以向輸入相同查詢的用戶B顯示。
現在,為了實施此功能,我們將使用餘弦相似性度量。首先,我們將導入兩個函數:從pynlpl庫中的頻列和數學模塊的SQRT。現在,我們將在兩個變量中添加兩個字符串,代替僅字符串,我們也可以打開兩個文本文檔。接下來,我們將通過將它們傳遞到我們之前導入的頻列函數來創建這些字符串的頻率列表。然後,我們將編寫一個名為Cosine_simarlity的函數,其中我們將通過這兩個頻率列表作為輸入。在此功能中,我們將首先從頻率列表中創建向量,然後計算這些向量之間的角度的餘弦,從而提供其相似性的度量。最後,我們將調用該功能並打印結果。
從pynlpl.Statistics導入頻列表 從數學導入sqrt doc1 =“ Analytics Vidhya為數據科學和機器學習提供了寶貴的見解和教程。” doc2 =“如果您想要有關數據科學和機器學習的教程,請查看分析Vidhya。” #為兩個文檔創建頻列對象 FREQ_LIST1 = fircellist(doc1.lower()。split()) FREQ_LIST2 = fircellist(doc2.lower()。split()) def cosine_simurility(freq_list1,freq_list2): vec1 = {word:freq_list1 [word] for Word,_ in freq_list1} vec2 = {word:freq_list2 [word] for Word,_ in freq_list2} 交點= set(vec1.keys())&set(vec2.keys()) 分子= sum(vec1 [word] * vec2 [word] for introsection中的單詞) sum1 = sum(vec1 [word] ** 2 for vec1.keys()中的單詞) sum2 = sum(vec2 [word] ** 2 for vec2.keys()中的單詞) 分母= sqrt(sum1) * sqrt(sum2) 如果不是分母: 返回0.0 返回float(分子) /分母 #計算餘弦相似性 相似性= cosine_simurarity(freq_list1,freq_list2) 打印(f“餘弦相似性:{相似:.4f}”)
輸出:
結論
Pynlpl是一個強大的庫,我們可以執行文本統計分析。不僅文本分析,我們還可以將此庫用於某些文本預處理技術,例如令牌化,詞幹,n-gram提取,甚至構建一些簡單的語言模型。在此博客中,我們首先了解了安裝此庫的所有方法,然後我們使用該庫執行各種任務,例如實現術語共存矩陣,創建頻率列表以識別常見單詞,執行文本分佈分析,並了解如何計算LevenShtein距離,併計算文檔相似性。這些技術中的每一個都可以用來從我們的文本數據中提取有價值的見解,使其成為有價值的庫。下次您進行文本分析時,請考慮嘗試Pynlpl(菠蘿)庫。
關鍵要點
- Pynlpl(菠蘿)庫是文本統計分析的最佳庫之一。
- “共存在矩陣”一詞有助於我們了解單詞之間的關係,並且在構建摘要中可能有用。
- 頻率列表可用於了解文本或文檔的主要主題。
- 文本分配分析和Levenshtein距離可以幫助我們了解文本相似性。
- 我們還可以使用PYNLPL庫進行文本預處理,而不僅僅是用於文本統計分析。
常見問題
Q1。什麼是pynlpl?A. pynlpl,也稱為菠蘿,是一個用於文本統計分析和文本預處理的Python庫。
Q2。衡量文件相似性有什麼好處?答:這項技術使我們能夠衡量兩個文檔或文本的相似性,並且可以在竊式檢查器,代碼差檢查器等中使用。
Q3。術語共發生矩陣使用了什麼?答:術語共發生矩陣可用於識別文檔中兩個單詞共發生的頻率。
Q4。 Levenshtein距離如何有用?答:我們可以使用Levenshtein距離來找到兩個單詞之間的差異,這對於構建咒語檢查器很有用。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
以上是使用pynlpl庫的文本統計分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本文回顧了AI最高的藝術生成器,討論了他們的功能,對創意項目的適用性和價值。它重點介紹了Midjourney是專業人士的最佳價值,並建議使用Dall-E 2進行高質量的可定製藝術。

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

本文比較了諸如Chatgpt,Gemini和Claude之類的頂級AI聊天機器人,重點介紹了其獨特功能,自定義選項以及自然語言處理和可靠性的性能。

Chatgpt 4當前可用並廣泛使用,與諸如ChatGpt 3.5(例如ChatGpt 3.5)相比,在理解上下文和產生連貫的響應方面取得了重大改進。未來的發展可能包括更多個性化的間

文章討論了Grammarly,Jasper,Copy.ai,Writesonic和Rytr等AI最高的寫作助手,重點介紹了其獨特的內容創建功能。它認為Jasper在SEO優化方面表現出色,而AI工具有助於保持音調的組成

2024年見證了從簡單地使用LLM進行內容生成的轉變,轉變為了解其內部工作。 這種探索導致了AI代理的發現 - 自主系統處理任務和最少人工干預的決策。 Buildin

本文評論了Google Cloud,Amazon Polly,Microsoft Azure,IBM Watson和Discript等高級AI語音生成器,重點介紹其功能,語音質量和滿足不同需求的適用性。

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變
