åä¾ãç£ã¾ããã®ã«åãåä¾ã®ååãæ¢ç´¢ãããã¼ã«ãä½ãã¾ãããLinuxãmacOSãWindows ã§æ¬¡ã®ããã«ååã®åè£ãåæãã¦ããã¾ãï¼
$ name search --space full å±±ç° --max-length 2 < ./filter.json | tee result.tsv è©ç¹ ç»æ° åå èªã¿ æ§å¥ å¤©æ ¼ å°æ ¼ äººæ ¼ å¤æ ¼ ç·æ ¼ 14 16 ä¸è¾ ã¸ã§ã¦ã¸ ç·æ§ å 大å å 大å 大大å 13 21 ä¸é¨ ã¿ã±ã ç·æ§ å 大å å 大å 大å ...
ååæ¢ç´¢å¨ãéçºããèæ¯
12æã«ç¬¬äºåãç£ã¾ãã¾ããã第ä¸åã¯äººåã§ååãæ¢ç´¢ããã¨ãããã¾ãè¯ãååãæãæµ®ãã°ãè¦å´ããçµé¨ãããã¾ããæçµçã«ã¯å人ã®æãåãã¦å½åããã®ã§ãããä»åãã¾ããä¸è©±ã«ãªãã®ã¯ç³ã訳ãªãã£ããããã·ã¹ãã çãªè§£æ±ºãå³ãã¾ããã
éçºããååæ¢ç´¢å¨ã®ç´¹ä»
kuniwak/name
ã¯ã常ç¨æ¼¢åã¨äººåç¨æ¼¢åãã²ãããªãã«ã¿ã«ããããªãæååã®ç©ºéããæ¡ä»¶ã«å½ã¦ã¯ã¾ãååãæ¢ç´¢ãã¾ããæ¢ç´¢ã®æ¡ä»¶ã¨ã㦠JSON å½¢å¼ã§ãã£ã«ã¿ãæå®ãã¾ãããã£ã«ã¿ã«ãã£ã¦ç©ºéå
ã®æååãããããå¤å®ããããã£ã«ã¿ã®çµæãçãªãçµæã«æ®ããå½ãªãçµæããåãé¤ããã¾ãããã£ã«ã¿ã«ã¯æ¬¡ã®è¦ç´ ã使ãã¾ãï¼
説æ | æ§æ | ä¾ |
---|---|---|
ç | {"true": {}} |
{"true": {}} |
å½ | {"false": {}} |
{"false": {}} |
è«çç© | {"and": [filter...]} |
{"and": [{"yomiCount": {"rune": "ã¢", "count": {"equal": 1}}}, {"yomiCount": {"rune": "ã¤", "count": {"equal": 1}}}]} |
è«çå | {"or": [filter...]} |
{"or": [{"yomiCount": {"rune": "ã¢", "count": {"equal": 1}}}, {"yomiCount": {"rune": "ã¤", "count": {"equal": 1}}}]} |
å¦å®è«ç | {"not": filter} |
{"not": {"yomiCount": {"rune": "ã¢", "count": {"equal": 1}}}} |
æ§å¥ | {"sex": sex} |
{"sex": "asexual"} |
é·ã | {"length": count} |
{"length": 3} |
èªã¿ä»®åã®ã¢ã¼ã©æ° | {"mora": count} |
{"mora": {"equal": 3}} |
ããããèªã¿ä»®å | {"commonYomi": {}} |
{"commonYomi": {}} |
ç»æ° | {"strokes": count} |
{"strokes": {"lessThan": 25}} |
äºæ ¼ããããã®æå°å¤ | {"minRank": 0-4} ï¼4 =大大å, 3 =大å, 2 =å, 1 =å¶, 0 =大å¶ï¼ |
{"minRank": 3} |
äºæ ¼ã®åè¨å¤ã®æå°å¤ | {"minTotalRank": byte} |
{"minTotalRank": 11} |
æå®ããèªã¿ä»®åã®æ° | {"yomiCount": {"rune": string, "count": count}} |
{"yomiCount": {"rune": "ã¢", "count": {"equal": 1}}} |
èªã¿ä»®åã®ããã | {"yomi": match} |
{"yomi": {"equal": "ã¿ãã¦"}} |
æ¼¢åã®ããã | {"kanji": match} |
{"kanji": {"equal": "ã¿ãã¦"}} |
æå®ããæ¼¢åã®æ° | {"kanjiCount": {"rune": string, "count": count}} |
{"kanjiCount": {"rune": "æ¼¢", equal": 1}} |
count |
{"equal": byte} or {"lessThan": byte} or {"greaterThan": byte} |
{"lessThan": 1} |
match |
{"equal": string} or {"startWith": string} or {"endWith": string} |
{"startWith": "ã¿ã"} |
sex |
"asexual" or "male" or "female" |
{"sex": "asexual"} |
ã¡ãªã¿ã«ç§ã®ä½¿ã£ããã£ã«ã¿ã¯æ¬¡ã®ã¨ããã§ãï¼
{ "and": [ {"sex": "male"}, {"mora": {"equal": 3}}, {"minRank": 2}, {"minTotalRank": 11}, {"commonYomi": {}}, {"length": {"equal": 2}}, { "or": [ { "and": [ {"yomiCount": {"rune": "ã¦", "count": {"equal": 1}}}, {"yomiCount": {"rune": "ã¦", "count": {"equal": 0}}}, {"yomiCount": {"rune": "ãµ", "count": {"lessThan": 2}}}, {"yomiCount": {"rune": "ã", "count": {"equal": 0}}} ] }, { "and": [ {"yomiCount": {"rune": "ã¦", "count": {"equal": 0}}}, {"yomiCount": {"rune": "ã¦", "count": {"equal": 1}}}, {"yomiCount": {"rune": "ãµ", "count": {"lessThan": 2}}}, {"yomiCount": {"rune": "ã", "count": {"equal": 0}}} ] }, { "and": [ {"yomiCount": {"rune": "ã¦", "count": {"equal": 0}}}, {"yomiCount": {"rune": "ã¦", "count": {"equal": 0}}}, {"yomiCount": {"rune": "ãµ", "count": {"equal": 0}}}, {"yomiCount": {"rune": "ã", "count": {"equal": 1}}} ] } ] }, {"kanjiCount": {"rune": "æ»", "count": {"equal": 0}}}, {"kanjiCount": {"rune": "亡", "count": {"equal": 0}}}, {"kanjiCount": {"rune": "è¨", "count": {"equal": 0}}}, {"kanjiCount": {"rune": "殺", "count": {"equal": 0}}}, {"kanjiCount": {"rune": "æ·«", "count": {"equal": 0}}}, {"kanjiCount": {"rune": "è", "count": {"equal": 0}}}, {"kanjiCount": {"rune": "è", "count": {"equal": 0}}}, {"kanjiCount": {"rune": "è¡", "count": {"equal": 0}}} ] }
ãã®ãã£ã«ã¿ã§ã¯æä½éã®å§åå¤æã®ã»ããæ§å¥ã®æå®ãã¢ã¼ã©æ°ã®å¶éãé·ãã®å¶éãããããååã®èªã¿ã¨ã®ä¸è´ã親ã¨åã®ååã®åä¸æ§ã®å¶éï¼ç¬¬ä¸åã¨ã®å ¬å¹³æ§ã®ããï¼ãæã¾ãããªãæ¼¢åã®é¤å»ããã¦ãã¾ããå§åå¤æãæ¡ä»¶ã«å ããçç±ã¯ãèªåã®ååãå§åå¤æã«ããã¦ã¿ãã¨ãã¡ãã¨è¯ããã®ã§ãããã¨ãããã親ã¯ã¡ããã¨èãã¦ã¤ãããã ãªãã¨ãããã¨ããããããã§ãã
ãã®ãã£ã«ã¿ã«ãã£ã¦ãç§ã®èåã§ã¯å ¨ç©ºéæ¢ç´¢ã«ããããã 4500 件ã»ã©ã®ååã®åè£ãå¾ããã¾ãããã¨ã¯ããã Google Sheets çã«ã¾ã¨ãã好ã¾ããååãæ½åºããã¨ããã§ãããã5000件æªæºã§ããã° 1h æªæºã§ç®è¦ã«ããé¸å¥ãçµãããã¾ãã
ä»çµã¿
ãã®ãã¼ã«ã¯å ¨ç©ºéæ¢ç´¢ã¨é »åºç©ºéæ¢ç´¢ã®2ã¤ã®æ¢ç´¢ã¢ã¼ããæã£ã¦ãã¾ãï¼
- å
¨ç©ºéæ¢ç´¢
- 常ç¨æ¼¢åã¨äººåç¨æ¼¢åãã²ãããªãã«ã¿ã«ããããªãæååã®ç©ºéããååãæ¢ç´¢ãã¾ããä½éã§ããåè£æ°ã¯å¤ããªãã¾ããæ¢ç´¢ããååã®é·ãã®ä¸éå¤ã«2ãã大ããæ°ãæå®ããã¨åè£æ°ãççºçã«å¢ããããé常ã«ä½éã«ãªãã¾ããååã®èªã¿ã¯ MeCab ã«ãã£ã¦æ¨å®ãã¾ãã
- é »åºç©ºéæ¢ç´¢
s1r-J/jinmei-dict
ã使ããããããååã¨ãã®èªã¿ã®ãã¢ãããªã空éããæ¢ç´¢ãã¾ããé«éã§ããåè£æ°ã¯å°ãªããªãã¾ãã
ãã®æ¢ç´¢ç¯å²ããå¾ãããååã®åè£ã«ã¤ãã¦æ§å¥ãã¢ã¼ã©æ°ãæ¨å®ãã¾ããæ§å¥ã®æ¨å®ã«ã¯ ENAMDICT/JMnedict
ã使ã£ã¦ãã¾ãããããã¦å¾ãããååã®åè£ã¨ä»å æ
å ±ããã¨ã«ãã£ã«ã¿ã®æ¡ä»¶ãæºãããã®ã®ã¿ã表示ãã¾ãã
èªã¿ã®æ¨å®æ¹æ³ã®æ¨¡ç´¢
åè¿°ã®éããèªã¿ã®æ¨å®ã«ã¯ MeCab ã使ã£ã¦ãã¾ããè¾æ¸ã¨ã㦠NEologd ã使ãã¨ç¾ä»£çãªèªã¿ãåºåãã¦ããã¾ãããªã MeCab ã使ãåã«ã¯å¸¸ç¨æ¼¢å + 人åç¨æ¼¢åã®æ¼¢åãã¨ã«æ¨æºçãªèªã¿ã®ãªã¹ãã®ãã«ã«ãç©ãåã£ã¦ãã¾ããããã ãã¾ãã«ã精度ãæªãã£ãããã«å¥ã®æ¹æ³ã模索ã neologd/namelti
ã«ããã¤ãã¾ããï¼Namelti ã®ç´¹ä»è¨äºï¼ãNamelti 㯠NEologd ã®è¾æ¸ã使ã£ã MeCab ã«ãã人åã®èªã¿ãæ¨å®ãããã¼ã«ã§ãã
ã¡ãªã¿ã« Namelti ã®ç²¾åº¦ã®è©ä¾¡ã«ã¯è¦å´ãã¾ããããã®ã¾ã¾ã§ã¯ãã«ãã§ããªããããããããã¦ãå¿
è¦ãããã¾ãããæçµçã« Docker ä¸ã§ãã«ãã«æåãï¼kuniwak/debian-namelti
ã¨ãã¦å
¬éï¼ããã®ç²¾åº¦ãããªããããã¨ããããã¾ããããã Namelti ãã®ã¾ã¾ã使ããã¨ããã¨ããã»ã¹ãå¥ã«ãªããã IPC ãå¿
è¦ã¨ãªãããã® IPC ã¯ååã®åè£æ°ã ãå¼ã³åºãããããå¼ã³åºãã®ãªã¼ãã¼ãããã大ããã§ããNamelti ã®å®è£
ãèªãã ã¨ãããMeCab ãç´ æ´ã«ä½¿ã£ã¦ããã ãã¨ãããã¨ãããã£ããã MeCab ã® Go è¨èªãã¤ã³ãã£ã³ã°ã§ãã shogo82148/go-mecab
ã使ããIPC ã使ããåä½ããããã« Go è¨èªã§ Namelti ãåå®è£
ãã¾ããã
Windows ãã cgo 㧠MeCab ãå¼ã³åºã
ä¸çªè¦å´ããã®ã¯ Windows ç°å¢ã® cgo çµç±ã§ MeCab ãå¼ã³åºããã¨ã§ããshogo82148/go-mecab
ã§ã¯ CGO_LDFLAGS
㨠CGO_CFLAGS
ã mecab-config
ãæ示ããå¤ã§è¨å®ããããæ示ãã¦ãã¾ãããã Windows ã®ã³ãã³ãããã³ããã PowerShell ãããBash ã§å®è£
ããã¦ãã mecab-config ãã®ã¾ã¾ãå¼ã³åºããã¨ãã§ããªããã¨ãã¾ã C:\Program Files\MeCab
ã®ãããªç©ºç½ãå«ããã¹é
ä¸ã«ãããããããªãã¸ã§ã¯ããã¡ã¤ã«ããã㨠cgo ã§æå³ããªãä½ç½®ã§ãã©ã¡ã¼ã¿ã®åºåãã¨å¤å®ããããã¨ããã¼ãã«ã¨ãªãã¾ããããã㧠C# 㧠mecab-config
ãåå®è£
ãããããã®åé¡ã解決ãã¾ããï¼kuniwak/mecab-config-windows
ï¼ããã㯠dotnet tool install -g MecabConfig
ã§ã¤ã³ã¹ãã¼ã«ã§ãã¾ãããã®å®è£
ã§ã¯æ¬¡ã®ããã«ç©ºç½ãå«ããã¹ã§ã cgo ã«æ¸¡ããã©ã¡ã¼ã¿ãæ£ãã解éãããããã«ã¨ã¹ã±ã¼ããã¦ãã¾ãï¼
$ mecab-config --libs "-LC:\Program Files\MeCab\lib" -lmecab -lstdc++
ãã ã¶ã£ã¡ãããWSL2 ã§èµ·åããæ¹ãç¾ä¸å楽ã ã¨æãã¾ããWSL2 ã§ä½¿ã£ã¦ãã ããã
çµããã«
ãããã¦ä½ã£ãååã®æ¢ç´¢å¨ããå¾ãããåè£ããåä¾ã«ååãã¤ãããã¾ããã