短文本/Query分类算法特征选择
最近工作中有一个project需要对query进行行业分类(label较多,大于1k),在以往的长文本中,一般使用文本的词向量结合tf-idf作为权重,分类的效果基本上还是非常不错。但是短文本,特征向量非常稀疏,一般一个 query只有1个或者几个特征,因而在覆盖率和准确率上将会大打折扣。
本文的主要目的是对短文本的特征选择做一些尝试,语义特征主要分类字面特征和语义特征两类。分类模型可以使用ME,SVM或者DNN等。
1. 字面特征:
a. N-gram特征(一般N为2)
比如:一个query 可以被切词为:T1 T2 T3,那么我们可以把T1、T2、T3、BEG_T1,T1T2、T2T3、T3_END可以作为特征。权值可以计算 tf-idf值归一化后就可以
B. 摘要扩展
使用一个query在搜索引擎得到其自然结果,作为特征的扩展
2. 语义特征:
现在应用比较广泛的语义特征主要通过PLSA/LDA模型得到,因为是对query的分类,所以PLSA的模型训练使用 query及其摘要数据进行训练,训练之后,得到 p(z|q) 、p(z)和p(w|z)向量。从而对于一个query向量,可以得到这个query的p(z|q)向量(具体的计算query的p(z|q)过程就不详细叙述了)
语义特征又可以分为两类
a. Topic_id 特征, PLSA模型的p(zi|q)有一个意义就是q(query) 属于zi的概率,
因而,可以把PLSA作为一个聚类算法,而topicid,就是所在的簇id。在实验中一般取 p(zi|q)排前3的zi 作为特征,而p(zi|q)则作为feature权值。
如:“清华大学招生”的feature为:175: 0.295 605:0148 646:0.096
Label:”本科教育”的feature为:175:0.185 675:0.152 119:0.084
Label:” 汽车用品”的feature为:372:0.635 682:0.084 174:0.0506
因为“清华大学招生”与Lable“本科教育”同时有较大概率在簇:175,而与Lable“汽车用品”没有在同一个簇中。所以更倾向于分类至Label”本科教育”
b. Query与行业Label的plsa向量。
一般而言,一个query属于某个行业类的label的plsa_sim值大,则属于这个行业的概率也高
比如:“清华大学招生”和行业label “本科教育”的语义相似度为:0.547,而与行业Lable”汽车用品”的相似度仅为0.002.
在实验中通过引入语义特征,对query的召回和准确在ME模型上都有了比较大的提升,稍后有时间再整理一个实验评估效果。