ããã³ãï¼å ¨ææ¤ç´¢ã¨ã³ã¸ã³Sennaã®æ°ããAPIã«ã¤ãã¦ã®ç´ æ¡ã
ã¿ããªã[Senna-dev 884]ã®ã¡ã¼ã«ã¯èªãã ããªï¼ï¼
全文検索エンジンSennaの新しいAPIについての素案ãã¤ãã«å
¬éããã¾ããã
ä»ã¾ã§ã®APIã®ã»ã¨ãã©ãå·æ°ããã¨ãã
大æ¹é ï¼åçããã©ã¼ã¢ãã¿ã¼çAPI群ã§ãï¼APIã®å ï¼ã
ãã§ããã®æ°ããAPI群ã§ä½ãã§ããããã«ãªãã®ã§ããããã
ç°¡åã«è¨ãã¨ã
ãSennaã¯ããã¼ã¿ãã¼ã¹ã«ãªãã¾ãï¼ã
ã¨ããã¤ã¤ããå
¨ææ¤ç´¢æ©è½ãå
å®ãããããã«ã
ãã¼ã¿ãã¼ã¹çæ©è½ãå¼·åãããã¨ããæãã«ãªã£ã¦ããã¾ããã
ãã¼ã¿ãã¼ã¹æ©è½
æ°ããSennaã§ã¯ãè¤æ°ã®ãã¼ãã«ã¨ãããã®ãæã¤ãã¨ãã§ãã¾ãã
ãã¼ãã«ã¯ãè¤æ°ã®ã¬ã³ã¼ããæã¤ãã¨ãã§ãã¾ãã
ã¬ã³ã¼ãã¯ãè¤æ°ã®ã«ã©ã ãæã¤ãã¨ãã§ãã¾ãã
ã«ã©ã ã¯ãããåã®ãã¼ã¿ãä¿æãã¾ãã
ä¸è¬çãªRDBMSã®ï¼æ¬¡å
表ãã¾ãã¯ã¤ã¡ã¼ã¸ãã¦ãã ããã
ãã¤ã³ã1. ã¬ã³ã¼ããã¨ã«ã«ã©ã ã追å ã§ãã
Sennaã®æ°ããAPI群ã§ã¯ãã¬ã³ã¼ãæ¯ã«ã«ã©ã ã追å ãããã¨ãã§ãã¾ãã
ã¨ããããã§ãäºæ¬¡å
表ã§ã¯ãªããç©´ããã®äºæ¬¡å
表ãã¤ã¡ã¼ã¸ããã¨ããã§ããããã
ãã¡ãããããã«ã©ã ã§ã®çµè¾¼ã¿ãã½ã¼ããã°ã«ã¼ãåãªã©ã®æä½ãè¡ããã¨ãã§ãã¾ãã
ãã¤ã³ã2. å¤é¨åç §ãé«é
ããããå¤é¨åç
§ãé«éã«è¡ããå®è£
ã¨ãªã£ã¦ããã¾ãã
å
·ä½çã«ããã¨ãã«ã©ã ã«ä¿æããåã¨ãã¦ãä»ã®ãã¼ãã«ãã®ãã®ãæå®ãããã¨ãã§ãã¾ãã
ãã®ããã«æå®ãããã«ã©ã ã¯ãä»ã®ãã¼ãã«ã¸ã®åç
§ãä¿æãã¾ãã
ãã¤ã³ã3. å¼·åãªããã¯
ãã¼ãã«ã»ã«ã©ã ãåç
§ãããã¯æ´æ°ããã¿ã¤ãã³ã°ã§ã
ä»»æã®é¢æ°ãå¼ã³åºããã¨ãã§ãã¾ãã
ããªã¬ã¼ã®ãããªãã®ã§ãã
ãã®é¢æ°ã§ãå¤ããã£ã«ã¿ããããå¤ã横åããããã
ããããã¤ãã³ããã®ãã®ãæ¡ãã¤ã¶ããããããã¨ãã§ãã¾ãã
以ä¸ã®ï¼ã¤ã®ãã¤ã³ãã大ããªç¹å¾´ã¨ãªã£ã¦ããã¾ãã
ãã以å¤ã«ãããã¼ãã«ã®ã¿ã¤ãã3ã¤ãã£ããã
ãã¼ãã«ãç©çãã¡ã¤ã«ã«ãããããããã¡ã¢ãªä¸ã ãã«ä½ããé¸ã¹ããâ¦
ãªã©ããããç¹å¾´ãããã¾ããã
大éæã«èª¬æããã¨ãããªæãã§ãã
å ¨ææ¤ç´¢ã¤ã³ããã¯ã¹ã®æ¡å¼µ
ä»ã¾ã§ã®Sennaã§ã¯ã
主ã«sen_indexã¨ããåã«ã¤ãã¦ã®æä½ãè¡ããã¨ã«ãã£ã¦ã
å
¨ææ¤ç´¢ã¤ã³ããã¯ã¹ã¸ã®æä½ãè¡ã£ã¦ãã¾ããã
sen_indexã¯ãå é¨çã«ã¯ä»¥ä¸ã®3ã¤ã®æ§é ããæãç«ã£ã¦ãã¾ãã
- ææ¸ID表
- èªå½è¡¨
- 転置ã¤ã³ããã¯ã¹
ææ¸ID表ã¯ãSennaå
é¨ã§ã®ææ¸IDçªå·ã¨ãå¤é¨ã§ã®ææ¸IDã¨ã®å¯¾å¿ä»ããããããã®è¡¨ã§ãã
å¤é¨ã§ã®ææ¸IDã®å®ä¾ã¨ãã¦ã
Tritonnã§ããã°MyISAMã®ã¬ã³ã¼ãä½ç½®ã
Ludiaã§ããã°tuple idãæãããã¾ãã
èªå½è¡¨ã¨ã¯ãææ¸å
ã«ç»å ´ããåèªããã¹ã¦ç»é²ãããããããã«èªå½IDçªå·ã対å¿ä»ãããã¦ãã表ã§ãã
N-gramãèªå½ã¨ããã®ã§ããã°ã1ã¾ãã¯2æåã®æååãèªå½è¡¨ã«ç»é²ããã
MeCabã§åãåããããå½¢æ
ç´ ãèªå½ã¨ããã®ã§ããã°ãå½¢æ
ç´ ãèªå½è¡¨ã«ç»é²ããã¾ãã
転置ã¤ã³ããã¯ã¹ã¨ã¯ã
èªå½IDçªå·ãã¨ã«æ¤ç´¢ãã¼ã¿ãä¿æãããã¼ã¿æ§é ã§ãã
ããèªå½ãå«ãææ¸ã«ã¤ãã¦ãSennaå
é¨ã§ã®ææ¸IDçªå·ã®åãèªå½ãã¨ã«ä¿åãã¦ãã¾ãã
(æ¬å½ã¯ããã¡ãã£ã¨æ
å ±ãä¿æãã¦ããã®ã§ããã説æã®ç°¡ååã®ããçç¥)
ãã®ï¼ã¤ã®æ§é ãç¨ãããã¨ã«ãã£ã¦ãå
¨ææ¤ç´¢ãè¡ããã¨ãã§ãã¾ãã
å
·ä½çã«ã¯ã
ãæ¤ç´¢ãã¼ã¯ã¼ããâ
ãæ¤ç´¢ãã¼ã¯ã¼ãã®èªå½IDçªå·ãâ
ãSennaå
é¨ã§ã®ææ¸IDçªå·ã®åãâ
ãå¤é¨ã§ã®ææ¸IDçªå·ã®åã
ã®ããã«é çªã«è¡¨ãå¼ããã¨ã«ãããæ¤ç´¢çµæã®ææ¸ID群ãå¾ããã¨ãã§ããããã§ãã
Sennaã®æ°APIã§ã¯ãID表ã¨èªå½è¡¨ã«ã¤ãã¦ãSennaãã¼ã¿ãã¼ã¹ã®ãã¼ãã«ãç¨ãããã¨ãã§ãã¾ãã
転置ã¤ã³ããã¯ã¹ã®ã¿ãinv index columnã¨ããç¹æ®ãªã«ã©ã ãç¨æããã¦ãã¾ãã
ID表ã¨èªå½è¡¨ãä¸è¬çãªãã¼ãã«ã¨ãªã£ãã¨ãããã¨ã¯ã
ããããã®ã¬ã³ã¼ãã«å¥½ããªã«ã©ã ã追å ã§ããã¨ãããã¨ã§ãã
ID表ã«ã«ã©ã ã追å ãããã¨ã«ããããããªãã¨ãåºæ¥ãããã«ãªãã§ãããã
- æ¥ä»ã«ã©ã ã追å ãã¦ããã®æ¥ä»ã§ã®é«éãªçµè¾¼ã¿ã»ã½ã¼ãã»ã°ã«ã¼ãå
- ç¡å¹åãã©ã°ã追å ãã¦ãæ¤ç´¢çµæããå³æã«é¤å¤ããã
â¦ã¤ã¾ãã
- ææ¸ãã¨ã«è¤æ°ã®å±æ§å¤ãä¿åã§ãã
- å±æ§å¤ã§çµè¾¼ã¿ã»ã½ã¼ãã»ã°ã«ã¼ãåãã§ããããããã¯ãç¨ãã¦ãã¾ãã¾ãªæä½ãè¡ã£ããã§ããã
ã®ï¼ã¤ã®ä½µãæã§åºæ¥ããã¨ãå¢ããã¨ãããããªã®ã§ãã
èªå½è¡¨ã«ã«ã©ã ã追å ãããã¨ã«ãã£ã¦ããããªãã¨ãåºæ¥ãããã«ãªãã§ãããã
- queryå¼ãç¨ããå ´åã§ãTF-IDFã«ããã¹ã³ã¢è¨ç®ãå¯è½ã«
- æ¤ç´¢ã¹ãããã¯ã¼ããªã©ã®å®ç¾
- ããèªå½ã«é¢ãã¦ã®ã¹ã³ã¢ã ããä¸ä¸ããæä½
- ææ¸ç»é²æ¥å¥ã®èªå½ã®ç·åºç¾æ°ãã«ã©ã ã«è¿½å ãã¦ãããºã¯ã¼ãã®æ¤åº
â¦ã¤ã¾ãã
- èªå½ãã¨ã«è¤æ°ã®å±æ§å¤ãä¿åã§ãã
- å±æ§å¤ã§çµè¾¼ã¿ã»ã½ã¼ãã»ã°ã«ã¼ãåãã§ããããããã¯ãç¨ãã¦ãã¾ãã¾ãªæä½ãè¡ã£ããã§ããã
ã®ï¼ã¤ã®ä½µãæã§åºæ¥ããã¨ãå¢ããã¨ãããããªã®ã§ãã
夢ãåºããã¾ããããã§ããã¼ã
æ©ã¿æ·±ãAPIè¨è¨â¦
å¼ç¤¾Sennaãã¼ã ã¯APIã®è¨è¨ã«æ©ãã§ããã®ã§ãã
大ä½ããããªãã¨ã§æ©ãã§ããã¾ãã
- ããã©ã¼ãã³ã¹ãçºæ®ã§ããããã«â¦
- å®ç¨çãªããã«â¦
- ããããªè¨èªã§ãã¤ã³ãã£ã³ã°ãæ¸ããããããã«â¦
- APIä»æ§ãå®å®ããããã«â¦
ã¨ããããã§ã
- ãã®APIããããããã¢ããªã±ã¼ã·ã§ã³ãæ¸ãã«ãã
- ãã®APIããããããè¨èªã ã¨ãã¤ã³ãã£ã³ã°ãæ¸ãã«ãã
- ããããããããæ©è½ã欲ãã
ãªã©ã¨ããããã³ãã大åéãã¦ããã¾ãã
senna-devã¡ã¼ãªã³ã°ãªã¹ããããã°ãªã©ã§ã
æ¯éæ¯éããã³ã¿ã¾ãã£ã¦ãã ããï¼ï¼ï¼
é«éã§å®ç¨çã§æè»ã§å®å®ããæ¤ç´¢ã¨ã³ã¸ã³ãç®æãã¦ãããããï¼ï¼
ã¨ããããã§ããå¾ ã¡ãããã¦ãããã¾ãããã ã ï¾ï½¬ï¾ï¾ï¾ï¾ï¾ï¾ï¾ï¾ï¾ï¼by æ¥æ¬ç´è²©