
NERïŒååä»ããšã³ãã£ãã£èªèïŒã³ã³ããŒãã³ããã€ãŸãååä»ããšã³ãã£ãã£ãæ€çŽ¢ããããã®ãœãããŠã§ã¢ã³ã³ããŒãã³ãã¯ãããã¹ãå ã®ãªããžã§ã¯ããæ€çŽ¢ããå¯èœã§ããã°ãããããæ å ±ãååŸããå¿ èŠããããŸããäŸ-ã22æã®ãã¹ã¯ããã ããããæ°å€NERã³ã³ããŒãã³ãã¯ãæå®ãããããã¹ãã§ã22ããšãããã¬ãŒãºãèŠã€ãããããã®åèªããæ°å€æ£èŠåå€ã22ããæœåºããŸããããã§ããã®å€ã䜿çšã§ããŸãã
NERã³ã³ããŒãã³ãã¯ããã¥ãŒã©ã«ãããã¯ãŒã¯ã«åºã¥ãããšããã«ãŒã«ãå éšã¢ãã«ã«åºã¥ããŠæ©èœããããšãã§ããŸããäžè¬çãªNERã³ã³ããŒãã³ãã¯ãå€ãã®å Žåã2çªç®ã®æ¹æ³ã䜿çšããŸãã
ããã¹ãå ã®æšæºãšã³ãã£ãã£ãèŠã€ããããã®ããã€ãã®æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãèããŠã¿ãŸãããããã®æçš¿ã§ã¯ãå¶éä»ãã®ç¡æãŸãã¯ç¡æã®ã©ã€ãã©ãªã«çŠç¹ãåœãŠããã®åé¡ã®ãã¬ãŒã ã¯ãŒã¯å ã§ApacheNlpCraftãããžã§ã¯ãã§äœãè¡ããããã«ã€ããŠã説æããŸãã以äžã®ãªã¹ãã¯ã詳现ã§è©³çŽ°ãªæŠèŠã§ã¯ãªãããããã¯ãŒã¯äžã«ãã§ã«ååãªæ°ããããŸããããããã®ã©ã€ãã©ãªã䜿çšããäž»ãªæ©èœãé·æãšçæã®ç°¡åãªèª¬æã§ãã
NERã³ã³ããŒãã³ããããã€ããŒ
Apache OpenNlp
Apache OpenNlpã¯ãæ¥ä»ãæå»ãå°çãçµç¹ãæ°å€ã®ããŒã»ã³ããŒãžãããã³äººãåŠçãããè±èªçšã®ããªãæšæºçãªNERã³ã³ããŒãã³ãã®ã»ãããæäŸããŸããå°ããªã»ããã¯ä»ã®èšèªïŒã¹ãã€ã³èªããªã©ã³ãèªïŒã§ãå©çšã§ããŸãã
é ä¿¡ïŒ
Javaã©ã€ãã©ãªã Apache OpenNlpã¯ãã¡ã€ã³ãããžã§ã¯ãã«ã¢ãã«ã忢±ããŠããŸããããããã¯åå¥ã«ããŠã³ããŒãã§ããŸãã
é·æïŒ
Apacheã©ã€ã»ã³ã¹ãã¢ãã«ã¯å€ãã®å®è£ ã§ãã¹ããããŠããŸãã
ãã€ãã¹ïŒ
ã©ããããã¢ãã«ã¯çç±ã®ããã«ã¡ã€ã³ãããžã§ã¯ãããåé€ãããŸãããæ°ããã¢ãã«ãæ¢åã®ã¢ãã«ã®å€æŽãããªãé·ãéèŠãããªãã£ãããããããã®äœæ¥ã忢ãããŠããããæ°ã®ãããããã«ãã£ãããšããããŒã¹ã§é²ãã§ãããšããå°è±¡ãåããŸããApache OpenNlpãŠãŒã¶ãŒã¯ç¬èªã®ã¢ãã«ãäœæããŠãã¬ãŒãã³ã°ã§ããããããã®ã¿ã¹ã¯ã¯å®éã«ã¯å®å šã«ãŠãŒã¶ãŒã«ä»»ãããŠããå¯èœæ§ããããŸãã
ã¹ã¿ã³ãã©ãŒãNlp
ã¹ã¿ã³ãã©ãŒãNLPã¯ãåªããå質ãšå¹ åºãå¯èœæ§ãåãããæŽ»æ°ã«æºã¡ãçµ¶ããé²åãã補åã§ããè±èªã®å Žåãæ¬¡ã®ãšã³ãã£ãã£ãèªèããããã®ãµããŒãã远å ãããŸããïŒäººãå Žæãçµç¹ããã®ä»ããéãæ°ãé åºãããŒã»ã³ããæ¥ä»ãæéãæéãã»ãããããã«ãçµã¿èŸŒã¿ã®Regex NERã³ã³ããŒãã³ãã䜿çšãããšãé»åã¡ãŒã«ãURLãéœåžãstate_or_provinceãåœãåœç±ã宿ãïŒåœ¹è·ïŒã¿ã€ãã«ãã€ããªãã®ãŒãcriminal_chargeãcause_of_deathãhandleãªã©ã®ãšã³ãã£ãã£ãé«ç²ŸåºŠã§èŠã€ããããšãã§ããŸãããªã³ã¯ã®è©³çްããã€ãèªãã¹ãã€ã³èªãäžåœèªã®éå®çãªNERãµããŒããçºè¡šãããŸãããèªèã®å質ã¯ããªã³ã©ã€ã³ãã¢ã䜿çšããŠãã¹ãã§ããŸãã
äŸçµŠïŒ
Javaã©ã€ãã©ãªãã¢ãã«ã¯ããããžã§ã¯ããšäžç·ã«MavenããããŠã³ããŒãã§ããŸãã
è±èªä»¥å€ã®èšèªã®NERã³ã³ããŒãã³ãã®ãªã¹ããšè©³çްãªèª¬æã¯ã©ãã«ãèŠã€ãããŸããã§ããããªã³ã¯1ã2 -ç°ãªãèšèªã®ããã®ç¬èªã®NERã³ã³ããŒãã³ããèšç·Žããããã»ã¹ã®äŸãäžããããŠããŸããç°¡åã«èšãã°ãä»ã®èšèªã䜿çšããæ©èœãçºè¡šãããŠããŸãããããããåãå¿ èŠããããŸãã
é·æïŒ
ãããžã§ã¯ãå šäœããã³æ¢è£œã®ã¢ãã«ã§äœæ¥ããããšããã®æèŠãæãããžãã£ãã§ããããããžã§ã¯ãã¯åç¶ããçºå±ããèªèå質ã¯è¯å¥œã§ãïŒãè¯å¥œãã¯æ¡ä»¶ä»ãã®æŠå¿µã§ãããNERã³ã³ããŒãã³ãèªèã®å質ãç¹åŸŽä»ããã¡ããªãã¯ããããŸããããã®åé¡ã¯èšäºã®ç¯å²ãè¶ ããŠããŸãïŒã
ãã€ãã¹ïŒ
ããã¥ã¡ã³ãã®æ··ä¹±ã¯å¥ãšããŠããããã¯å°ããã§ããéèŠãªäººã¯ãã©ã€ã»ã³ã¹ã«æ³šæããŠãã ãããGNU General Public Licenseã¯Apacheãšã¯ç°ãªããããããšãã°ããã®ã©ã€ã»ã³ã¹ãæã€è£œåãApacheãªã©ã§ã©ã€ã»ã³ã¹ãããŠãã補åã«è¿œå ããããšã¯ã§ããŸããã
GoogleèšèªAPI
è±èªçšã®GoogleèšèªAPIã¯ãå人ãå Žæãçµç¹ãã€ãã³ããwork_of_artãconsumer_goodãotherãphone_numberãaddressãdateãnumberãpriceã®ãšã³ãã£ãã£ã®ãªã¹ãããµããŒãããŠããŸãã
ãã©ãããã©ãŒã ïŒ
REST APIãSaaSãRESTãä»ããæ¢è£œã®ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãå©çšå¯èœã§ãïŒJavaãCïŒãPythonãGoãªã©ïŒã
é·æïŒ
NERã³ã³ããŒãã³ããéçºãå質ã®å€§èŠæš¡ãªã»ããã¯ãæåãªã€ã³ã¿ãŒãããã®å·šäººã«ãã£ãŠæäŸãããŸãã
çæïŒ
ç¹å®ã®ããªã¥ãŒã ããå§ããŠã䜿çšã¯æ¯æãããŸãã
空é
ãã®ã©ã€ãã©ãªã¯ãèªèããµããŒããããŠãããšã³ãã£ãã£ã®æãå¹ åºãã»ããã®1ã€ãæäŸããŸãããµããŒããããŠãããšã³ãã£ãã£ã®ãªã¹ãã«ã€ããŠã¯ããªã³ã¯ãåç §ããŠãã ããã
ãã©ãããã©ãŒã ïŒ
Pythonã
æ®å¿µãªãããç£æ¥å©çšã®å人çãªçµéšãäžè¶³ããŠããããããã®ã©ã€ãã©ãªã®é·æãšçæã®å®éã®èª¬æã远å ããããšã¯ã§ããŸãããããã«ãPythonNLPãœãªã¥ãŒã·ã§ã³ã®è©³çŽ°ãªæŠèŠã¯ãã§ã«habrã§å ¬éãããŠããŸãã
äžèšã®ãã¹ãŠã®ã©ã€ãã©ãªã䜿çšãããšãç¬èªã®ã¢ãã«ããã¬ãŒãã³ã°ã§ããŸãããŸããããããã¹ãŠïŒApache OpenNlpãé€ãïŒã§ã¯ãèŠã€ãã£ããšã³ãã£ãã£ããæ£èŠåãããå€ãæœåºã§ããŸããã€ãŸããã¯ãšãªã§èŠã€ãã£ãæ°å€ãšã³ãã£ãã£ã173ãããæ°å€ã173ããååŸã§ããŸãã
ã芧ã®ãšãããååä»ããšã³ãã£ãã£ãèŠã€ããåé¡ã解決ããããã®å€ãã®ãªãã·ã§ã³ãããããããã®éçºã®æ¹åæ§ã¯æããã§ã-ãµããŒããããŠããèšèªãšèªèããããšã³ãã£ãã£ã®ã»ããã®ãªã¹ããæ¡åŒµããèªèã®å質ãåäžãããŸãã
以äžã¯ãApacheNlpCraftãããžã§ã¯ãããã®ãã§ã«é«åºŠã«éçºãããé åã«ããããããã®ã®èŠçŽã§ãã
NlpCraftã«ãã£ãŠæäŸãããè¿œå æ©èœ
- æ°ãããšã³ãã£ãã£çšã®ç¬èªã®NERã³ã³ããŒãã³ããããã€ãã®æ¢åã®ãšã³ãã£ãã£çšã®æ¹åããããœãªã¥ãŒã·ã§ã³ã
- 補å䜿çšã®ãã¬ãŒã ã¯ãŒã¯å ã§ã®äžèšã®ãã¹ãŠã®ã©ã€ãã©ãªã®NERã³ã³ããŒãã³ãã®çµ±åã
- ãè€åãšã³ãã£ãã£ãã®ãµããŒããããã«ããããŠãŒã¶ãŒã¯æ¢åã®ã³ã³ããŒãã³ãã«åºã¥ããŠæ°ããã«ã¹ã¿ã ã³ã³ããŒãã³ããç°¡åã«äœæã§ããŸãã
ããã«ã€ããŠããå°ã詳ãã説æããŸãã
ç¬èªã®NERã³ã³ããŒãã³ã
Apache NlpCraftã®ãã€ãã£ãNERã³ã³ããŒãã³ãã¯ãæ¥ä»ãçªå·ãå°çã座æšãäžŠã¹æ¿ããããã³ããŸããŸãªãšã³ãã£ãã£ã®ç §åãèªèããããã®ã³ã³ããŒãã³ãã§ãããããã®ããã€ãã¯ãŠããŒã¯ã§ãããããã€ãã¯æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®åãªãæ¹åãããå®è£ ã§ãïŒèªè粟床ãåäžããã远å ã®å€ãã£ãŒã«ãã远å ããããªã©ïŒã
æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®çµ±å
äžèšã®ãœãªã¥ãŒã·ã§ã³ã¯ãã¹ãŠãApacheNlpCraftã§äœ¿çšããããã«çµ±åãããŠããŸãã
ãããžã§ã¯ãã§äœæ¥ããå ŽåããŠãŒã¶ãŒã¯å¿ èŠãªã¢ãžã¥ãŒã«ãæ¥ç¶ããç¹å®ã®ã¢ãã«ã®ãšã³ãã£ãã£ãæ€çŽ¢ãããšãã«äœ¿çšããNERã³ã³ããŒãã³ããæ§æã§æå®ããã ãã§ãã
以äžã¯ãããã¹ããæ€çŽ¢ãããšãã«2ã€ã®ãããã€ããŒããã®4ã€ã®ç°ãªãNERã³ã³ããŒãã³ãã䜿çšããæ§æã®äŸã§ãã
"enabledBuiltInTokens": [
"nlpcraft:num",
"nlpcraft:coordinate",
"google:organization",
"google:phone_number"
]
Apache NlpCraftã®äœ¿çšã«ã€ããŠè©³ããã¯ããã¡ããã芧ãã ãããGoogle Language APIã䜿çšããã«ã¯ãæå¹ãªGoogleéçºè ã¢ã«ãŠã³ããå¿ èŠã§ãã
è€åãšã³ãã£ãã£ã®ãµããŒã
è€åãšã³ãã£ãã£ã®ãµããŒãã¯ãäžèšã®æ©èœã®äžã§æãè峿·±ããã®ã§ããããå°ã詳ããèŠãŠãããŸãããã
è€åãšã³ãã£ãã£ã¯ãå¥ã®ãšã³ãã£ãã£ã«åºã¥ããŠå®çŸ©ããããšã³ãã£ãã£ã§ããäŸãèŠãŠã¿ãŸããããã€ã³ãã³ãããŒã¹ã®NLPå¶åŸ¡ã·ã¹ãã ïŒAlexaãGoogle DialogflowãAliceãApacheNlpraftãªã©ãåç §ïŒãéçºããŠããŠãã¢ãã«ãå°ççã«æ©èœãããšããŸãããç±³åœã®ã¿ã§ãã ãnlpcraftïŒcityããªã©ã®å°çæ€çŽ¢ã³ã³ããŒãã³ãã䜿çšããŠãçŽæ¥äœ¿çšã§ããŸãã
ããã«ãã€ã³ãã³ããããªã¬ãŒããããšã察å¿ãã颿°ïŒã³ãŒã«ããã¯ïŒã§ããã£ãŒã«ããåœãã®å€ã確èªããå¿ èŠããããŸããããããã³å¿ èŠãªæ¡ä»¶ãæºãããŠããªãå Žåã¯ã誀æ€ç¥ãé²ããæ©èœãçµäºããŸããæ¬¡ã«ããããã³ã°ã«æ»ããå¥ã®ããé©åãªé¢æ°ãéžæããŠã¿ãŠãã ããã
ãã®ã¢ãããŒãã®äœãåé¡ã«ãªã£ãŠããŸããã
- åŒã³åºããã颿°ããã¡ã€ã³ã¯ãŒã«ãŒã¹ã¬ããã«å¶åŸ¡ãç§»ãããæ»ãããããããšã§ãåŒã³åºããã颿°ã®æäœãã¯ããã«å°é£ã«ãªããŸããããã«ããã¹ãŠã®å¯Ÿè©±ã·ã¹ãã ããã®ãããªå¶åŸ¡è»¢éæ©èœãåããŠããããã§ã¯ãªãããšãèæ ®ãã䟡å€ããããŸãã
- ã€ã³ãã³ããšå®è¡å¯èœãªã¡ãœããã³ãŒãã®éã®ãããã³ã°ããžãã¯ãå¡ãã€ã¶ããŸãã
ããããŸãã...ç¬èªã®NERã³ã³ããŒãã³ããæåããäœæããŠã¢ã¡ãªã«ã®éœåžãèŠã€ããããšãã§ããŸããããã®ã¿ã¹ã¯ã¯5åã§è§£æ±ºãããŸããã
å¥ã®æ¹æ³ã§è©ŠããŠã¿ãŸãããã ïŒå¯èœãªå Žåã¯ãããã®ã·ã¹ãã ã§ïŒæå³ãè€éã«ããåœã«ãã£ãŠããã«ãã£ã«ã¿ãªã³ã°ãããéœåžãæ€çŽ¢ããããšãã§ããŸããããããç¹°ãè¿ããŸããããã¹ãŠã®ã·ã¹ãã ãèŠçŽ ã®ãã£ãŒã«ãã«ããè€éãªãã£ã«ã¿ãªã³ã°ã®å¯èœæ§ãæäŸããããã§ã¯ãããŸãããããã«ãæå³ãè€éã«ããŸããããã¯ãç¹ã«ãããžã§ã¯ãã«å€ãã®ã·ã¹ãã ãããå Žåã¯ãã§ããã ãæç¢ºã§åçŽãªãã®ã«ããå¿ èŠããããŸãã
Apache NlpCraftã¯ãæ¢åã®ã³ã³ããŒãã³ãã«åºã¥ããŠãã€ãã£ãNERã³ã³ããŒãã³ããå®çŸ©ããããã®ã¡ã«ããºã ãæäŸããŸãã以äžã¯æ§æã®äŸã§ãïŒå®å šãªDSLæ§æã¯ããã«ãããŸããèŠçŽ ã®äœæäŸã¯ããã«ãããŸãïŒïŒ
"elements": [
{
"id": "custom:city:usa",
"description": "Wrapper for USA cities",
"synonyms": [
"^^id == 'nlpcraft:city' && lowercase(~city:country) == 'usa')^^"
]
}
]
ãã®äŸã§ã¯ãç¹å®ã®åºæºã§ãã£ã«ã¿ãªã³ã°ãããæ¢åã®ãnlpcraftïŒcityãã«åºã¥ããŠãæ°ããååä»ããšã³ãã£ãã£ãAmericancityã-ãcustomïŒcityïŒusaãã«ã€ããŠèª¬æããŸãã ããã§ãäœæãããæ°ããèŠçŽ ã«åºã¥ããŠã€ã³ãã³ããäœæã§ããŸããããã¹ãã§æ€åºãããç±³åœä»¥å€ã®éœåžã§ã¯ãã€ã³ãã³ããäžèŠã«ããªã¬ãŒãããããšã¯ãããŸããã ããäžã€ã®äŸïŒ
"macros": [
{
"name": "<AIRPORT>",
"macro": "{airport|aerodrome|airdrome|air station}"
}
],
"elements": [
{
"id": "custom:airport:usa",
"description": "Wrapper for USA airports",
"synonyms": [
"<AIRPORT> {of|for|*} ^^id == 'nlpcraft:city' &&
lowercase(~city:country) == 'usa')^^"
]
}
]
ãã®äŸã§ã¯ãååä»ããšã³ãã£ãã£ãç±³åœã®éœåžç©ºæž¯ã-ãã«ã¹ã¿ã ïŒç©ºæž¯ïŒç±³åœããå®çŸ©ããŸããããã®èŠçŽ ãå®çŸ©ãããšããå·ã®æå±ã«åŸã£ãŠéœåžããã£ã«ã¿ãªã³ã°ããã ãã§ãªããéœåžã®ååã®åã«ã空枯ãã®æŠå¿µãå®çŸ©ããå矩èªãä»ãããšãã远å ã®ã«ãŒã«ãèšå®ããŸããã ïŒãã¯ããä»ããèŠçŽ ã®å矩èªã®äœæã«ã€ããŠè©³ããã¯ããã¡ããã芧ãã ããïŒã
è€åèŠçŽ ã¯ãä»»æã®çšåºŠã®ãã¹ãã§å®çŸ©ã§ããŸããã€ãŸããå¿ èŠã«å¿ããŠãæ°ããäœæããããã«ã¹ã¿ã ïŒç©ºæž¯ïŒç±³åœãã«åºã¥ããŠæ°ããèŠçŽ ãèšèšã§ããŸãããŸãã芪ãšã³ãã£ãã£ã®ãã¹ãŠã®æ£èŠåãããå€ããã®å Žåã¯åºæ¬èŠçŽ ãnlpcraftïŒcityãã«ã泚æããŠãã ãããã¯ãcustomïŒairportïŒusaãèŠçŽ ã§ã䜿çšã§ããããªã¬ãŒãããã€ã³ãã³ãã®é¢æ°æ¬äœã§äœ¿çšã§ããŸãã
ãã¡ãããããã«ãã£ã³ã°ãããã¯ãã¯ãOpenNlpãStanfordãGoogleãSpacyãNlpCraftã§ãµããŒããããŠãããã¹ãŠã®æšæºã³ã³ããŒãã³ãã ãã§ãªããã«ã¹ã¿ã NERã³ã³ããŒãã³ãã«å¯ŸããŠãå®çŸ©ã§ãããããã®æ©èœãæ¡åŒµããŠãæ¢åã®ãœãããŠã§ã¢éçºãåå©çšã§ããŸãã
å®éã«ã¯ãæ°ããã¿ã¹ã¯ããšã«æ°ããã³ã³ããŒãã³ããäœæããã®ã§ã¯ãªããåã«ããããæ§æãããããããã®æ©èœãç¬èªã®èŠçŽ ã«ãæ··åãããããšã«æ³šæããŠãã ããã
ãããã£ãŠããè€åãšã³ãã£ãã£ãã䜿çšãããšãéçºè ã¯æ¬¡ã®ããšãã§ããŸãã
- ã€ã³ãã³ããåå©çšå¯èœãªãã«ãã£ã³ã°ãããã¯ã«éšåçã«è»¢éããããšã«ãããã€ã³ãã³ããæ§ç¯ããããžãã¯ãå€§å¹ ã«ç°¡çŽ åããŸãã
- ã¢ãã«ã®ãã¬ãŒãã³ã°ãã³ãŒãã£ã³ã°ãè¡ããã«æ§æã倿ŽããŠãæ°ããåäœã®NERã³ã³ããŒãã³ããå ¥æããŸãã
- æ¢åã®ãã¹ããŸãã¯ã¡ããªãã¯ã«äŸåããŠãæåŸ ãããåè³ªã§æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãåå©çšããŸãã
çµè«
æ¢åã®NERã³ã³ããŒãã³ãã®é·æãšçæã®æŠèŠãèªè ã®åœ¹ã«ç«ã€ããšãé¡ã£ãŠããŸãããŸããApache NlpCraftãæ©èœãå€§å¹ ã«æ¡åŒµããæ¢åã®ãœãªã¥ãŒã·ã§ã³ãæ°ããã¿ã¹ã¯ã«é©å¿ãããæ¹æ³ãçè§£ããããšã§ããããžã§ã¯ãã®éçºããã»ã¹ãã¹ããŒãã¢ããããããšãé¡ã£ãŠããŸãã