zzzz准备实战,python,tensorflow,keras,Scikit-learn
第三天(《python自然语言处理实战》)
jieba分词
- 准确模式:最精确的分开,适合文本分析
- 全模式:把句子里的所有单词扫描出来,不能解决歧义
- 搜索引擎模式:在精准模式的基础上,对长词再次切分(会把所有可能的词输出)
常用的无监督关键词提取算法
- TF-IDF
- TextRank:hanlp的extractKeyword(提取关键词)、extractSummary(自动摘要 )
- 主体模型算法:对文档的隐含语义结构进行聚类(原理还是不太理解,已经没人用了)
- LDA:《基于特征选择及LDA模型的中文文本分类研究与实现》准确率不理想
- LSI/LSA
常见的文本分类算法
- 逻辑回归(LR)
- 支持向量机(SVM)
- K近邻居(KNN)
- 决策树(DT)
- 神经网络(NN)
文本分类的步骤
- 定义阶段:定义数据以及分类体系(具体分为哪几种)
- 数据预处理(对文档进行分词,去掉停用词等)
- 数据特征提取(对文档矩阵降维,提取训练集中最有用的特征)
- Bag-of-words
- 统计特征:TF,IDF,TF-IDF
- N_-Gram
- 模型训练:选择模型和算法,训练出文本分类器
- 评测:在测试集上测试评评估分类器的性能
- 应用:对待分类的文档进行分类
现有的文本分类算法
word2vec预训练词向量
textCNN 模型
charCNN 模型
不利于处理长文本的分类
Bi-LSTM 模型
Bi-LSTM即双向LSTM,较单向的LSTM,Bi-LSTM能更好地捕获句子中上下文的信息。
(LSTM是RNN的变体,RNN假设我们的样本是基于序列的。比如一段段连续的语音,一段段连续的手写文字。)
Bi-LSTM + Attention 模型
Bi-LSTM + Attention模型来源于论文Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification。
Bi-LSTM + Attention 就是在Bi-LSTM的模型上加入Attention层,在Bi-LSTM中我们会用最后一个时序 的输出向量 作为特征向量,然后进行softmax分类。Attention是先计算每个时序的权重,然后将所有时序 的向量进行加权和作为特征向量,然后进行softmax分类。在实验中,加上Attention确实对结果有所提升。
Transformer 模型
对于Transformer来说,需要明确加入位置编码学习position Embedding。因为对于self Attention来说,它让当前输入单词和句子中任意单词进行相似计算,然后归一化计算出句子中各个单词对应的权重,再利用权重与各个单词对应的变换后V值相乘累加,得出集中后的embedding向量,此间是损失掉了位置信息的。因此,为了引入位置信息编码,Transformer对每个单词一个Position embedding,将单词embedding和单词对应的position embedding加起来形成单词的输入embedding。
Doc2Vec+LR /hanlp/py
CNN
RNN
TF-IDF+贝叶斯 /CSDN/homework3.py