最近在做文本分类方面的项目,前前后后也遇到很多问题并去寻找解决办法,现在记录一下。
用的开发工具是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低时该词区分度高。
暂时写下这些,还有问题暂未记录