❶ 如何用 python 中的 NLTK 對中文進行分析和處理
我感覺用nltk 處理中文是完全可用的。其重點在於中文分詞和文本表達的形式。
中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度一般是詞,所以必須要先對文本進行分詞然後再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。
中文分詞之後,文本就是一個由每個片語成的長數組:[word1, word2, word3…… wordn]。之後就可以使用nltk 裡面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙片語的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。
❷ 如何用 Python 中的 NLTK 對中文進行分析和處理
中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度一般是詞,所以必須要先對文本進行分詞然後再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。
中文分詞之後,文本就是一個由每個片語成的長數組:[word1, word2, word3…… wordn]。之後就可以使用nltk 裡面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙片語的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。
再之後就可以用這些來計算文本詞語的信息熵、互信息等。
再之後可以用這些來選擇機器學習的特徵,構建分類器,對文本進行分類(商品評論是由多個獨立評論組成的多維數組,網上有很多情感分類的實現例子用的就是nltk 中的商品評論語料庫,不過是英文的。但整個思想是可以一致的)。
另外還有一個困擾很多人的Python 中文編碼問題。多次失敗後我總結出一些經驗。
Python 解決中文編碼問題基本可以用以下邏輯:
utf8(輸入) ——> unicode(處理) ——> (輸出)utf8
Python 裡面處理的字元都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什麼編碼)解碼為(decode)unicode編碼,然後輸出時再編碼(encode)成所需編碼。
由於處理的一般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然後使用Python 處理的時候解碼為unicode(sometexts.decode('utf8')),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。
❸ 如何用Python做情感分析
可以使用snownlp包,也可以用nltk 和 scikit-learn 結合,或者自己寫演算法實現。
簡單話就是情感詞典的匹配,想提高效果的需要考慮特徵之間的搭配,語法順序等,可以查詢搜索相關的入門例子和演算法詳細了解。
❹ 怎樣用python處理文本情感分析
Python 有良好的程序包可以進行情感分類,那就是Python 自然語言處理包,Natural Language Toolkit ,簡稱NLTK 。NLTK 當然不只是處理情感分析,NLTK 有著整套自然語言處理的工具,從分詞到實體識別,從情感分類到句法分析,完整而豐富,功能強大。
❺ 如何用 Python 中的 NLTK 對中文進行分析和處理
一、NLTK進行分詞
用到的函數:
nltk.sent_tokenize(text) #對文本按照句子進行分割
nltk.word_tokenize(sent) #對句子進行分詞
二、NLTK進行詞性標注
用到的函數:
nltk.pos_tag(tokens)#tokens是句子分詞後的結果,同樣是句子級的標注
三、NLTK進行命名實體識別(NER)
用到的函數:
nltk.ne_chunk(tags)#tags是句子詞性標注後的結果,同樣是句子級
上例中,有兩個命名實體,一個是Xi,這個應該是PER,被錯誤識別為GPE了; 另一個事China,被正確識別為GPE。
四、句法分析
nltk沒有好的parser,推薦使用stanfordparser
但是nltk有很好的樹類,該類用list實現
可以利用stanfordparser的輸出構建一棵python的句法樹
❻ Python SnowNLP情感分析實踐與優化總結
由於語料缺乏,前期若使用到情感分析,建議暫時使用SnowNLP(此模塊主要使用淘寶評論語料)做情感挖掘,但不僅僅為單純調用,需要優化,下面是一些實踐思考:
可在此基礎上優化,比如文本需要特別處理,除了平常的去停用詞外,還可以需要對輸入的文本結合詞性等進行處理。
下面是一些常識:
一)無情感的詞語(如去停用詞,去掉語氣詞,無詞性標簽的詞語)
二)對於文本過長,則可以考慮提取關鍵詞或抽取文本摘要後再提取關鍵詞
對於後者實踐結果差異明顯:
以"發布了頭條文章: 《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯 "為例子, 顯然該文本為「積極****」文本。
1)s = SnowNLP("發布了頭條文章:《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯")
得分為0.5,明顯不符合
2)s = SnowNLP(「 」.join(jieba.analyse.textrank("發布了頭條文章:《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯")))
而對於文本特別長的,則可以先抽取摘要,再對摘要提取關鍵詞。
這主要由於此SnowNLP主要用貝葉斯機器學習方法進行訓練文本,機器學習在語料覆蓋上不夠,特徵上工程處理不當會減分,也沒考慮語義等。
為何要考慮語義層面:
以「 蘇寧易購,是誰給你們下架OV的勇氣****」 中的「 下架」其實才是中心詞(為表達憤怒的文本),但「 勇氣 」為下架的賓語(其為積極的文本),此句應該結果小於0.5,但實際為0.88,去掉「蘇寧易購」則為0.6>