網上有很多關于pos機語言切換,中文語言處理的必備工具的知識,也有很多人為大家解答關于pos機語言切換的問題,今天pos機之家(www.www690aa.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機語言切換
pos機語言切換
我是@老K玩代碼,專注分享實戰項目和最新行業資訊,已累計分享超1000實戰項目!
前言自然語言處理是當下人工智能最熱的幾個方向之一,很多致力于人工智能的小伙伴都選擇自然語言處理作為自己的研究方向。但對于中文nlp工作來說,由于漢語和英語語法構造上的不同,國際上通用的幾個基礎的nlp庫在漢語處理上的表現并不出眾,而SnowNLP就給中文自然語言處理的研究者一個不一樣的選擇。
SnowNLP是一個基于Python寫就的工具庫,能相當方便處理好中文的文本內容。 SnowNLP的技術框架參考了英語自然語言處理工具庫TextBlob,不過SnowNLP不引用NLTK庫,所有的算法都是isnowfy大神實現的。
接下來就跟隨我一步一步了解這個庫吧!
安裝打開cmd,通過pip命令安裝snownlp工具,具體代碼如下:
pip install snownlp導入庫
通過from...import...語句,把SnowNLP類從snownlp導入到項目中來,具體代碼如下:
from snownlp import SnowNLP中文分詞
通過Character-Based Generatvie Model模型實現中文分詞的功能,模型的具體內容可以參考論文《Which is More Suitable for Chinese Word Segmentation,the Generative Model or the Discriminative One? 》,具體代碼如下:
s = SnowNLP(u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。')words = s.wordsprint(words)
打印結果:
['SnowNLP', '類似', 'NLTK,', '是', '針對', '中文', '處理', '的', '一個', 'Python', '工具', '庫', '。']詞性標注
采用隱馬爾科夫模型實現詞性標注的功能,使用TnT和3-gram,具體可以參考論文《TnT -- A Statistical Part-of-Speech Tagger》,具體代碼如下:
s = SnowNLP(u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。')tags = s.tagsprint(list(tags))
打印結果:
[('SnowNLP', 'Dg'), ('類似', 'v'), ('NLTK,', 'Dg'), ('是', 'v'), ('針對', 'p'), ('中文', 'nz'), ('處理', 'v'), ('的', 'u'), ('一個', 'm'), ('Python', 'q'), ('工具', 'n'), ('庫', 'n'), ('。', 'w')]情感分析
使用通用的情感分析模型實現,不過目前的訓練集來自在線商城平臺的評價,如果需要對特定領域進行情感分析,可以導入數據進行訓練,來提高自己情感分析模型在應用場景下的準確性(自主訓練參見后續模型訓練),具體代碼如下:
s = SnowNLP(u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。')sentiments = s.sentimentsprint(sentiments)
打印結果:
0.8483635366341422
這里表示這段話是積極情緒的概率為84%。一般我們以50%為分界區分積極和消極。
文本分類通過對源碼的閱讀,我們可以看到情感分析模型是通過樸素貝葉斯方法實現的。我們可以調用Bayes接口,通過自己的數據進行訓練、或加載自己的模型,實現自定義的文本分類功能,具體代碼如下:
from snownlp.classification.bayes import Bayescls = Bayes()cls.load(r'需要加載的文件名')c = cls.classify(u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。')
打印結果:
(1, 0.828933234545427)
這里表示該文本被歸到1類的概率為82%
轉換成拼音該功能是通過Trie樹實現的最大匹配,具體代碼如下:
s = SnowNLP(u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。')pin = s.pinyinprint(pin)
打印結果:
['SnowNLP', 'lei', 'si', 'NLTK,', 'shi', 'zhen', 'dui', 'zhong', 'wen', 'chu', 'li', 'de', 'yi', 'ge', 'Python', 'gong', 'ju', 'ku', '。']繁體轉簡體
該功能也是通過Trie樹實現的最大匹配,具體代碼如下:
s = SnowNLP(u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。')han = s.hanprint(han)
打印結果:
SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。文本斷句
可以通過極簡潔的語句實現文本斷句的功能,具體代碼如下:
paragraph = u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。使用簡單、功能強大。'u'可以實現包括中文分詞、詞性標注、情感分析等在內的功能。是中文語言處理研究者不可多得的研究工具。'u'工具庫參考了TextBlob的文檔結構,對新手使用者相當友好...'s = SnowNLP(paragraph)sent = s.sentencesprint(sent)
打印結果:
['SnowNLP類似NLTK', '是針對中文處理的一個Python工具庫', '使用簡單、功能強大', '可以實現包括中文分詞、詞性標注、情感分析等在內的功能', '是中文語言處理研究者不可多得的研究工具', '工具庫參考了TextBlob的文檔結構', '對新手使用者相當友好...']提取文本關鍵詞
通過從google的page-rank模型啟發而來的text-rank模型,實現對文本關鍵詞的判斷和提取,模型的具體細節可以參考論文《TextRank: Bringing Order into Texts》,具體代碼如下:
s = SnowNLP(paragraph)keys = s.keywords(3)print(keys)
打印結果:
['中文', '工具', '標注']
keywords是SnowNLP類下的一個方法,調用時需要輸入的可選參數有2個:
limit: 類型為int,默認值為5,表示提取的關鍵詞數量merge: 類型為boolean,默認值為False,表示是否需要把相關的關鍵詞合并起來提取文本摘要選用的模型為text-rank,詳情可參見提取文本關鍵詞,具體代碼如下:
s = SnowNLP(paragraph)summ = s.summary(2)print(summ)
打印結果:
['是針對中文處理的一個Python工具庫', '可以實現包括中文分詞、詞性標注、情感分析等在內的功能']
summary是SnowNLP類下的一個方法,調用時需要輸入的可選參數有1個:
limit: 類型為int,默認值為5,表示提取的摘要分句數量tf-idftf-idf是一個常見的信息檢索和數據加權的統計模型工具,是通過詞頻(TF)和逆文本頻率(IDF)的比值來判斷字詞在文檔中的重要性。SnowNLP也提供計算tf-idf的工具。要進行tf-idf計算,以及后文中提到的相似度計算,首先要對語句斷句、分詞,具體代碼如下:
splits = [['SnowNLP', '類似', 'NLTK,', '是', '針對', '中文', '處理', '的', '一個', 'Python', '工具', '庫', '。'], ['使用', '簡單', '、', '功能', '強大', '。'], ['可以', '實現', '包括', '中文', '分詞', '、', '詞', '性', '標注', '、', '情感', '分析', '等', '在內', '的', '功能', '。'], ['是', '中文', '語言', '處理', '研究者', '不可', '多', '得', '的', '研究', '工具', '。'], ['工具', '庫', '參考', '了', 'TextBlob', '的', '文', '檔', '結構', ',', '對', '新手', '使用者', '相當', '友好', '...']]s = SnowNLP(splits)
然后,就可以通過相應的熟悉就能獲取到tf和idf的值
tf = s.tfprint(tf)idf = s.idfprint(idf)
打印結果:
[{'SnowNLP': 1, '類似': 1, 'NLTK,': 1, '是': 1, '針對': 1, '中文': 1, '處理': 1, '的': 1, '一個': 1, 'Python': 1, '工具': 1, ...}]{'SnowNLP': 1.0986122886681098, '類似': 1.0986122886681098, 'NLTK,': 1.0986122886681098, '是': 0.33647223662121295, '針對': 1.0986122886681098, '中文': -0.33647223662121295, '處理': 0.33647223662121295, '的': -1.0986122886681098, ...}文本相似度
通過經典檢索算法BM25原理,來實現簡單的文本相似度的判斷和計算。與tf-idf計算要求一樣,輸入的文本語句需要經過預處理,即斷句、分詞的形式,詳見tf-idf部分,實現代碼如下:
s = SnowNLP(splits)sim = s.sim([u'中文', u'語言', u'是', '一個', '研究', '工具', '。'])print(sim)
打印結果:
[-0.334122934736348, -1.4437615292558321, -1.2504480547109145, 0.7841955519453601, -0.30244695426625884]
上述結果表示,“中文語言是一個研究工具。”這句話,與語料中的5個分句的相似度分別為上述結果所展示。
模型訓練該庫可以通過訓練、導入模型,實現定制化的分詞、詞性標注、情感分析等功能,詳見代碼如下:
from snownlp import segseg.train('data.txt')seg.save('seg.marshal')
seg是用以分詞的模型,通過train方法,可以傳入需要的數據語料進行訓練,將訓練后的新模型通過save進行保存。save的文件名以及后綴沒有要求,但表示了保存的文件路徑。用load可以調用保存過的模型。以上邏輯也適用于詞性標注和情感分析的部分
from snownlp import tagtag.train('data.txt')tag.save('tag.marshal')
tag是用以詞性標注的模型,有著和seg一樣的調用方法(train、save、load)以及功能函數(tag和tag_all)
from snownlp import sentimentsentiment.train('neg.txt', 'pos.txt')sentiment.save('sentiment.marshal')
sentiment是用以情感分類的模型,調用train方法需要傳入兩個文檔,分別是表示消極的語料和表示積極的語料。
總結SnowNLP是一個十分出色的庫,并且仍在持續完善中,在完善,自然也就仍有可以優化的地方,老K總結了幾點如下:
目前傳入文本時需要轉碼為unicode編碼,建議后期可以把轉碼的部分寫進SnowNLP;在處理tf-idf和文本相似度任務時,輸入需要分詞斷句,建議也可以把分詞斷句的邏輯寫進代碼;文本分類的功能尚不完善,在完善該功能后,可以優化調用接口,令使用者更便捷的調用和訓練;情感分析的訓練集較單一,可以擴大范圍,提高模型的泛性。 本文是對SnowNLP的分享,github地址請關注后在后臺回復關鍵詞索取。我是@老K玩代碼,專注分享實戰項目和最新行業資訊,已累計分享超過1000實戰項目!
薇信伀從呺 回復/ nlp /,獲得相關學習資源
以上就是關于pos機語言切換,中文語言處理的必備工具的知識,后面我們會繼續為大家整理關于pos機語言切換的知識,希望能夠幫助到大家!
