å°ãæéãçµã£ãŠããŸããŸããããSentencepiceãšãããã¥ãŒã©ã«èšèªåŠçåãã®ããŒã¯ãã€ã¶ã»è±ããŒã¯ãã€ã¶ãå ¬éããŸãããMeCabãKyTeaãšãã£ãåèªåå²ãœãããŠãšã¢ãšã¯è¶£æšãç®çãç°ãªããœãããŠã§ã¢ã§ãã®ã§ãå°ãäžå¯§ã«Sentencepieceã®èæ¯ãå¿çšãå®éšçµæçãã話ããããšæããŸãã
ãµãã¯ãŒã
ãã¥ãŒã©ã«èšèªåŠçã®äžå¿ãšãªãèŠçŽ æè¡ã«LSTM (RNN)ããããŸããããã¹ã(ããŒã¯ã³å)ãäœæ¬¡å ã®ãã¯ãã«ã«ç¬Šå·åãããããã¯ãã«ããããã¹ãã埩å·åãããããã®å¿çšç¯å²ã¯å€å²ã«ããããŸãããã¥ãŒã©ã«æ©æ¢°ç¿»èš³ (NMT) ã¯ãLSTMã«ãã笊å·åã»åŸ©å·åãçµã¿åãããŠç¿»èš³ãè¡ããŸãã
âââââââ ããªãã®èšäºã®å
容
NMTã®ã¢ãŒããã¯ãã£ã¯åŸæ¥æ³ãšå€§ããç°ãªããŸãããå
¥åºåã¯ãããŸã§ãšåæ§ããªã«ãããã®ããŒã¯ã³åã§ããã©ã®ãããªåã§ãããã®ã§ãããæ
£ç¿çã«åèªåã䜿ãããŠããŸãããå€ãã®äººãäœãèããã«ãMeCab(+neologd)ã§åå²ããçµæãLSTMã«é£ãããŠããã®ã§ã¯ãªãã§ããããããããåèªããã®ãŸãŸæ±ãã®ã¯å®çšäžã®åé¡ç¹ããããŸããRNNã«ããããã¹ãçæã§ã¯ãèªåœãµã€ãºã«äŸåããèšç®éãå¿
èŠãšãªãããå€§èŠæš¡ãªèªåœãæ±ããŸãããé«é »åºŠèªåœã®ã¿ã«éå®ããããšã§èšç®éã®åé¡ã¯åé¿ã§ããŸãããäœé »åºŠèªãæšãŠãããŠããŸããŸãã
âââââââ
NMTã®ã¢ãŒããã¯ãã£ã¯åŸæ¥æ³ãšå€§ããç°ãªããŸãããå
¥åºåã¯ãããŸã§ãšåæ§ããªã«ãããã®ããŒã¯ã³åã§ããã©ã®ãããªåã§ãããã®ã§ãããæ
£ç¿çã«åèªåã䜿ãããŠããŸãããå€ãã®äººãäœãèããã«ãMeCab(+neologd)ã§åå²ããçµæãLSTMã«é£ãããŠããã®ã§ã¯ãªãã§ããããããããåèªããã®ãŸãŸæ±ãã®ã¯å®çšäžã®åé¡ç¹ããããŸããRNNã«ããããã¹ãçæã§ã¯ãèªåœæ°ã«äŸåããèšç®éãå¿
èŠãšãªããããå€§èŠæš¡ãªèªåœãæ±ããŸãããé«é »åºŠèªåœã®ã¿ã«éå®ããããšã§èšç®éã®åé¡ã¯åé¿ã§ããŸãããäœé »åºŠèªãæšãŠãããŠããŸããŸãã
âââââââ ç·šéãªã¯ãšã¹ãã®å
容
ãã®åé¡ã解決ããææ³ã®äžã€ãSentencepieceã®åå°ãšããªã£ããµãã¯ãŒãã§ãã1
ãµãã¯ãŒãã®ã¢ã€ãã¢ã¯éåžžã«ç°¡åã§ããèŠã¯ãäœé »åºŠèªã¯æåãéšåæååã«ãã©ãŒã«ããã¯ããŸããããšããã ãã§ããå ·äœçã«ã¯ãäºåã«ããã¹ããåèªåå²ããååèªã®é »åºŠãæ±ããŠãããŸãããã®ãšãã«ãé«é »åºŠã®åèªã¯1åèªãšããŠæ±ããäœé »åºŠèªã¯ããçãåäœã«åå²ããŸããæçµçãªããŒã¯ã³æ°ãäºåã«äžãããããµã€ãº(éåžžæ°åããæ°äžä»¥äž)ã«ãªãããã«åå²ãé²ããŠãããŸãã
Byte Pair Encoding (BPE) ã¯ãããã¹ãã®å§çž®çãç®ç颿°ã«ããŠã貪欲çã«åå²ã決å®ããŠãããµãã¯ãŒãåå²ã¢ã«ãŽãªãºã ã§ããBPEã¯ããšããšããŒã¿å§çž®ã®åéã§ææ¡ãããææ³ã§ãããNMTã®ããŒã¯ã³åã«é©çšãããã®å¹æãå ±åãããŠããŸãã
ãµãã¯ãŒãã«ããå®è³ªæªç¥èªããªããªããŸããã©ããªäœé »åºŠèªã§ãæçµçã«ã¯æåã®ãªãã³ã«ãã©ãŒã«ããã¯ãããŸãããŸããæ°åããæ°äžçšåºŠã®èªåœãµã€ãºã«ãªãããåå²ãè¡ãããããåŠçé床ãåäžããŸããããã«ãããã¹ãã®å§çž®çãããŒã¹ã«æé©åãè¡ããããããã¹ãçææã®ã¹ãããæ°ãããã»ã©å¢å ããŸãããä»®ã«ãæåãã§åå²ããŠããŸããšãèªåœãµã€ãºã¯æžããŸããã¹ãããæ°ã®å¢å ãåé¡ã«ãªããŸãããµãã¯ãŒãã¯èªåœãµã€ãºãšã¹ãããæ°ã®ãã©ã³ã¹ãããŸããšã广ããããŸãã
ãµãã¯ãŒãããSentencepieceãž
ãµãã¯ãŒãã¯ã·ã³ãã«ãªã¢ã€ãã¢ã«ãããããããã®å¹æã¯æ³å以äžã§ããããããåèªåããã¹ã¿ãŒãããŠããã®ãæ°ã«ãªããŸããè±èªçã®ãšãŒãããèšèªã®å Žåãåèªã®åå®ã¯å®¹æã§ãããæ¥æ¬èªã»äžåœèªã«ãµãã¯ãŒããé©çšããããšãããšãäºåã«MeCabãKyTeaçã§åå²ããªããšãããŸããããã®äºåã®åå²åŠçããªããšãé§éã§ããªãããšæã£ãŠäœã£ãã®ã Sentencepieceã§ãã
Sentencepieceã¯ãåèªåããã¹ã¿ãŒãããã®ã§ã¯ãªããçæããçŽæ¥åå²ãåŠç¿ããŸããã¢ã€ãã¢ã¯ããã ãã§ããã以äžã®ãããªæ¡åŒµãå ããŠããŸãã
- BPEã®é«éå: Sennrichããåèªãªã¹ãããBPEãåŠç¿ããçç±ã«èšç®éããããŸãããã€ãŒãã«å®è£ ãããšèšç®éã¯$O(n^2)$(nã¯ããã¹ãé·)ã«ãªããããåèªåå²ã«ããæ¢çŽ¢ç©ºéã®åæžã¯å¿ é ã§ãããSentencepieceã§ã¯ $O(n log n)$ã®ã¢ã«ãŽãªãºã ãæ¡çšããŠãããå€§èŠæš¡ãªçæããçŽæ¥åŠç¿ã»åå²ãå¯èœã§ãã
- èšèªã¢ãã«ããŒã¹ã®åå²: BPEãšã¯å¥ã«ãèšèªã¢ãã«ããŒã¹ã®å岿æ³ãå®è£ ããŠããŸãã倧éæãªæ¯èŒãšããŠãBPEã¯ããŒã¯ã³æ°ãç®ç颿°ã«ãããèŸæžã«åºã¥ãå§çž®ãèšèªã¢ãã«ã¯å°€åºŠãæå€§åãããšã³ããããŒå§çž®ãšã¿ãªããŸããã©ã¡ããããã¹ããå§çž®ãããšããæå³ã§ã¯åãã§ããæçµçãªåå²çµæãèŠããšãBPEã®è²ªæ¬²æ³ã«ãããšã©ãŒãæ£èŠãããèšèªã¢ãã«ã®ã»ããæ£ããåå²ãããŠããããã§ãã2
- End to End åŠçã«åããããã¹ãã®å¯éåå²: ããã¯åŸè¿°ããŸãã
以äžã«åå²äŸã瀺ããŸããSentencePieceã§ã¯ãäœé »åºŠã®åºæåè©ã¯æååäœã«åå²ãããŸãããé«é »åºŠã®æ©èœèªå(ãã«ããããããã)ã¯1ããŒã¯ã³ã«ãªã£ãŠããããšãããããŸããçµæãå岿°ãããã»ã©å€ããããšãªããèªåœãµã€ãºã1/10 (8k) ã«ãŸã§å§çž®ããŠããŸãã
| åå²ææ³ | åå² | å岿° |
|---|---|---|
| SentencePiece (8k) | æ¬ å±± 㯠ã è¶³å©çŸ© æº ã«ãã å»ºç« ããã äº¬éœ ã® çž åœ å¯º ã | 15 |
| KyTea | æ¬å±± 㯠ã è¶³å© çŸ©æº ã« ã ã å»ºç« ã ã ã äº¬éœ ã® çžåœ 寺 ã | 17 |
| MeCab | æ¬å±± 㯠ã è¶³å© çŸ©æº ã«ãã å»ºç« ã ã ã äº¬éœ ã® çžåœå¯º ã | 14 |
| MeCab-neologd | æ¬å±± 㯠ã è¶³å©çŸ©æº ã«ãã å»ºç« ã ã ã äº¬éœ ã® çžåœå¯º ã | 12 |
ããã¹ãã®å¯éåå²
ãè±ããŒã¯ã³åããšã¯ãããŒã¯ã³åããããšã®æã埩å ããåŠçã®ããšãæããŸãã圢åŒçã«ã¯ãããŒã¯ã³å(åèªåå²)ã®é倿ã«çžåœãããŠãŒã¶ã«æç€ºããæååãçæããéèŠãªåŠçã§ãããã®è±ããŒã¯ã³åãåçŽããã«èŠããŠããŒã¯ã³åãšåæ§ãèšèªäŸååŠçã®å¡ã§ãã
äŸãã° âHello World.â ãšããæã¯ [Hello] [World] [.] ã®3ã€ã®ããŒã¯ã³ã«åå²ã§ããŸããè±ããŒã¯ã³åã¯ãã®é倿ãããªãã¡3ããŒã¯ã³ããããšã®æãçæããåŠçã§ããã[Hello] ãš [World] ã®éã«ã¯ã¹ããŒã¹ãå ¥ãã[World] ãš [.] ã¯çµåãããšãã£ãããã«åŠçãåããªããã°ãªããŸãããèšèªãå€ãããšã©ãã§ãããïŒ æ¥æ¬èªã® [ããã«ã¡ã¯] [äžç] [ã] ã®å Žåãã¹ããŒã¹ã¯äžèŠã§ãã
ã¹ããŒã¹ãå ¥ãããå ¥ããªãããšãã倿ã¯äœãæ ãæã«ããã°ããã®ã§ãããïŒ ããããããªããã¡ãã£ãšããã«ãŒã«ã§äœãšããªã... ãããããããªã«çãã¯ãããŸããã
- [I] [said] ["] [Hello] ["] â I said "Hello"
ãããããã ã¯ã©ãŒããéãã»éãã§ã¹ããŒã¹ã®äœçœ®ãå€ããã - [20] ["] [display] â 20" display
" ãåäœãšããŠäœ¿ããããšå·Šã«çµåããã - [ABC] [-] [DEF] â ABC - DEF or ABC-DEF?
èšå·åã¯ãã¯ãããšã®è¡šèšã«ã¹ããŒã¹ããã£ããããããªãã - [ë] [ë] [íì] [ì
ëë€] â ëë íìì
ëë€
éåœèªã¯åååãã¡æžããããããåè©ã«ãã£ãŠæ¯ãèããå€ããã
ãããŸã§ãè±ããŒã¯ã³åã¯ãèšèªãšæåçš®ãæãããã«ãç®ãèŠããããªããããªè€éãªã«ãŒã«ã§å®è£ ãããŠããŸãããæå 端ãªNLPããã£ãŠãã®ã«ããããããšããã¯åäžçŽã®ãã¯ãããžãŒã«æªã ã«äŸåããŠããçŸå®ã«ãã©ã³ã¹æèŠã®ãªããæããŸããå人çã«ã¯çã£å ã«é§éããã察象ã§ããããŸãã
è±ããŒã¯ã³åãè€éã«ãªããããåŸãªãçç±ã¯ãããŒã¯ã³åã®éã«ãã¹ããŒã¹ã®æç¡æ å ±ãäžåèœãšããŠããããšã«ãããŸãã
Sentencepieceã¯ãã¹ããŒã¹ãéåžžã®ããŒã¯ã³ãšããŠæ±ããŸããå ·äœçã«ã¯ãNFKCçã®èšèªéäŸåã®åçŽãªããã¹ãæ£èŠååŠçãè¡ã£ãããšã䟿å®çã«ã¹ããŒã¹ãã¡ã¿æå("â" (U+2581)) ã«çœ®ãæããŸãã
HelloâWorld.
ãã®ããšãBPEãèšèªã¢ãã«ã«åºã¥ãæåž«ãªãåå²ãè¡ããŸããäŸãã°ä»¥äžã®ããã«åå²ããããšããŸãã
[Hello] [âWor] [ld] [.]
ããŒã¯ã³åã«å ã®ã¹ããŒã¹ã®æ å ±ãæ®ã£ãŠãããããè±ããŒã¯ã³åã¯ä»¥äžã®æäœã§ææ§æ§ãªãè¡ããŸãã
detokenized = ''.join(pieces).replace('_', ' ')
ããŒã¯ã³åãšè±ããŒã¯ã³åã察称æ§ãæã¡ãå¯é倿ã«ãªãããšã§æ§ã ãªå©ç¹ãçãŸããŸãããŸããèšèªäŸåã®åŠçããªããããŒã¿ããæåž«ãªãã§åå²ãåŠç¿ãããããè§£æã»çæãå«ããŠå®å šãª End-to-End åŠçãå¯èœã«ãªããŸãããŸããã·ã¹ãã ãåºåããããŒã¯ã³åãæ å ±ãèœãšãããšãªããã£ãããã®ãŸãŸå¥ã®åŠçã®å ¥åãšããŠåå©çšã§ããŸããå€èšèªåŠçãè€æ°èšèªã®ã³ãŒãã¹ãæ··ããŠåäžã®Sentencepieceã¢ãã«ãåŠç¿ããã°ãèšèªããšã«åŠçãåãæ¿ããå¿ èŠããããŸããã
å®éš
åŸæ¥ã®åèªå岿æ³(MeCab,MeCab+nelogd,KyTea)ãšSentencepieceãæ©æ¢°ç¿»èš³ãå¿çšã«æ¯èŒããŠã¿ãŸããã
çµæã¯ãã¡ããã芧ãã ãã
Sentencepieceã¯ãã£ã8000ã®èªåœãµã€ãº(ãããè±èªã𿥿¬èªã§å ±æ)ã«ãããããããåŸæ¥ã®åèªå岿æ³ãåãBLEUã¹ã³ã¢ãéæã§ããŠããŸããããã«è峿·±ãããšã«ãäžæãããã®ããŒã¯ã³æ°ã¯Sentencepieceã䜿ã£ãŠãããã»ã©å€§ããå€ãã£ãŠããŸãããSentencepieceã¯ããã¹ããå°ãªããã©ã¡ãŒã¿ã§è¡šçŸããçµæãšããŠç¿»èš³ç²ŸåºŠã®åäžã«è²¢ç®ããã®ã§ã¯ãªãããšèããŸãã
MeCab+neologd ã¯ãä»ã®å岿æ³ã«æ¯ã¹ãŠBLUEã¹ã³ã¢ãèããäœãããšãããããŸããneologdã¯ãæ£ææ§ã®é«ãåºæºã§èªåœã決å®ãããŠãããããçµ±èšçå§çž®ãåºç€ãšããSentencepieceãšã¯å¯Ÿæ¥µã«ããåèªå岿æ³ã§ããå°ãªããšãNMTã§ã¯ãçµ±èšçã«äžè²«æ§ã®ããå岿æ³ã䜿ã£ãã»ããããããã§ãã
ãããã«
Sentencepieceã«éã£ãããšã§ã¯ãããŸããããå¿çšã«å³ããåèªåå²ã䜿ãã¹ãã ãšãããŸã§äž»åŒµããŠããŸãããæå³åŠçãªãJUMAN, é³å£°ãããããš unidic, æ å ±æœåºã ãš neologd ãšãã£ãå¡©æ¢ ã§ãã
ãã¥ãŒã©ã«èšèªåŠçã«ãããã«é©ããå岿æ³ãéžã¶å¿ èŠããããŸããåä»ãªããšã«ããããŸã§è¯ããšèããããŠããåºæºãææ³çã«æ£ããåå²ããèªåœã®ãµã€ãºãã¯åœ¹ã«ç«ããªãã©ãããæãšããŠé广ã®ããã§ããåèªåå²ã«éããããã¥ãŒã©ã«èšèªåŠçã¯ãããŸã§ã®åžžèãéçšããªãã£ãããèŠããããããªçµæãåºãããšãæ¥åžžè¶é£¯äºã§ãã
ãã¥ãŒã©ã«ãããã¯ãŒã¯ã¯ããããŸã§äººæã§ãã¥ãŒã³ãããŠããç¹åŸŽæœåºã»ååŠçã®èªååã«å€§ããè²¢ç®ããŠããŸãããããŒã¯ã³åãäžçš®ã®ç¹åŸŽæœåºãšã¿ãªãã°ãäžæã«å€éšç¥èã䜿ãããã¯ãããŒã¿ããçŽæ¥åŠã°ããã»ãã End-to-End ãšããŠã®æ§èœåäžãæåŸ ã§ããŸããSentencepieceã䜿ã£ãŠã¿ãããªã£ãã§ããããïŒ