當前位置:首頁 » 編程軟體 » hanlp自然語言編譯包

hanlp自然語言編譯包

發布時間: 2023-03-12 17:01:58

① nlp和python有什麼關系

nlp的很多工具都有python版本
nlp是研究領域,python是語言工具。

② NLP自然語言處理

羅素悖論:由所有不包含自身的集合構成的集合

例子:理發師稱只給那些不給自己理發的人理發。

基於集合論,理發師無論給自己理發還是不給自己理發都是矛盾的。

因此集合論不是完備的。 即使後面馮羅伊德等科學家提出了各種假定條件。

由於上述的原因,集合率無法很好的描述自然語言,科學家發現通過概率模型可以更好的描述自然語言。

深度學習來處理自然語言屬於概率模型

證明最小點位於坐標軸上

h = f+c|x|

由於在x = 0處不可導

h-left'(0)*h-right'(0) = (f'+c)*(f'-c)

那麼如果c>|f'(0)|可得,h在0處左右導數異號

0是最值。

那麼在損失函數加入L1正則化後,可以得到某些維度容易為0,從而得到稀疏解

幾乎所有的最優化手段,都將適用凸優化演算法來解決

P(A|B) = P(A and B) / P(B)

if A and B 獨立

=》P(A and B| C) = P(A|C)*P(B|C)

也可以推出

=>A(A|B and C) = P(A|C) (B交C不為空)

拋9次硬幣,硬幣出現正面的概率是0.5,出現k次的概率分布如下如

服從正態分布

x的平均值

E = x*p(x) + ...

x相對於期望的偏離

var = (x-E(x))^2

conv = (x - E(x))*(m - E(m))

描述x,m是否有同分布

按理協方差為0,並不代表x和m沒有關系

例如下圖

如果點的分布對稱的分布,會得到協方差為0,但是其實他們是有關系的。

把每個相關的概率累加,得到聯合概率

P(x1=m1,x2=m2...) = n!*P1 m1/m1!*P2 m2/m2!

T(n) = (n-1)!

T(x)用一條曲線逼近n!,進而可以求得非整數的階乘

由二項式分布推出

P = T(a+b)*x (a-1)*(1-x) (b-1)/(T(a)*T(b))

則正態分布

y為0時,不考慮y『。y為1時,y'越接近1,越小,越靠近0,越大

把D最小化,迫使y'逼近y

對於一個句子,有若干單片語成。例如

C1: The dog laughs.

C2: He laughs.

那麼計算P(C1) = P(The, Dog, laughs)的概率和P(C2) = P(He, laughs)的概率。

根據歷史文本的統計學習。

可以得到P(C1)<<P(C2)

P('I love the game') = P('I')*P('love')*P('the')*P('game')

其中P(<work>) = 頻率/總單詞數

計算一篇文章是積極的還是消極的。

P(y|x) = sigmod(wx)

x是文章內每個單詞的頻率

y表示積極和消極情感

其中P(xk|x1, x2,..xk-1) = frequence(x1, x2 ,, xk)/frequence(x1, x2..xk-1)

2-gram模型例子

把多個gram的模型進行線性整合

P(y|x1, x2, .. xn) = P(y)*P(x1, x2, ... xn|y) / P(x1, x2, ... xn)

y代表是否是垃圾郵件

x代表單詞

廣州市長壽路 -》 廣州市長|壽路

廣州市長壽路 -》 廣州市|長壽路

匹配詞袋:廣州市,廣州市長,長壽路

使用最大匹配發,第二個分詞更優

通過統計P(A|B),得出各個option的概率,取最大的概率,則為最後的分詞

word => [0, 0 , ... 1, ... 0]

word => [0, 1, 0, 1, 0, ...]

可以解決詞相似性問題

計算附近詞的頻率

word => [0, 3, 0, 1, 0, ...]

w是附近詞的one-hot encoding

score是詞的one-hot encoding

最後一層通過softmax,取擬合文本

最終中間層則為詞向量

