Python文字資料分析與處理
Python文字資料分析與處理(新聞摘要)
分詞
- 使用jieba分詞, 注意lcut只接受字串
過濾停用詞
TF-IDF得到摘要資訊或者使用LDA主題模型
- TF-IDF有兩種
- jieba.analyse.extract_tags(content, topK=20, withWeight=False) # content為string, topK選出20個關鍵字, withWeight: 每一個關鍵詞同等重要
- 使用gensim庫
- from gensim import corpora, models
- dictinary = corpora.Dictionary(word_list) # 為每一個單詞分配一個id, 並記錄每一個單詞的詞頻到dfs屬性中
- corpus = [dictionary.doc2bow(line) for line in word_list] # 得到詞庫, 形式是(token, id)
- corpus.token2id以[token:id, …]返回
- # 將資料處理完之後, 才能使用models進行計算
- lda = models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=20) # corpus指定語料庫, id2word指定字典, id在corpus中, num_toptics指定訓練的主題數
- lda.print_topic(1, 10) # 1為topic的id, 10為topic中關鍵字的個數
- lda.print_topic(3, 10) # 3為返回的topic個數, 10為每一個topic中關鍵字的個數
- 返回的形式是0.009*”文化” + 0.005*”戀情” + 0.004*”中” + 0.004*”撒” + 0.004*”節目”的列表, 數字為權重
機器學習貝葉斯(文字處理, 判斷一句評論是否是侮辱性的[學會了這個, 那麼垃圾郵箱, 廣告的過濾也一樣了, 文字處理貝葉斯的world])
與其他的泰坦尼克號遇難預測等案例不同, 文字處理需要自己在預處理時構建出資料表. 沒有後者每一個提供表
不使用第三方庫實現的思路
- 獲取文字資料
- 格式: data0 = [[`Hello`, `buddy`], [`You`, `silly`]], labels = [1, 1]等
- 二維list, 一個list表示合併在一起可以表示一句話
-
過濾停用詞得到去掉停用詞的集合data
- 對data進行去重(現在使用的演算法不需要單詞出現的數量, 如果換作其他演算法則不一定), 獲取data中所有的單詞words, words的形式為list
- 實現思路:
- data = set(data): 轉換為set達到去重的效果
- data = list(data): 將data轉為list, 因為需要單詞的順序
- 實現思路:
- data0的每一個list元素的單詞轉為0和1, 返回一組向量, 0表示沒有該單詞, 1表示有該單詞
- def NBTrain函式使用貝葉斯進行訓練
- 根據labels先判斷出bad言論數, 得出其概率
- 縮小範圍, 鎖定到bad言論中, 計算出每一條bad言論的單詞總數與所有bad言論的總數的比值
- 鎖定到not bad言論中, 計算出每一條not bad言論的單詞總數與所有not bad言論的總數的比值
- 返回三個向量
-
根據根據貝葉斯公式, 根據輸入的測試集向量, 通過貝葉斯公式與NBTrain出來的引數(該引數與貝葉斯公式非常相關)得出p0與p1, 比較大小進行分類藉口
使用sklearn的native_bayes模組實現
- 獲得資料
- 過濾掉停用詞
- 將每一個樣本對應的單詞以` `.jion合併, 因為之後將單詞轉為向量的物件需要這樣的引數
- 匯入sklearn.features_extraction.text.CountVectorizier或者sklearn.features_extraction.text.TfidfVectorizier, 是兩種將字串中的單詞轉為向量的演算法, 後者效果更好, 所以以他為例
- tfidf = TfidVectorizier() # 有一個ngram_range可選引數, (1, 4)表示得到的feature為1個, 2個依次增加到3個, 3就是最終每一個句子的向量的長度
- tfidf_fit = tfidf.fit_transform(texts) # texts的形式[`I am myself`, `Do not say it`, …]
- tfidf_fit.get_feature_names()返回單詞list
- tfidf_fit.toarray()返回轉換後的向量
- 現在得到了我們需要用於建模的資料表了(前面就是特徵提取的操作, 是機器學習中最難的部分, 目的就是為了得到可以用於建模的資料表)
- 將資料分成訓練集和測試集
- 匯入native_bayes模組中的MultinomialNB類物件
- clf = MultinomialNB()
- clf.fit(X_train.values.tolist(), y_train.values.tolist()) # bayes坑的地方, 傳入的必須是list, 內部不提供轉換
- 評估
- clf.score(X_test.values.tolist(), y_test.values.tolist())
相關文章
- Python利用pandas處理資料與分析Python
- 探索Python資料分析(一):NLTK庫和文字處理Python
- Python資料分析與挖掘實戰(資料預處理)Python
- 【Python資料分析基礎】: 資料缺失值處理Python
- Python資料分析基礎: 資料缺失值處理Python
- Python資料處理(二):處理 Excel 資料PythonExcel
- 10 文字分析處理命令
- 處理文字資料(上):詞袋
- python 文字處理操作Python
- 資料分析--資料預處理
- python 處理資料Python
- 玩轉大資料系列之二:資料分析與處理大資料
- Excel高階應用教程:資料處理與資料分析Excel
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- Python文字處理NLP:分詞與詞雲圖Python分詞
- 資料處理 聚類分析聚類
- Python自然語言處理 3 處理原始文字Python自然語言處理
- 資料清洗與預處理:使用 Python Pandas 庫Python
- 中文維基百科文字資料獲取與預處理
- Python編解碼問題與文字檔案處理Python
- 基於python的大資料分析-資料處理(程式碼實戰)Python大資料
- 資料庫hang住,分析處理資料庫
- 【Python資料分析基礎】: 異常值檢測和處理Python
- 達觀智慧文字分析系統,賦能企業大資料加工處理大資料
- [資料處理]python基礎Python
- Python資料處理-pandas用法Python
- Python資料處理典型用法Python
- Python自然語言處理 2 獲得文字語料和詞彙資源Python自然語言處理
- Python資料處理(一):處理 JSON、XML、CSV 三種格式資料PythonJSONXML
- Python使用xlrd處理excel資料PythonExcel
- 資料預處理-資料整合與資料變換
- 文字處理用c還是用pythonPython
- 【python技巧】文字處理-re庫字元匹配Python字元
- Python 網頁爬蟲 & 文字處理 & 科學計算 & 機器學習 & 資料探勘兵器譜Python網頁爬蟲機器學習
- 資料處理利器python與scala物件導向對比分析2-大資料ML樣本集案例實戰Python物件大資料
- 文字資料預處理:可能需要關注這些點
- nlp中文字輸入的資料預處理方式
- python資料處理是什麼意思Python