±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚinfoq£¬±¾ÎÄÕÂÖ÷Ҫͨ¹ýÃèÊöËÕÄþµÄÒµÎñÎÊÌâºÍ½â¾ö·½°¸£¬Ìá³öÁËÍêÕûµÄ¼¼Êõ·½°¸½éÉÜÁËÖÇÄÜÉÌÆ·Ë°·ÖÀàϵͳ£¬Ï£Íû¶Áºó»á¸øÄú´øÀ´°ïÖú¡£
|
|
1. ÏîÄ¿±³¾°
1.1 ÒµÎñÎÊÌâÃèÊö
ĿǰÆóÒµ²ÆÎñÈËÔ±¿ªÈ¡ÉÌÆ·Ôöֵ˰·¢Æ±Ê±£¬Æ±ÃæÉϵÄÉÌÆ·ÐèÒªÓë˰Îñ×ֺܾ˶¨µÄ˰·ÖÀà±àÂë½øÐйØÁª£¬°´·ÖÀà±àÂëÉÏ×¢Ã÷µÄ˰ÂʺÍÕ÷ÊÕÂÊ¿ª¾ß·¢Æ±£¬Ê¹µÃ˰Îñ»ú¹Ø¿ÉÒÔͳ¼Æ¡¢É¸Ñ¡¡¢±È¶ÔÊý¾ÝµÈ£¬×îÖÕ¼ÓÇ¿Õ÷ÊÕ¹ÜÀí¡£ÎªÁËÂú×ãÕâÒ»ÒªÇó£¬×î¹Ø¼üµÄµØ·½¾ÍÔÚÓÚÈ·¶¨ÉÌÆ·µÄ˰·ÖÀà±àÂë¡£´«Í³µÄ·½·¨ÊÇÈ˹¤É¸Ñ¡ÉÌÆ·¹Ø¼ü×Ö£¬È»ºóÔÚ˰Îñ×ܾÖÌṩµÄ˰·ÖÀà±àÂëÁбíÖвéÕÒ£¬ÎÞ·¨Ö±½Ó²éÕÒµ½µÄ£¬¸ù¾ÝÕþ²ßÏȽøÐÐÐÐÒµ¡¢´óÀàµÄ»®·Ö£¬ÔÙ½øÐÐСÀàϸ»®·Ö£¬¶ÔÓÚÎÞ·¨Çå³þ½ç¶¨¡¢¹éÀàµÄ£¬°´ÕÕÉÌÆ·µÄ²ÄÁÏ»òÓÃ;ѡÔñ×î½üËÆµÄ±àÂ룬×îºó¸ù¾Ý±àÂëÈ·¶¨ÉÌÆ·Ãû³ÆºÍ˰ÂÊ¡£
ÀýÈç¸ù¾ÝÉÌÆ·Ãû¡°ÏÄ×°Ñ©·ÄÌõÎÆ¶ÌÐä t ÐôÅ®´º°ëÐäÒ·þÏÄÌìÖг¤¿î´óÂëÅÖ mm ÏÔÊÝÉÏÒÂÏÄ¡±£¬Ô¤²âÏàÓ¦µÄ˰·ÖÀà±àÂ루ҪÇóÀàÄ¿±È½Ï¾«Ï¸£©¡¢Ë°·ÖÀà¼ò³Æ¡¢Ë°·ÖÀàÃèÊöÒÔ¼°¶ÔÓ¦µÄ˰ÂÊ¡£ÉÌÆ·Á¿ÎªÇ§ÍòÉõÖÁÒÚÁ¿¼¶£¬Í¨³£ÉÌÆ·Ãû×ÖÊý²»»áÌ«¶à£¬Ë°·ÖÀà±àÂëÓÐ
4200 ¶àÖÖ£¬³£¼ûµÄÉÌÆ·Ë°·ÖÀà±àÂëÓ¦¸ÃÉÙÓÚ¸ÃÊýÖµ¡£
1.2 ½â¾ö·½°¸
Ŀǰ´æÔÚÉÙ²¿·Ö×Ô¶¯Ë°·ÖÀà±àÂëϵͳ£¬²ÉÈ¡µÄ·½°¸Ö÷ÒªÊǸù¾Ý´óÁ¿µÄÉÌÆ·¹Ø¼ü´Ê½¨Á¢¹Ø¼ü´ÊÓë˰·ÖÀà±àÂëµÄÒ»Ò»¶ÔÓ¦¹ØÏµ£¬²¢´æ´¢ÔÚÊý¾Ý¿âÖУ¬¿ªÆ±ÈËÔ±Ê×ÏÈÈÔÈ»ÐèÒªÈ˹¤É¸Ñ¡ÉÌÆ·¹Ø¼ü´ÊÌṩ¸øË°·ÖÀàϵͳ£¬ÏµÍ³ÔÚÊý¾Ý¿âÖиù¾Ý¹Ø¼ü´Ê½øÐвéÕÒ£¬Êä³öÏàÓ¦µÄ˰·ÖÀà±àÂëºÍ˰Âʵȣ¬Èç¹ûûÓÐÆ¥ÅäµÄ½á¹û½«Ã»ÓÐÊä³ö¡£ÔÓÐϵͳ´æÔÚµÄȱµãÖ÷ÒªÊÇÐèÒªÊÂÏÈÈ˹¤É¸Ñ¡ÉÌÆ·¹Ø¼ü´Ê£¬¶øÄ¿Ç°Êµ¼ÊµÄÉÌÆ·Ãû³ÆÎ廨°ËÃÅ£¬ÎªÁËÌá¸ßÉÌÆ·µÄ¼ìË÷Á¿Ìí¼ÓÁË´óÁ¿µÄÐÞÊδÊÓÔÚÈ˹¤É¸Ñ¡¹Ø¼ü´ÊÕâÒ»²½ÈÔÈ»´æÔÚ²»ÉÙ¹¤×÷Á¿£¬²»ÄÜ×öµ½ÍêÈ«µÄ×Ô¶¯»¯´¦Àí¡£
±¾ÎĵÄ˼·Ö÷ÒªÊǽ«¸ÃÎÊÌâµ±×÷Ò»¸ö¶ÌÎı¾¶à·ÖÀàÎÊÌ⣬¸ù¾ÝÉÌÆ·Ãû³Æ·Ö´ÊºóÉú³ÉµÄ´ÊÏòÁ¿£¬»ùÓÚÉñ¾ÍøÂçѧϰһ¸öÎı¾·ÖÀàÄ£ÐÍ£¬ÔÚ´Ë»ù´¡ÉϹ¹½¨Ò»¸öÖÇÄÜÉÌÆ·Ë°·ÖÀàϵͳ¡£
2. ÍêÕûµÄ¼¼Êõ·½°¸
2.1 Êý¾Ý½ÓÈë
´óÊý¾Ýƽ̨Êý¾Ý¿âÄÚ´æÓдóÁ¿ÒÑ¿ªÆ±ÉÌÆ·Êý¾Ý£¬´ÓÒÑ¿ªÆ±ÉÌÆ·Êý¾ÝÖÐÌáÈ¡ÉÌÆ·Ãû³Æ¡¢Ë°·ÖÀà±àÂëºÍ˰ÂÊÈý¸ö×ֶΣ¬Í¬Ê±ÒªÉ¸Ñ¡µô˰·ÖÀà±àÂë×Ö¶ÎΪ¿Õ»òÕß±àÂë´íÎóµÄÊý¾Ý£¬½«×îÖÕ»ñÈ¡µÄÊý¾Ý°´Ðд洢µ½Îı¾ÎļþÖУ¬ÎªÑµÁ·ÉÌÆ·Ä£ÐÍÌṩÊý¾Ý·þÎñ¡£
2.2 Îı¾Ô¤´¦Àí
Îı¾Ô¤´¦ÀíÊÇÔÚÎı¾ÖÐÌáÈ¡¹Ø¼ü´Ê±íʾÎı¾µÄ¹ý³Ì£¬Ö÷Òª°üÀ¨Îı¾·Ö´ÊºÍȥͣÓôÊÁ½¸ö½×¶Î¡£ÀýÈçÉÌÆ·Ãû¡°ÏÄ×°Ñ©·ÄÌõÎÆ¶ÌÐä
t ÐôÅ®´º°ëÐäÒ·þÏÄÌìÖг¤¿î´óÂëÅÖ mm ÏÔÊÝÉÏÒÂÏÄ¡±¾Îı¾·Ö´ÊºÍȥͣÓôÊÖ®ºóÉÌÆ·Ê¾Àý±êÌâ±ä³ÉÁËÏÂÃæ¡°
/ ¡±·Ö¸îµÄÒ»¸ö¸ö¹Ø¼ü´ÊµÄÐÎʽ£º
ÏÄ×° / Ñ©·Ä / ÌõÎÆ / ¶ÌÐä / t Ðô / Å® / ´º / °ëÐä / Ò·þ / ÏÄÌì /
Öг¤¿î / ´óÂë / ÅÖ mm / ÏÔÊÝ / ÉÏÒ / ÏÄ¡£
ÓÉÓÚÒµÄÚÖÐÎÄÎı¾·Ö´Ê·½·¨ÒѾ·Ç³£³ÉÊ죬ÎÒÃDzÉÓÃĿǰӦÓý϶àµÄÖÐÎÄ·Ö´Ê¿â jieba ½øÐзִʡ£
2.3 ´ÊǶÈëÉú³É
word embedding£¨´ÊǶÈ룩Éú³ÉÄ£ÐÍÈçͼ 1 Ëùʾ¡£