輸入為詞one-hot encoding

輸出為附近此的one-hot encoding

最後通過softmax預測附近詞

最後中間層則為結果詞向量

混合模型是一種統計模型,問題中包含若干個子問題,每個子問題是一個概率分布,那麼總問題就是若干個子問題的組合,也就是若干個子分部的組合,這樣就形成了混合模型。

有紅黑兩種硬幣,把它們放在盒子里,從盒子里隨機抽取一個硬幣並投幣,抽到紅色的概率是p,紅色硬幣正面的概率是q,黑色硬幣正面的概率是m,假設我們沒辦法看到抽取出的硬幣的顏色,只能看到最終是正面或者反面的結果,例如HTTHTTTTHHH (H:正面 T: 反面)。需要估計p,q,m三個參數。

此時可以計算出

通過EM演算法迭代如下:

隨機p q m

迭代以下過程:

計算上面table

p = (aC(正)+cC(反))/total

q = aC(正)/(aC正+cC正)

m = bC(正)/(bC正 + dC正)

假設有上述數據,需要用混合模型來逼近,通過分析,紅色和藍色數據分別為高斯正態分布,N(u, v)

此時可以得到如下表

p = pN紅x/(pN紅x+(1-p)N藍x)

u = pN紅x/n

v = pN紅(x-u)^2/n

詞性轉換概率

詞性到單詞的轉換概率

通過EM遞歸演算法,訓練以上參數,得到隱馬爾可夫模型

PLSA主題模型

只統計詞的頻率,不計算詞的相對位置

計算文檔和單詞頻率的矩陣

進行奇異矩陣分解

得到A矩陣的壓縮U,U中的k則為k個主題

通過分析,LSA得到的主題是跟現實無法關聯,它只是一個量,而沒有明顯的意義。

PLSA為了解決此問題,引入概率模型,先確定主題個數

然後通過構建Doc->topic的概率table,和topic->word的概率table。

然後通過EM模型,得到這兩個table的所有概率值。

進而得到文檔的主題表示

PLSA的缺陷是,對於預測未知的doc,無法計算此文檔的相關概率。隨著doc數量的增加,PLSA模型的參數會線性增加,從而會造成過擬合。

LDA通過引入先驗概率來克服PLSA的問題。

類似於編譯原理的上下文無法句法分析,一顆語法樹

通過對CFG引入概率參數

有了概率,可以計算每顆語法樹的極大似然概率,並取最大概率的樹為最終輸出

上一個狀態中間層的輸出作為下一隱層的輸入

類似於HMM的2-gram模型。t狀態受到t-1時刻輸出的影響,受t-k的輸出的k越大,影響越小

由於RNN幾乎只受到上一時刻的影響,而忽略了久遠信息的影響。從而造成了一定的局限性。

LSTM通過引入長短記憶方法,來維持長記憶的信息。

通過訓練核內的sigmod函數,使得LSTM可以根據不同的句子,有條件的保留和過濾歷史信息,從而達到長記憶的功能。

GRU是LSTM的簡化版,它只需要處理兩個sigmod函數的訓練,而LSTM需要三個sigmod函數的訓練,減少了訓練的參數,加快了訓練的速度,但也損失了一部分模型的復雜,在處理較復雜問題時,沒有LSTM那麼好。

auto-encoder-decoder的特點是輸出的單元數是固定的。對於一般自然語言處理,例如機器翻譯,輸入的單元個數跟輸出單元的個數並不是一一對應的,此時就需要動態的生成輸出單元。Seq2Seq通過動態的輸出結束符,代表是否輸出完成,達到可以動態的根據輸入輸出不同的單元個數。

seq2seq的缺點是,所有的輸入序列都轉化為單一的單元c,導致很多信息都將消失,對於不同的輸出yi,它可能依賴的輸入xj有可能不一樣,此時通過加入注意力模型,通過對xi進行softmax處理,並加入到y權重的訓練中,可以讓不同的y,有不同的x對它進行影響

