Tfidf
为了统计词频,将分词后的字符串分割成词
1 | X_train = [[word for word in line.split()] for line in X_train] |
1 | def tfidf(X_train): |
corpurs是将词转化为(id, 词频)的形式
corpus_tfidf是(id,tfidf权重)的形式
通过tfidf_model[anycoupus],可以将任意的经过dict.doc2bow转换后的词频corpus转化为tfidf corpus,这里的corpus_tfidf = tfidf_model[corpus], 只是转化了自身。
LDA
lda用在文本分类中本质是降维,lda有多少个主题,就可以将一个句子映射到多少维,表示属于每一个主题的可能性,再将这个embedding使用分类器进行分类。
1 | lda = models.ldamulticore.LdaMulticore(corpus=corpus_tfidf, id2word=dict, num_topics=100) |
之后可以通过 lda.inference([tfidf_model[dict.doc2bow(i)]])[0][0]
得到一个新的词组的embedding
1 | train, test = [], [] |
分类
1 | train, test = np.load('train.npy').tolist(), np.load('test.npy').tolist() |