实际应用中的词向量维度使用注意
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维度的词向量基本可满足需求,计算量也不是很大。
时刻记着自己要成为什么样的人!
浙公网安备 33010602011771号