ͼ 1 ´ÊǶÈëÉú³ÉÄ£Ðͼܹ¹
2.3.1 ǰÏò´«²¥

2.3.2 ·´Ïò´«²¥ºÍËæ»úÌݶÈϽµÑ§Ï°È¨ÖØ
ÔÚÑ§Ï°È¨ÖØ¾ØÕó W Óë W¡¯¹ý³ÌÖУ¬ÎÒÃÇ¿ÉÒÔ¸øÕâÐ©È¨ÖØ¸³Ò»¸öËæ»úÖµÀ´³õʼ»¯¡£È»ºó°´ÐòѵÁ·Ñù±¾£¬Öð¸ö¹Û²ìÊä³öÓëÕæÊµÖµÖ®¼äµÄÎó²î£¬²¢¼ÆËãÕâЩÎó²îµÄÌݶȡ£²¢ÔÚÌݶȷ´·½Ïò¾ÀÕýÈ¨ÖØ¾ØÕó£¬ÕâÖÖ·½·¨±»³ÆÎªËæ»úÌݶÈϽµ£¬µ«Õâ¸öÑÜÉú³öÀ´µÄ·½·¨½Ð×ö·´Ïò´«²¥Îó²îËã·¨¡£¾ßÌå²½ÖèÈçÏÂ
Ê×Ïȶ¨Òå loss function£¨Ëðʧº¯Êý£©£¬Õâ¸öËðʧº¯Êý¾ÍÊǸø¶¨ÊäÈëÉÏÏÂÎĵÄÊä³ö´ÊÓïµÄÌõ¼þ¸ÅÂÊ£¬Ò»°ã¶¼ÊÇÈ¡¶ÔÊý£¬ÈçÏÂËùʾ£º 
ÆäÖÐ j* ±íʾĿ±ê´ÊÔڴʱí V ÖеÄË÷Òý¡£
½ÓÏÂÀ´¶ÔËðʧº¯ÊýÇóµ¼£¬µÃµ½Êä³öÈ¨ÖØ¾ØÕó W¡¯µÄ¸üйæÔò£º

