实际应用中的词向量维度使用注意

nlp业务中,无可避免地要使用词向量做特征构建,维度过大导致计算量复杂,在百万级数据处理中速度非常慢,为了权衡工程需要,我们要根据实际情况做选取。我对比了不同纬度在使用上的效果,确定一个合理的范围,供大家根据自己的业务操作。

wv.most_similar(['主管'], topn=30) 

dim=10

[('部', 0.9898655414581299),
 ('人员', 0.9882362484931946),
 ('副', 0.9846471548080444),
 ('兼', 0.9810933470726013),
 ('总', 0.9808691143989563),
 ('督导', 0.9800705909729004),
 ('及', 0.9787922501564026),
 ('助理', 0.978703498840332),
 ('和', 0.9768193960189819),
 ('组', 0.9762864112854004),
 ('主任', 0.9733006358146667),
 ('经理', 0.9703651666641235),
 ('副经理', 0.9689823985099792),
 ('文员', 0.9678162932395935),
 ('实习', 0.967551052570343),
 ('运行', 0.9675098061561584),
 ('驻店', 0.9662008881568909),
 ('类', 0.966163158416748),
 ('见习', 0.9655701518058777),
 ('现场', 0.9648318886756897),
 ('日常', 0.9646518230438232),
 ('外派', 0.9643538594245911),
 ('岗', 0.9629733562469482),
 ('储备', 0.9622340202331543),
 ('干部', 0.9614977240562439),
 ('部长', 0.9574716091156006),
 ('维护员', 0.9573255181312561),
 ('讲解员', 0.9559121131896973),
 ('副总', 0.9538909196853638),
 ('协助', 0.9534264802932739)]

dim=100

[('高级专员', 0.7589221596717834),
 ('经理', 0.7558820247650146),
 ('人员', 0.7198249101638794),
 ('内勤', 0.7181121110916138),
 ('总监', 0.7111504077911377),
 ('业务主管', 0.7099388837814331),
 ('主管', 0.7039210796356201),
 ('老客户', 0.6933689117431641),
 ('调研', 0.6911988258361816),
 ('客服', 0.690113365650177),
 ('文员', 0.6886807084083557),
 ('对接', 0.6857904195785522),
 ('话务', 0.6799235343933105),
 ('外联', 0.6787949800491333),
 ('顾问', 0.6785675287246704),
 ('宣传员', 0.6771835088729858),
 ('运营部', 0.6687096357345581),
 ('职员', 0.6678380370140076),
 ('副经理', 0.6664285659790039),
 ('营销员', 0.6653130650520325),
 ('商务代表', 0.6643666625022888),
 ('稽查', 0.6642056703567505),
 ('副总', 0.6620935201644897),
 ('运营', 0.6619923114776611),
 ('订单', 0.6611194014549255),
 ('信息员', 0.6592134833335876),
 ('文职', 0.6564882397651672),
 ('部长', 0.6559721231460571),
 ('推广', 0.6552845239639282),
 ('运营商', 0.6543294787406921)]

dim=45

[('文员', 0.8804426193237305),
 ('经理', 0.868613600730896),
 ('人员', 0.862251341342926),
 ('内勤', 0.8554402589797974),
 ('业务主管', 0.8453125953674316),
 ('总监', 0.8363998532295227),
 ('客服', 0.827606201171875),
 ('高级专员', 0.8149360418319702),
 ('主管', 0.8101118803024292),
 ('副总', 0.7973485589027405),
 ('职员', 0.7962808012962341),
 ('支持', 0.7902414202690125),
 ('实习生', 0.7901945114135742),
 ('对接', 0.7889500856399536),
 ('业务员', 0.7869356870651245),
 ('顾问', 0.785954475402832),
 ('推广员', 0.7852128744125366),
 ('业务经理', 0.7840945720672607),
 ('员', 0.781104564666748),
 ('运营', 0.7787041068077087),
 ('负责人', 0.7733438014984131),
 ('老客户', 0.7725980877876282),
 ('推广', 0.7715122699737549),
 ('文职', 0.7711169719696045),
 ('调研', 0.7709962129592896),
 ('订单', 0.7706228494644165),
 ('渠道', 0.7694729566574097),
 ('业务', 0.7682620286941528),
 ('总助', 0.7671991586685181),
 ('信息员', 0.7657262086868286)]

由上可知,dim=10参数空间不足,查找时存在相关性不足现象,在实际使用中也发现了很多问题,这是客观存在的。

当dim=45,整体表现还是很好的,维度空间也不是那么大;dim=100时,当然表现还是很好的。

个人认为,在工程中使用40-60维度的词向量基本可满足需求,计算量也不是很大。

原文地址:https://www.cnblogs.com/demo-deng/p/13866022.html