softmax的輸入為輸入單元x,和上一個輸出單元y,聯合產生softmax的權重,進而對不同的序列,對於同一個x,會有不同的注意力到輸出

q = Wq(x)

k = Wk(x)

v = Wv(x)

x為詞向量

通過訓練,得到權重w,從而學習到這一層的softmax注意力參數

R是前一次encoder的輸出

通過增加w的數量,產生多個z,並進行堆疊,通過前饋網路,最後產生z

在使用self attention處理句子時,是沒有考慮單詞在句子中的位置信息的。為了讓模型可以加入考慮單詞的位置信息,加入了位置編碼的向量

計算如下:

pos為單詞在句子中的位置

i為詞向量的位置

d為句子的長度

位置編碼加上詞向量形成tranformer的輸入

加入了歸一化和殘差網路

最終通過softmax,輸出每個單詞的概率,並最終輸出單詞

③ 用Python實現英文文章難度評級

By Jiaxian Shi

英文文章的難度從直覺上來講可以從以下兩方面來定義:

句子的難易程度可以從句子的長度和復雜性(從句數量,嵌套)方面來考慮。詞彙的難易程度可以從詞彙的長度和使用頻率(專業詞彙,罕見詞彙)方面來考慮。通過查閱維基網路等相關資料,發現目前普遍得到運用的可讀性標准為Flesch–Kincaid可讀性測試指標。Flesch–Kincaid可讀性測試指標由兩個指標構成:Flesch Reading Ease(FRE)和Flesch–Kincaid Grade Level(FKGL)。與我們的直覺一致,兩者都使用了類似的方法:句子長度和詞彙長度(由音節數確定,不單純考慮字母數)。由於兩個指標對句子長度和詞彙長度所採取的權重不同(包括正負號),所以兩個指標的意義相反:FRE數值越高,文章就越簡單,可讀性也越高。而FKGL數值越高,文章就越復雜,文章的可讀性也就越低。

使用Python強大的自然語言處理(NLP)包NLTK,來實現下述3個功能:

其中,斷句使用NLTK提供的非監督學習的預訓練模型tokenizers/punkt/english.pickle,分詞則使用NLTK推薦的word_tokenize函數(使用TreebankWordTokenizer和PunktSentenceTokenizer模塊),分音節則使用NLTK供的SyllableTokenizer模塊。需要注意的是,分詞會將標點符號分為一個單詞,需要手動去除。同時,分音節時會講英語中的連字元「-」分為一個音節,也需要手動去除。另外,文章需要進行預處理,去除回車符和空格,並將非標准標點符號轉換為英文標准標點符號。

統計出句數,詞數和音節數後,即可根據上文提供的公式計算出FRE和FKGL了。本程序使用4段不同類型的英文文章分別計算FRG和FKGL,並使用matplotlib模塊繪制出柱狀圖已做比較。

文章:

比較結果如下圖所示:

可以發現,文章的難度為:兒童文學<偵探小說<雜志文章<學術論文,這與我們的實際感受是一致的。

熱點內容
原神電腦配置怎麼玩不卡 發布:2025-07-20 18:07:06 瀏覽:955
反編譯獲取原代碼 發布:2025-07-20 17:49:43 瀏覽:492
plc編譯怎麼找 發布:2025-07-20 17:48:56 瀏覽:162
無效的宏名稱將編譯啞宏 發布:2025-07-20 17:48:16 瀏覽:155
250萬解壓 發布:2025-07-20 17:44:52 瀏覽:620
騰訊視頻上傳廣告 發布:2025-07-20 17:35:55 瀏覽:406
掘地求升免費腳本 發布:2025-07-20 17:32:06 瀏覽:962
linux設置python環境變數 發布:2025-07-20 17:22:49 瀏覽:242
柱底層加密區 發布:2025-07-20 17:16:20 瀏覽:913
安卓ids是什麼文件 發布:2025-07-20 17:16:14 瀏覽:668