網(wǎng)上有很多關(guān)于多語言pos機(jī),文本預(yù)處理;語言模型;循環(huán)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)的知識,也有很多人為大家解答關(guān)于多語言pos機(jī)的問題,今天pos機(jī)之家(www.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
多語言pos機(jī)
文本預(yù)處理1.1 讀文本、文本預(yù)處理、特征提取和建模的基本過程
收集數(shù)據(jù)
總所周知,數(shù)據(jù)挖掘模型中非常重要的部分是訓(xùn)練模型,訓(xùn)練集與測試集便是整個數(shù)據(jù)挖掘過程中花費(fèi)時(shí)間最多的過程。數(shù)據(jù)集通過有如下的一些途徑獲得:
經(jīng)典數(shù)據(jù)集:Python NLTK 便提供了非常多經(jīng)典的數(shù)據(jù)集。很多數(shù)據(jù)集都是手工標(biāo)注而成,所以使用的時(shí)候不得不感嘆工程的浩大。例如NLP中使用的Penn TreeBank,有興趣的同學(xué)可以看看他們的論文《Building a Large Annotated Corpus of English: The Penn TreeBank》,那簡直就是一部辛酸史?。?/p>
從網(wǎng)頁上抓取:直接動手寫一個爬蟲爬取特定的網(wǎng)頁不難,通過正則表達(dá)式就能夠?qū)⒂行У膬?nèi)容提取出來;當(dāng)然,發(fā)揚(yáng)拿來主義精神的話,我們可以使用Python中一些優(yōu)秀的庫,比如scrapy,beautifulsoup 等等。
從日志、已有文件中分析:如果是海量數(shù)據(jù)的話可以使用hadoop這樣的系統(tǒng)。結(jié)合傳統(tǒng)SQL中的一些特殊功能,例如Partition,有時(shí)會有不錯的效果,不過最多壓縮空間、縮減特征再用SQL處理。
其他網(wǎng)絡(luò)數(shù)據(jù)集:Stanford Large Network Dataset Collectionm,100+ Interesting Data Sets for Statistics
預(yù)處理
如果是網(wǎng)頁內(nèi)容,首先需要去掉Html Tag,lxml和html5lib是比較有名的Python庫,beautifulsoup也對他們做了一層封裝。不過別忘了,Python本身也自帶了sgmllib這樣的基本可擴(kuò)展的解析器。如果是有特別的處理,其實(shí)正則表達(dá)式也是不錯的選擇。
將文檔分割成句子(可選)。很多時(shí)候我們采用的是詞袋模型(bag of words),所以是否分割成句子也無所謂。比較簡單的方法就是Python NLTK中的sent_tokenize()函數(shù),用的是punkt算法。
將句子分割成詞。首先用正則表達(dá)式可以自己完成;如果要利用已有工具,Python NLTK中的word_tokenize(),這個方式就是前文提到的Penn TreeBank語料庫所使用的分詞方法。聽起來是不是很高大上,我是不會告訴你其實(shí)它也是正則表達(dá)式實(shí)現(xiàn)的,想知道具體實(shí)現(xiàn),戳這里。分詞其實(shí)主要干了這么幾個事:1)將’分開. don't -> do n't, they'll -> they 'll; 2)將大部分標(biāo)點(diǎn)當(dāng)作單獨(dú)的一個詞; 3)將后一位是逗號或者引號的詞分開; 4)單獨(dú)出現(xiàn)在一行的句號分開。中文分詞區(qū)別比較大,可以采用斯坦?;蛘逫CTCLAS(中科院背景)的方案。
拼寫錯誤糾正。推薦pyenchant,非常喜歡,因?yàn)楹啙嵉剿木湔Z句就能完成。Windows 8中操作系統(tǒng)也直接提供了拼寫檢查的COM端口,不過就得多花時(shí)間研究啦。
POS Tagging(根據(jù)實(shí)際應(yīng)用)。還是Nltk,首頁就有介紹;斯坦福也提供了這類工具。這一塊屬于NLP的范疇,還是Parsing等應(yīng)用,要了解NLP原理推薦Coursera上一門不錯的課程N(yùn)atural Language Processing
去掉標(biāo)點(diǎn)。正則表達(dá)式即可,有的時(shí)間非常短的單詞也可以一起去掉,len<3的常見的選擇
去掉非英文字符的詞(根據(jù)實(shí)際應(yīng)用決定)。
轉(zhuǎn)換成小寫。
去掉停用詞。就是在各種句子中都經(jīng)常出現(xiàn)的一些詞,I、and什么的。NLTK有一個Stopwords。Matthew L. Jockers提供了一份比機(jī)器學(xué)習(xí)和自然語言處理中常用的停詞表更長的停詞表。什么?你問我停用詞怎么找到的,我想大概是IDF這樣的算法吧。
詞型轉(zhuǎn)換。簡單來講,我們希望do、did、done都能統(tǒng)一的返回do。第一種方法叫stem,Porter是比較常見的一種基于規(guī)則的算法,網(wǎng)頁有snowball工具,也是它的論文。Porter的結(jié)果差強(qiáng)人意,單詞末尾有e、y的,基本上stem之后都不間了,例如replace->replac;末尾有重復(fù)單詞的,基本只剩一個了,例如ill->il。NLTK中也有Stem庫,算法應(yīng)該是類似的。第二種方法叫l(wèi)emmatization,就是基于詞典做詞型轉(zhuǎn)換,NLTK的Stem庫中便有WordNetLemmatizer可以使用。
去掉長度過小的詞(可選)。如果之前做了,這里要再做一次,因?yàn)閟tem會改變詞型。
重新去停用詞。理由同上。
特征提取:
1、TF-IDF:
2、詞頻方法(Word Frequency):
3、文檔頻次方法(Document Frequency):
4、互信息(Mutual Information):
5、期望交叉熵(Expected Cross Entropy):
6、二次信息熵(QEMI):
7、信息增益方法(Information Gain):
8、x2統(tǒng)計(jì)量方法:
9、文本證據(jù)權(quán)(The Weight of Evidence forText):
10、優(yōu)勢率(Odds Ratio):
11、遺傳算法(Genetic Algorithm, GA):
12、主成分分析法(Principal Component Analysis,PCA):
13、模擬退火算法(Simulating Anneal,SA):
14、N—Gram算法
文本建模:
LDA、pLSA、LSA
2.1HMM隱馬爾可夫模型的參數(shù)估計(jì)方法
隱馬爾可夫模型的學(xué)習(xí),根據(jù)訓(xùn)練數(shù)據(jù)是包括觀測序列和對應(yīng)的狀態(tài)序列還是只有觀測序列,可以分別由監(jiān)督學(xué)習(xí)與非監(jiān)督學(xué)習(xí)實(shí)現(xiàn)。
監(jiān)督學(xué)習(xí)是由已知數(shù)據(jù)進(jìn)行極大似然最大化求解
非監(jiān)督學(xué)習(xí)是采用EM算法,EM算法是用于含有隱向量的模型中,進(jìn)行參數(shù)學(xué)習(xí)的迭代算法
參考資料:https://mumaxu.github.io/2018/12/20/隱馬爾科夫模型/
以前寫過:https://mp.weixin.qq.com/s/qrozPFFqOM_I8IsEWgcl0w
筆記:
定義模型
我們使用Pytorch中的`nn.RNN`來構(gòu)造循環(huán)神經(jīng)網(wǎng)絡(luò)。在本節(jié)中,我們主要關(guān)注`nn.RNN`的以下幾個構(gòu)造函數(shù)參數(shù):
* `input_size` - The number of expected features in the input x
* `hidden_size` – The number of features in the hidden state h
* `nonlinearity` – The non-linearity to use. Can be either 'tanh' or 'relu'. Default: 'tanh'
* `batch_first` – If True, then the input and output tensors are provided as (batch_size, num_steps, input_size). Default: False
這里的`batch_first`決定了輸入的形狀,我們使用默認(rèn)的參數(shù)`False`,對應(yīng)的輸入形狀是 (num_steps, batch_size, input_size)。
`forward`函數(shù)的參數(shù)為:
* `input` of shape (num_steps, batch_size, input_size): tensor containing the features of the input sequence.
* `h_0` of shape (num_layers * num_directions, batch_size, hidden_size): tensor containing the initial hidden state for each element in the batch. Defaults to zero if not provided. If the RNN is bidirectional, num_directions should be 2, else it should be 1.
`forward`函數(shù)的返回值是:
* `output` of shape (num_steps, batch_size, num_directions * hidden_size): tensor containing the output features (h_t) from the last layer of the RNN, for each t.
* `h_n` of shape (num_layers * num_directions, batch_size, hidden_size): tensor containing the hidden state for t = num_steps.
以上就是關(guān)于多語言pos機(jī),文本預(yù)處理;語言模型;循環(huán)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)的知識,后面我們會繼續(xù)為大家整理關(guān)于多語言pos機(jī)的知識,希望能夠幫助到大家!