ÀàËÆµØ¿ÉÒԵõ½È¨ÖؾØÕó W µÄ¸üйæÔò£º

2.3.3 »ñÈ¡´ÊǶÈë
ÔÚµÚ 2.3.2 ½ÚÖо¹ý×ã¹»´ÎÊýµÄµü´ú£¬Ëðʧº¯Êý×㹻Сʱ£¬ÎÒÃÇ¿ÉÒԵõ½È¨ÖؾØÕó W£¬ÆäÖоØÕó W
µÄµÚ k ÐоÍÊǴʱí V ÖбàºÅΪ k µÄ´ÊËù¶ÔÓ¦µÄ´ÊǶÈë¡£
2.4 ÉÌÆ·Ë°·ÖÀàÄ£ÐÍ
Ë㷨ģÐÍʾÒâͼÈçͼ 2 Ëùʾ¡£

ͼ 2 ÉÌÆ·Ë°·ÖÀàÄ£Ðͼܹ¹
2.4.1 Ä£ÐÍÀí½â
±¾Ëã·¨ÊÇÒ»ÖÖÓмලµÄÄ£ÐÍ£¬ÓëÉÏÒ»½ÚÌáµ½µÄ´ÊǶÈëÉú³É¼Ü¹¹ºÜÏàËÆ£¬Æä½á¹¹Èçͼ 2 Ëùʾ¡£ÉÏÒ»½ÚÖеĴÊǶÈëÉú³ÉÄ£ÐÍ£¬Í¨¹ýÉÏÏÂÎÄÔ¤²âÖмä´Ê£¬¶ø±¾·ÖÀàÄ£ÐÍÔòÊÇͨ¹ýÉÏÏÂÎÄÔ¤²â±êÇ©£¨Õâ¸ö±êÇ©¾ÍÊÇÎı¾µÄÀà±ð£¬±¾·¢Ã÷ÖоÍÊÇÉÌÆ·Ãû¶ÔÓ¦µÄ˰·ÖÀà±àÂ룬ÊÇѵÁ·Ä£ÐÍ֮ǰͨ¹ýÈ˹¤±ê×¢µÈ·½·¨ÊÂÏÈÈ·¶¨ÏÂÀ´µÄ£©¡£
´ÓÄ£Ðͼܹ¹ÉÏ¿´£¬ÑØÓÃÁË´ÊǶÈëÉú³ÉÄ£Ð͵ĵ¥²ãÉñ¾ÍøÂçµÄģʽ¡£Ä£Ð͵ÄÊäÈëÊÇÒ»¸ö n-gram ´ÊǶÈëµÄÐòÁУ¨ÓÉ´ÊǶÈëÄ£ÐÍÉú³ÉµÄ
1~n ¸öÁ¬ÐøµÄ´ÊǶÈëÇóºÍµÃµ½)£¬Êä³öÊÇÕâ¸ö´ÊÐòÁÐÊôÓÚ²»Í¬Àà±ðµÄ¸ÅÂÊ¡£¶Ô´ÊǶÈë¼ÓȨƽ¾ùÖ®ºóÓ³Éäµ½Òþ²Ø²ã£¬ÔÙÓÉÒþ²Ø²ãÓ³Éäµ½Êä³ö²ã£¬¶ÔÊä³ö²ãµÄ½á¹û½øÐÐ
softmax ·ÖÀà¿ÉÒԵõ½Îı¾ÊôÓÚ¸÷¸öÀà±ðµÄ¸ÅÂÊ£¬¿ÉÒԵõ½ loss function Ϊ£º

