文本分类算法从机器学习的“人工特征 + lr/svm/xgboost”,到深度学习的"word embedding + DNN"、“language model + decoder”,不断演变。
0.文本的预处理
1)清洗数据:带有HTML标签、URL地址等非文本内容,长串数字或字母、无意义的文本。
2)变形词识别和替换:特殊符号替换、同音近型替换(拼音首字母)、简繁替换
3)停用词与标点符号:采用官方词表,针对不同的场景做一些调整
1.文本特征&文本表示
以词还是以字来表示一个句子的输入特征,都需要进行尝试,只有效果相差不大,都需要保留下来做模型融合。
如果文本长度不同,取占比95%或者98%的长度最为最大长度,然后进行截断补齐
文本特征的提取:
方法一:分词之后采用One-hot或TF-IDF等方法将每个样本转化为固定长度的特征编码作为分类算法的输入。
方法二:采用N-gram模型(一般同时采用N为1到3的N-gram)保留词与词之间的的位置和顺序信息。
方法三:Word2Vec和GloVe,拼接Word2Vec和GloVe作为新的特征输入,直接相加或者求平均效果通常都不好。如果要找到最合适的词向量维度,可以看看NeurIPS 2018斯坦福的这篇论文《On the Dimensionality of Word Embedding》。
方法四:语言模型,例如ELMo和BERT
其他特征:是否出现长串数字的布尔值特征HAS_DIGITAL、长串数字按长度归一的DIGIAL_LEN_10、文本长度(形如“长文本_小明”、“短文本_学校”)
同时采用了多种特征方法,不妨对这些特征进行分桶标记。如对分词特征“小明”标记为“wordseg:小明”、对skip-gram特征“小明_学校”标记为“skipgram:小明_学校”。
特征选择方法:
卡方检验:
信息增益:
&nb