ããã¹ãã¯ãšãªãSQLã«å€æããããã®ã·ã¹ãã
ãã®ãããªã·ã¹ãã ãã§ããã¹ãããšïŒ
- ããŒã¿ããŒã¹ãšã³ãã£ãã£ã«å¯Ÿå¿ããããã¹ãå ã®ãšã³ãã£ãã£ïŒããŒãã«ãåãå Žåã«ãã£ãŠã¯å€ïŒãæ€çŽ¢ããŸãã
- ãªã³ã¯ããŒãã«ããã©ãŒã ãã£ã«ã¿ãŒã
- è¿ãããããŒã¿ã®ã»ãããå®çŸ©ããŸããã€ãŸããéžæãªã¹ããäœæããŸãã
- ãµã³ããªã³ã°é åºãšè¡æ°ã決å®ããŸãã
- æ¯èŒçæçœãªãã®ã«å ããŠãåºæ¬ã¹ããŒãã®èšèšè 以å€ã®èª°ã«ãäžéæãªããã€ãã®çµ¶å¯Ÿçã«æé»ã®äŸåé¢ä¿ãŸãã¯ãã£ã«ã¿ãŒãç¹å®ããŸãïŒäžã®å³ã®bonus_typeãã£ãŒã«ãã®æ¡ä»¶ãåç §ããŠãã ããïŒ
- ãšã³ãã£ãã£ãéžæããéã®ãããŸããã解決ããŸãããã€ã¯ããã«é¢ããããŒã¿ãæããŠãã ããã-çžææ¹ãŸãã¯ãã®å§ã®åŸæ¥å¡ã«é¢ããæ å ±ãèŠæ±ããå¿ èŠããããŸããïŒ2æã®åŸæ¥å¡ããŒã¿-æ¡çšæ¥ãŸãã¯è²©å£²æ¥ã§ãµã³ãã«ãå¶éããŸããïŒç
ã€ãŸããæåã®ã¹ãããã§ã¯ãä»ã®ãã¹ãŠã®NLPã·ã¹ãã ã§äœæ¥ããå Žåãšåãããã«ã¯ãšãªãè§£æããŠããããã®å Žã§SQLãçæããããäºåã«æºåããããã©ã¡ãŒã¿åãããSQLã¯ãšãªãèšè¿°ãããŠãã颿°ã§æé©ãªã€ã³ãã³ããèŠã€ããå¿ èŠããããŸããäžèŠãããšãæåã®ãªãã·ã§ã³ã¯ã¯ããã«å°è±¡çã§ããããã«ã€ããŠãã£ãšè©³ãã話ããŸãããã
ãã®ãããªã·ã¹ãã ã®ç¹åŸŽã¯ãå®éã«ã¯1ã€ã®ã€ã³ãã³ãã®ã¿ãã·ã¹ãã ã«ç»é²ãããã¢ãã«ãšå°ãªããšãäœããã®é¢ä¿ããããã¹ãŠã«å¯ŸããŠããªã¬ãŒããããã¹ãŠã®ã¿ã€ãã®ã¯ãšãªã«å¯ŸããŠSQLãçæããã¹ãŒããŒé¢æ°ãããããšã§ããSQLã¯ãã¢ã«ãŽãªãºã çã«ããŸãã¯ãã¥ãŒã©ã«ãããã¯ãŒã¯ã®åå ã«ãããä»»æã®ã«ãŒã«ã«åºã¥ããŠäœæã§ããŸãã
ã¢ã«ãŽãªãºã ãšã«ãŒã«
äžèŠãããšãããè§£æãããæãSQLã«å€æããã¿ã¹ã¯ã¯ãçŽç²ã«ã¢ã«ãŽãªãºã ã®åââé¡ã§ããã€ãŸããåé¡ãªã解決ã§ããŸããèªèããããšã³ãã£ãã£ãåç §ãçžäºåç §ãªã©ã1ã€ã®åŒ·åãªã¢ãã«ãå¥ã®ã¢ãã«ã«å€æããããã«å¿ èŠãªãã®ã¯ãã¹ãŠæã£ãŠããããã§ããããããæ®å¿µãªããããã¥ã¢ã³ã¹ãšãããŸããã¯ããã€ãã®ããã«ããã¹ãŠãè€éã«ãããã®å Žåã100ïŒ ãŠãããŒãµã«ã¢ãããŒããã»ãšãã©æ©èœãããŸãããã¢ãã«ã¯äžå®å šã§ããïŒäžèšããã³èšäºã«æ²¿ã£ãäŸãåç §ïŒããšã³ãã£ãã£ã¯ååãšæå³ã®äž¡æ¹ã§äº€å·®ãããšã³ãã£ãã£ã®æ°ã®å¢å ã«äŒŽãè€éãã®å¢å€§ãšããŒã¹ã®è€éãã¯éç·åœ¢ã«ãªããŸãã
ãã¥ãŒã©ã«ãããã¯ãŒã¯
ãã®ãããªã·ã¹ãã ã§ã®ãã¥ãŒã©ã«ãããã¯ãŒã¯ã®äœ¿çšã¯ãæ¥éã«çºå±ããŠããåéã§ãããã®èšäºã®æ çµã¿ã®äžã§ãç§ã¯ãªã³ã¯ãšç°¡åãªçµè«ã«ãšã©ãŸããŸãã
ç§ã¯èšäºã®çãã·ãªãŒãºãèªãããšãå©èšããïŒ 1ã 2ã 3ã 4ã 5ã¯ã圌ãã¯çè«ãå質ã®ããã®ãã¬ãŒãã³ã°ãšãã¹ããè¡ãããŠãããã«ã€ããŠã®è©±ããœãªã¥ãŒã·ã§ã³ã®ç°¡åãªæŠèŠã®ããªãå«ãŸããŠããŸããããã«ã ããã§-SparkNLPã®è©³çްã ãã¡ã-SalesForceã®Photonãœãªã¥ãŒã·ã§ã³ã«ã€ããŠãåèæç®ã«ãããšã ãªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã®ãã1ã€ã®ä»£è¡šè ã§ããAllennlpã ããã«-ã·ã¹ãã ã®å質ã«é¢ããããŒã¿ãã€ãŸããã¹ãçã ããã¯ãNLPã©ã€ãã©ãªãç¹ã«äŒæ¥ã§ã®åæ§ã®ãœãªã¥ãŒã·ã§ã³ã®äœ¿çšã«é¢ããããŒã¿ã§ãã
ãã®æ¹åæ§ã«ã¯çŽ æŽãããæªæ¥ããããŸããããã¯ãäºçŽãå¿ èŠã§ãããŸã ãã¹ãŠã®ã¿ã€ãã®ã¢ãã«ã«å¯Ÿå¿ããŠããããã§ã¯ãããŸãããã¢ãã«ãæäœãããšãã«ãå®å šã«å³å¯ãªæ°å€ãååŸããå¿ èŠããªããæ£ç¢ºã§åçŸæ§ã®ããäºæž¬å¯èœãªçµæãââä¿èšŒããå¿ èŠããªãå ŽåïŒããšãã°ãåŸåã®ç¹å®ãææšã®æ¯èŒãäŸåé¢ä¿ã®ç¹å®ãªã©ïŒããã¹ãŠåé¡ãããŸãããããããåçã®éæ±ºå®æ§ãšç¢ºççæ§è³ªã¯ãå€ãã®ã·ã¹ãã ã§ã®ãã®ãããªã¢ãããŒãã®äœ¿çšã«å¶éã課ããŸãã
ãã¥ãŒã©ã«ãããã¯ãŒã¯ã«åºã¥ãã·ã¹ãã ã§ã®äœæ¥äŸ
å€ãã®å Žåããã®çš®ã®ãµãŒãã¹ãæäŸããäŒæ¥ã¯ãããã§ãããããªã§åªããçµæã瀺ãã詳现ãªäŒè©±ã®ããã«ãããã«é£çµ¡ããããšãææ¡ããŸãããããããããäžã§å©çšå¯èœãªãªã³ã©ã€ã³ãã¢ããããŸãããã®å ŽåãããŒã¹ãã€ã¢ã°ã©ã ã¯ç®ã®åã«ãããããPhotonã詊ãã®ã¯ç¹ã«äŸ¿å© ã§ãããããªãã¯ãã¡ã€ã³ã§èŠã2çªç®ã® ãã¢ã¯ãAllennlpããã®ãã®ã§ããäžéšã®ã¯ãšãªã®è§£æã¯ããã®æŽç·ŽåºŠãé©ãã¹ããã®ã§ãããäžéšã®ãªãã·ã§ã³ã¯ããæåããŠããŸãããå šäœçãªå°è±¡ã¯ãŸã¡ãŸã¡ã§ããèå³ãããã°ããããã®ãã¢ã§éãã§ã¿ãŠãèªåã®æèŠã圢æããŠãã ããã
äžè¬çã«ãç¶æ³ã¯éåžžã«è峿·±ããã®ã§ãããã¥ãŒã©ã«ãããã¯ãŒã¯ã«åºã¥ããŠããã¹ãã®éæ§é åã¯ãšãªãSQLã«èªå倿ããã·ã¹ãã ã¯ãŸããŸãè¯ããªããåæ Œãããã¹ãã»ããã®å質ã¯ãŸããŸãé«ããªã£ãŠããŸãããããã§ããã®å€ã¯ãããã70ïŒ ãè¶ ããŸããïŒ ã¹ãã€ããŒããŒã¿ã»ãã-仿¥ã®çŽ69ïŒ ïŒæ¥ïŒããã®çµæã¯è¯ããšèŠãªãããšãã§ããŸããïŒãã®ãããªã·ã¹ãã ã®éçºã®èгç¹ããã¯ããã¡ãããçµæã¯å°è±¡çã§ããããã¹ãŠã®ã¿ã€ãã®ã¿ã¹ã¯ã倿Žããã«å®éã®ã·ã¹ãã ã§ãããã䜿çšããããšã¯äžå¯èœã§ãã
ApacheNlpCraftããŒã«
Apache NlpCraftãããžã§ã¯ãã¯ããã®ãããªã·ã¹ãã ã®æ§ç¯ãšæŽçã«ã©ã®ããã«åœ¹ç«ã¡ ãŸããïŒåé¡ã®æåã®éšåïŒããã¹ãã¯ãšãªã®è§£æïŒã«ã€ããŠè³ªåããªãå Žåããã¹ãŠãéåžžã©ããã§ããæ¬¡ã«ã2çªç®ã®éšåïŒNLPããŒã¿ã«åºã¥ãSQLã¯ãšãªã®åœ¢æïŒã§ã¯ãNlpCraftã¯100ïŒ å®å šãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸãããããã®åé¡ãåå¥ã«è§£æ±ºããã®ã«åœ¹ç«ã€ããŒã«ã®ã¿ãæäŸããŸãã ..ã
ã©ãããå§ããŸããïŒéçºããã»ã¹ãå¯èœãªéãèªååãããå Žåã¯ãããŒã¿ããŒã¹ã¹ããŒãã®ã¡ã¿ããŒã¿ãšããŒã¿èªäœã圹ç«ã¡ãŸããããŒã¿ããŒã¹ããæœåºã§ããæ å ±ããªã¹ãããŸããç°¡åã«ããããã«ãããŒãã«ã«éå®ããããªã¬ãŒãã¹ãã¢ãããã·ãŒãžã£ãªã©ã®åæã¯è¡ããŸããã
- â . , .
- (null / not null) (where clause).
- , foreign keys , 1:1, 1:0, 1:n, n:m. joins.
- . , , .. , select list.
- . . - â , â enumeration, . .
- . , . .
- Primary and unique keys â , , , .
- (, , Oracle) â .
- å¶çŽã®ç¢ºèª-å¶çŽã®ç¥èã¯ããããã®åã«ãã¹ãŠåããã£ã«ã¿ãŒãäœæããã®ã«åœ¹ç«ã¡ãŸãã
ãããã£ãŠãã¡ã¿ããŒã¿ãååŸããŠããå Žåã¯ãã¢ãã«ã®ãšã³ãã£ãã£ã«ã€ããŠãã§ã«å€ãã®ããšãç¥ã£ãŠããŸãããããã£ãŠãããšãã°ãããçæ³çãªäžçã§ã¯ã以äžã®è¡šã«ã€ããŠã»ãšãã©ãã¹ãŠãç¥ã£ãŠããŸãã
CREATE TABLE users (
id number primary key,
first_name varchar(32) not null,
last_name varchar(64) not null unique,
birthday date null,
salary_level_id number not null foreign key on salary_level(id)
);
å®éã«ã¯ããã¹ãŠãããã»ã©ãã©è²ã§ã¯ãªããååãçç¥ãããŠå€èªã§ããªããªããããŒã¿ã¿ã€ããå®å šã«äºæããªããã®ã«ãªãããšãå€ãã鿣èŠåããããã£ãŒã«ãã1ïŒ0ã®ãããªæ¥ãã§è¿œå ãããããŒãã«ããã¡ãã¡ã«æ£ãã°ã£ãŠããŸãããã®çµæãçŸå®çã«ã¯ãé·æéçç£ãããŠããããŒã¿ããŒã¹ã®ã»ãšãã©ã¯ãäºåã®æºåãªãã«ãšã³ãã£ãã£ãèªèããã®ã«éåžžã«å°é£ã«ãã䜿çšã§ããŸãããããã¯ãã¹ãŠã®ã·ã¹ãã ã«åœãŠã¯ãŸãããã¥ãŒã©ã«ãããã¯ãŒã¯ã«åºã¥ããŠãããããããä»ã®ã·ã¹ãã ãããããã«åœãŠã¯ãŸããŸãã
ãã®ç¶æ³ã§ã¯ãNLPã¢ãžã¥ãŒã«ã«ãããçšåºŠæŽç·Žãããã¹ããŒã ïŒæ£ãããã£ãŒã«ãåãå¿ èŠãã€ååãªããŒãã«ãšåã®ã»ãããã»ãã¥ãªãã£ã®åé¡ãªã©ãå«ããäºåã«æºåããããã¥ãŒã®ã»ããïŒãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããšããå§ãããŸãã
èšèšãéå§ãã
äž»ã§éåžžã«åçŽãªèãã¯ããã¹ãŠã®ãŠãŒã¶ãŒèŠæ±ãã«ããŒããããšã¯ã»ãšãã©äžå¯èœã§ãããšããããšã§ãããŠãŒã¶ãŒãã·ã¹ãã ãæ¬ºããšããç®æšãèšå®ãããããæ··ä¹±ããããããªè³ªåããããå Žåã圌ã¯ç°¡åã«ãããè¡ããŸããéçºè ã®ä»äºã¯ãéçºäžã®ã·ã¹ãã ã®æ©èœãšãã®å®è£ ã®è€éãã®ãã©ã³ã¹ããšãããšã§ãããããã£ãŠãéåžžã«åçŽãªã¢ããã€ã¹ããããŸããããããã¹ãŠã®ãªãã·ã§ã³ã«å¯ŸããŠSQLãçæãã1ã€ã®ãŠãããŒãµã«ã¡ãœããã䜿çšããŠããã¹ãŠã®è³ªåã«çãã1ã€ã®ãŠãããŒãµã«ã€ã³ãã³ãããµããŒãããããšããªãã§ãã ããã100ïŒ ã®æ±çšæ§ãæŸæ£ããŠã¿ãŠãã ããããããžã§ã¯ãã®ã«ã©ãã«ããå°ãæžããŸãããããå®çŸå¯èœã«ãªããŸãã
- ãŠãŒã¶ãŒã«è³ªåããæãäžè¬çãªã¿ã€ãã®è³ªåã30ã40åæžãçããŸãã
- , , , ..
- . SQL, 20-30 . , . SQL ML text2Sql, .
- . â , , , . â SQL . C â , .
ãã®ãããªå€§éã®äœæ¥ãšååãªãªãœãŒã¹ãããããããã®ãããªåé¡ã®è§£æ±ºã«å¿ èŠãªæéã¯æ¥æ°ã§æž¬å®ãããæçµçã«ã¯ãŠãŒã¶ãŒã®ããŒãºã80ïŒ ã«ããŒããããªãé«å質ã®ããã©ãŒãã³ã¹ãå®çŸããŸããæ¬¡ã«ãæåã®ãã€ã³ãã«æ»ããã€ã³ãã³ãã远å ããŸãã
è€æ°ã®ã€ã³ãã³ãããµããŒããã䟡å€ãããçç±ã説æããæãç°¡åãªæ¹æ³ã¯ãäŸã䜿çšããããšã§ããã»ãšãã©ã®å ŽåããŠãŒã¶ãŒã¯ãããã®ãããªæéã«ã€ããŠããã®ãããªæéã«ã€ããŠç§ãæ¯èŒããŸããããã®ãããªæéã«ã¯å«ãŸãããåæã«...ããªã©ãç¹å®ã®æ°ã®éåžžã«éæšæºçãªã¬ããŒãã«é¢å¿ãæã£ãŠããŸãããã®ãããªã¯ãšãªã«å¯ŸããŠSQLãããã«çæã§ããã·ã¹ãã ã¯ãããŸãããäœããã®æ¹æ³ã§ããããã¬ãŒãã³ã°ãããããã®ãããªã±ãŒã¹ãéžæããŠåå¥ã«ããã°ã©ã ããå¿ èŠããããŸããéãããç¯å²ã®è€éãªã¯ãšãªã«å¿çã§ããããšã¯ããŠãŒã¶ãŒã«ãšã£ãŠéåžžã«éèŠã§ãããã®ãããªãã¹ãŠã®èŠæ±ãæºããã®ã«ååãªãªãœãŒã¹ããããšããäºå®ã§ã¯ãªãããã©ã³ã¹ãããäžåºŠæ¢ããŸããããã®ãããªèŠæãå®å šã«ç¡èŠããããšã¯ãã·ã¹ãã ã®æ©èœã蚱容ã§ããªãã¬ãã«ã«çããããšãæå³ããŸããé©åãªæ¯çãèŠã€ããããã·ã¹ãã ã®éçºã«ã¯æéã®æéãããããæ°æ¥éã¯åãªã楜ããããã¡ãã§ã¯ãªããããåŸã§åœ¹ç«ã€ãšãããããç ©ããããã®ã«ãªããŸããéåžžã«éèŠãªç¹ã¯ãããªãããŒãªãªã¯ãšã¹ãã®ã€ã³ãã³ããããã«è¿œå ããã®ã§ã¯ãªãããã®éçšã§1ã€ãã€è¿œå ã§ããããšã§ããäžåºŠã«1ã€ã®ãŠãããŒãµã«ã€ã³ãã³ãã®ã¿ãæã€MVPããããŸãã
ããŒã«ããããšAPI
Apache NlpCraftã¯ãããŒã¿ããŒã¹æäœãç°¡çŽ åããããã®ããŒã«ããããæäŸããŸãã
æäœæé ïŒ
- ããŒã¿ããŒã¹jdbcurlããã¢ãã«ãã³ãã¬ãŒããçæããŸããäžã§è¿°ã¹ãããã«ãããŒã¿ã®ãããæ£ããã衚çŸã§ãã¥ãŒã®ã»ãããæºåãããã®ã»ãããžã®ã¢ã¯ã»ã¹ãæäŸããæ¹ãè¯ãå ŽåããããŸãããã³ãã¬ãŒããçæããæãç°¡åãªæ¹æ³ã¯ãCLIãŠãŒãã£ãªãã£ã䜿çšããããšã§ãããŠãŒãã£ãªãã£ãèµ·åããããŒã¿ããŒã¹ã¹ããŒããjdbcãã©ã€ãã䜿çšããã³ç¡èŠãããããŒãã«ã®ãªã¹ããããã³ãã®ä»ã®ãã©ã¡ãŒã¿ããã©ã¡ãŒã¿ãšããŠæå®ããŸãã詳现ã«ã€ããŠã¯ãããã¥ã¡ã³ããåç §ããŠãã ããã
- JSON YAML , , , , .., , .
:
- id: "tbl:orders" groups: - "table" synonyms: - "orders" metadata: sql:name: "orders" sql:defaultselect: - "order_id" - "customer_id" - "employee_id" sql:defaultsort: - "orders.order_id#desc" sql:extratables: - "customers" - "shippers" - "employees" description: "Auto-generated from 'orders' table." ..... - id: "col:orders_order_id" groups: - "column" synonyms: - "{order_id|order <ID>}" - "orders {order_id|order <ID>}" - "{order_id|order <ID>} <OF> orders" metadata: sql:name: "order_id" sql:tablename: "orders" sql:datatype: 4 sql:isnullable: false sql:ispk: true description: "Auto-generated from 'orders.order_id' column."
- â , , . , . , , , , , , .. .
- è±å¯ãªã¢ãã«ã«åºã¥ããŠãéçºè ã¯ãã€ã³ãã³ã颿°ã§ã®SQLã¯ãšãªã®æ§ç¯ãå€§å¹ ã«å®¹æã«ããã³ã³ãã¯ããªAPIã䜿çšã§ããŸãã詳现ãªäŸãåç §ããŠãã ããã
以äžã¯ãããããããããããã®ã³ãŒãã¹ããããã§ãã
@NCIntent(
"intent=commonReport " +
"term(tbls)~{groups @@ 'table'}[0,7] " +
"term(cols)~{
id == 'col:date' ||
id == 'col:num' ||
id == 'col:varchar'
}[0,7] " +
"term(condNums)~{id == 'condition:num'}[0,7] " +
"term(condVals)~{id == 'condition:value'}[0,7] " +
"term(condDates)~{id == 'condition:date'}[0,7] " +
"term(condFreeDate)~{id == 'nlpcraft:date'}? " +
"term(sort)~{id == 'nlpcraft:sort'}? " +
"term(limit)~{id == 'nlpcraft:limit'}?"
)
def onCommonReport(
ctx: NCIntentMatch,
@NCIntentTerm("tbls") tbls: Seq[NCToken],
@NCIntentTerm("cols") cols: Seq[NCToken],
@NCIntentTerm("condNums") condNums: Seq[NCToken],
@NCIntentTerm("condVals") condVals: Seq[NCToken],
@NCIntentTerm("condDates") condDates: Seq[NCToken],
@NCIntentTerm("condFreeDate") freeDateOpt: Option[NCToken],
@NCIntentTerm("sort") sortTokOpt: Option[NCToken],
@NCIntentTerm("limit") limitTokOpt: Option[NCToken]
): NCResult = {
val ext = NCSqlExtractorBuilder.build(SCHEMA, ctx.getVariant)
val query =
SqlBuilder(SCHEMA).
withTables(tbls.map(ext.extractTable): _*).
withAndConditions(extractValuesConditions(ext, condVals): _*).
...
// SQL
// .
}
ããã¯ããªã¯ãšã¹ãã§å®çŸ©ãããåºæ¬èŠçŽ ã«åå¿ããç §åããã»ã¹äžã«å³å¯ãªäžèŽãèŠã€ãããªãã£ãå Žåã«ããªã¬ãŒãããããã©ã«ãã®ã€ã³ãã³ã颿°ã®ãã©ã°ã¡ã³ãã§ããããã¯ãSQLã¯ãšãªã®æ§ç¯ãšSQLãã«ããŒã®äŸã®æäœã«é¢ä¿ããSQLèŠçŽ æœåºAPIã®äœ¿çšæ³ã瀺ããŠããŸãã
ç¹°ãè¿ãã«ãªããŸãããApache NlpCraftã¯ãè§£æãããããã¹ãã¯ãšãªãSQLã«å€æããããã®æ¢è£œã®ããŒã«ãæäŸããŠããŸããããã®ã¿ã¹ã¯ã¯ãå°ãªããšãçŸåšã®ããŒãžã§ã³ã§ã¯ããããžã§ã¯ãã®ç¯å²å€ã§ããã¯ãšãªãã«ããŒã³ãŒãã¯ãAPIã§ã¯ãªãäŸã§å©çšã§ããŸããé倧ãªå¶éããããŸãããã³ã¡ã³ãä»ãã®ã³ãŒãã¯500è¡ã®ã¿ãã³ã¡ã³ããªãã®ã³ãŒãã¯çŽ300è¡ã§æ§æãããŠããŸããåæã«ããã®ãã¹ãŠã®åçŽããšå¶éããããããŸããããã®æãåçŽãªå®è£ ã§ãããéåžžã«å€ãã®æã倿§ãªã¿ã€ãã®ãŠãŒã¶ãŒã¯ãšãªã«å¿ èŠãªSQLãçæã§ããŸãããã®ããŒãžã§ã³ã§ã¯ããã®äŸã䜿çšããããã«åæ§ã®ã·ã¹ãã ã®æ§ç¯ã«é¢å¿ã®ãããŠãŒã¶ãŒã«ææ¡ããŸã ãã³ãã¬ãŒããšããŠäœæããããŒãºã«åãããŠéçºããŸããã¯ããããã¯äžæ©ã®äœæ¥ã§ã¯ãããŸãããããŠãããŒãµã«ãœãªã¥ãŒã·ã§ã³ãæ£é¢ãã䜿çšããå Žåãããæ¯é¡ã®ãªãé«å質ã®çµæãåŸãããŸãã
ç§ã¯ããã©ã«ãã®æææ©èœã§ãããªãã¯ã©ã¡ããã ãã®äŸã倿Žããããšãã§ãããšããããšãç¹°ãè¿ã äŸïŒã¬ãã¥ãŒã«ãããšããã®æ©èœã¯ååã§ãããïŒããŸãã¯ãã¥ãŒã©ã«ãããã¯ãŒã¯ã§äœ¿çšãããœãªã¥ãŒã·ã§ã³ã
çµè«
ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããã®ã·ã¹ãã ãæ§ç¯ããããšã¯ç°¡åãªäœæ¥ã§ã¯ãããŸãããã Apache NlpCraftã¯ãã§ã«æ¥åžžæ¥åã®ããªãã®éšåãåŒãç¶ãã§ããããããäž»ãªçç±ã§ããŸãšããªå質ã®ã·ã¹ãã ã®éçºã«ã¯æž¬å®å¯èœãªæéãšãªãœãŒã¹ãããããŸããApache NlpCraftã³ãã¥ããã£ãããã¹ãã¯ãšãªã®SQLãžã®å€æãèªååããæ¹åæ§ãéçºãããã®åçŽãªSQLã®äŸãæ¬æ ŒçãªAPIã«æ¡åŒµãããã©ãã-ãããžã§ã¯ãã®èšç»ãšæ¹åæ§ã圢æããæéãšãŠãŒã¶ãŒã®èŠæ±ã瀺ãããŸãã