2.4.2 ²ã´Î»¯ softmax
´«Í³Éñ¾ÍøÂçÊäÈëÊä³ö¿ò¼ÜÈçͼ 3 Ëùʾ£¬hierarchical(²ã´Î»¯) softmax ½á¹¹Èçͼ
4 Ëùʾ¡£±¾Ä£Ð굀 softmax ²ãÓ봫ͳµÄÉñ¾ÍøÂçÓÐÒ»¶¨Çø±ð£¬hierarchical softmax
½á¹¹ÊǰÑÊä³ö²ã¸Ä³ÉÁËÒ»¿Å»ô·òÂüÊ÷£¬ÆäÖÐͼÖа×É«µÄÒ¶×Ó½Úµã±íʾ´Ê»ã±íÖÐËùÓеÄ|V|¸ö´Ê, ºÚÉ«½Úµã±íʾ·ÇÒ¶×ӽڵ㣬ÿһ¸öÒ¶×Ó½ÚµãÒ²¾ÍÊÇÿһ¸ö
label£¨±êÇ©£©£¬¶¼¶ÔӦΨһµÄÒ»Ìõ´Ó root£¨¸ù£©½Úµã³ö·¢µÄ·¾¶¡£ÎÒÃǵÄÄ¿µÄÊÇʹµÄ W=W0 ÕâÌõ·¾¶µÄ¸ÅÂÊ×î´ó£¬¼´:P(W=W0|W1)
×î´ó, ¼ÙÉè×îºóÊä³öµÄÌõ¼þ¸ÅÂÊÊÇ W2 ×î´ó£¬ÄÇôÎÒÖ»ÐèҪȥ¸üдӸù½áµãµ½ W2 ÕâÒ»¸öÒ¶×Ó½áµãµÄ·¾¶ÉÏÃæ½ÚµãµÄÏòÁ¿¼´¿É£¬¶ø²»ÐèÒª¸üÐÂËùÓÐ
label µÄ³öÏÖ¸ÅÂÊ£¬ÕâÑù´ó´óµÄËõСÁËÄ£ÐÍѵÁ·¸üеÄʱ¼ä¡£


