最近在做文本分類方面的項目,前前后后也遇到很多問題並去尋找解決辦法,現在記錄一下。
用的開發工具是VS code,語言是python。
-
無法在VS code的控制台輸入內容:
打開設置,輸入run in terminal
勾選
-
保存分類器訓練好的模型和訓練好的tfidf詞典:
from sklearn.externals import joblib
joblib.dump(model,filename)#保存
joblib.load(filename)#調用
-
中文亂碼:
import sys,io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
或先解碼再編碼 -
字符串與列表相互轉換:
list=str.split("分割符")
str="分割符".join(list)
-
jibea分詞中添加規則,如禁止某些詞拆分或拆分某些詞:
jieba.suggest_freq('不拆分詞',True)
jieba.suggest_freq('拆分','詞',True)
-
LDA模型聚類步驟:(無監督學習)
1.將數據轉換為list of list的結構
2.將數據構造為字典:dictionary=corpora.Dictionary(result)
corpora屬於gensim庫
3.將數據的每一部分轉換為稀疏向量:corpus=[dictionary.doc2bow(sentence) for sentence in result]
4.轉換為tfidf指數
5.確定聚類數目,輸入tfidf特征矩陣,調用LDA模型 -
CountVectorizer和TfidfVectorizer的對比:
前者單純考慮詞頻,后者考慮tfidf指數:即在本文出現的頻率(詞頻)和在其他文本出現的頻率(逆文本頻率)。當tf高,idf低時該詞區分度高。
暫時寫下這些,還有問題暫未記錄