2.4.3 ·´Ïò´«²¥ÓëÄ£ÐÍѵÁ·
±¾Ä£ÐÍѵÁ·Ê±²ÉÓà 500 ÍòÌõÒÑ¿ªÆ±Êý¾Ý£¬¸ù¾ÝµÚ¶þ½ÚËùÊö½øÐзִʣ¬Ñ¡ÔñÆäÖÐ 400 ÍòÌõÊý¾Ý×÷ΪѵÁ·¼¯£¬Ê£ÏÂ
100 ÍòÌõÊý¾Ý×÷Ϊ²âÊÔ¼¯£¬×¢ÒâÊý¾ÝÒªÒÔ UTF-8 ¸ñʽ´æ´¢£¬¸ñʽÈ總ͼ 5 Ëùʾ¡£ÑµÁ··½·¨²ÉÓÃÓë´ÊǶÈëÉú³ÉÄ£ÐÍÀàËÆµÄ·´Ïò´«²¥ºÍÌݶÈϽµÈ¥¸üÐÂÈ¨ÖØ¾ØÕó
A ºÍ B¡£ÔÚ 32G CPU¡Á3 Ìõ¼þÏ£¬Ä£ÐÍѵÁ·Ê±¼äÔ¼ 40 ·ÖÖÓ×óÓÒ£¬ÑµÁ·½áÊøºó»áµÃµ½Ò»¸ö¶þ½øÖÆÎļþ£¬¸ÃÎļþÄÚ´æ´¢ÁËÈ¨ÖØ¾ØÕóµÄÊýÖµ£¬Ô¼
40M ´óС¡£ÀûÓà 100 ÍòÌõ²âÊÔÊý¾Ý¶ÔÄ£ÐÍÐÔÄܽøÐÐÑéÖ¤£¬µÃµ½Ä£ÐÍÔ¤²âÉÌÆ·Ë°·ÖÀà±àÂë׼ȷÂÊ´ï 95.48%¡£
2.4.4 ǰÏò´«²¥ÓëÄ£ÐÍʹÓÃ
½«ÊäÈëµÄÉÌÆ·Ãû·Ö´ÊÓëȥͣÓôʺó£¬Í¨¹ý´ÊǶÈëÉú³ÉÄ£ÐÍÉú³É´ÊǶÈ룬ÔÙ¸ù¾ÝÉú³ÉµÄ´ÊǶÈë×éºÏ³É n-gram
ÌØÕ÷£¬n-gram ÌØÕ÷¾ÍÊÇÉÌÆ·Ë°·ÖÀà±àÂë·ÖÀàÄ£Ð͵ÄÊäÈ룬¸ù¾ÝѵÁ·³öµÄÄ£ÐÍÈ¨ÖØ¾ØÕó A ½« n-gram
ÌØÕ÷¼ÓȨƽ¾ùºóÊäÈëµ½Òþ²Ø²ã£¬ÔÙ¸ù¾ÝѵÁ·³öµÄÈ¨ÖØ¾ØÕó B ½«Òþ²Ø²ãµÄÊäÈëÏßÐԱ任µ½Êä³ö²ã£¬×îºó½«Êä³ö²ãµÄ½á¹ûͨ¹ý
softmax º¯Êý f µÃµ½±àÂë·ÖÀà½á¹û£¬ÈçÏÂʽËùʾ£º
label=f(BAx_n )
ÓÉÓÚÉÌÆ·Ë°·ÖÀà±àÂëΨһ±êʾÉÌÆ·£¬¿ÉÒÔ¸ù¾Ý±àÂëÔÚ˰Îñ×ܾÖÌṩµÄ˰·ÖÀà±í¸ñÖмìË÷µ½ÉÌÆ·ËùÊô´óÀࡢϸ·ÖÀà±ðÃû³ÆÒÔ¼°¶ÔÓ¦µÄ˰ÂÊ¡£
2.5 Ä£ÐͲ¿ÊðÓë°ü×°
Ä£ÐÍѵÁ·Íê³ÉºóΪÁ˱ãÓÚÓû§Ê¹Ó㬽«Æä²¿Êðµ½·þÎñÆ÷ÉÏÌṩԶ³Ìµ÷Ó÷þÎñ£¬ÕâÀïÎÒÃDzÉÓûùÓÚ Google
µÄÔ¶³Ì¹ý³Ìµ÷Óÿò¼Ü gRPC µÄ·½°¸£¬Êý¾Ý´æ´¢¸ñʽ²ÉÓà Google µÄ protocol buffer£¨ÐÒ黺³åÇø£©¸ñʽ£¬¸Ã¸ñʽ±È´«Í³µÄ
json µÈ¸ñʽЧÂʸü¸ß¡¢Ëٶȸü¿ì¡£ÔÚ·þÎñÆ÷ÉÏÆô¶¯·þÎñºó£¬¾ÑéÖ¤Óû§Ã¿´Îµ÷ÓõÄʱ¼ä´óԼΪ 300-500ms£¬Äܹ»Âú×ãÕý³£Éú²úÐèÒª¡£
3. ±¾¼¼Êõ·½°¸´øÀ´µÄÓÐÒæÐ§¹û
·½°¸ÕûÌåʵʩÁ÷³ÌÈçͼ 5 Ëùʾ¡£

¶Ô±ÈÏÖÓм¼Êõ£¬Ò»·½ÃæÊÇ´«Í³µÄÈ˹¤²éÕÒ·½·¨£¬ÔÚɸѡÉÌÆ·¹Ø¼ü´Êºó£¬ÐèÒªÈ˹¤½øÐÐÉÌÆ·ËùÊô´óÀàºÍϸ·ÖÀà±ðµÄ·ÖÀ࣬¶øÏÖÓÐÉÌÆ·Ë°·ÖÀà±àÂë¹²ÓÐ
4227 ÖÖ£¬ÖÖÀà·±¶àÇÒÈÝÒ×»ìÏý£¬È˹¤Ñ¡Ôñ¹¤×÷Á¿½Ï´óÇÒÈÝÒ׳ö´í¡£ÁíÒ»·½ÃæÄ¿Ç°ÀàËÆµÄ×Ô¶¯±àÂëϵͳ£¬¶ÔÊäÈëÒªÇó·Ç³£Ñϸñ£¬ÐèÒªÈ˹¤É¸Ñ¡×¼È·µÄÉÌÆ·¹Ø¼ü´ÊÊäÈëϵͳ£¬¶øÄ¿Ç°Êµ¼ÊµÄÉÌÆ·Ãû³Æ´í×Û¸´ÔÓ£¬ÔÚÈ˹¤É¸Ñ¡¹Ø¼ü´ÊÕâÒ»²½ÈÔÈ»´æÔÚ²»ÉÙ¹¤×÷Á¿£¬´ËÍâ¸ÃϵͳÊä³ö׼ȷÂÊÒ²½ÏΪһ°ã¡£Ê¹Óñ¾¼¼Êõ·½°¸£¬ÏµÍ³²¿ÊðÊ®·Ö·½±ã£¬Ö»ÐèÅäÖúû·¾³¼´¿ÉÂíÉÏͶÈëʹÓã¬Í¬Ê±ÏµÍ³¿ÉÒÔÖ±½ÓÊäÈëÉÌÆ·Ãû³Æ£¬²»ÐèÒª×öÈκÎÈ˹¤´¦Àí£¬Äܹ»½ÚÊ¡´óÁ¿ÈËÁ¦³É±¾£¬¶øÇÒÔ¤²â˰·ÖÀà±àÂë׼ȷÂÊ´ï
95% ÒÔÉÏ£¬´ËÍâϵͳ֧³Ö³ÖÐøÑ§Ï°¸üУ¬ÏµÍ³Éý¼¶Ê±Ö»ÐèÒªÌæ»»Ä£ÐÍÎļþ£¬¸üкÍά»¤¶¼·Ç³£·½±ã¡£ |