@enjoyjs/node-mecab
Version:
MeCab wrapper for Node.js
2 lines (1 loc) • 1.36 kB
JavaScript
import i from"dargs";import p from"execa";var o=e=>e==="*"?void 0:e,s=e=>{switch(e){case"0":return"NORMAL";case"1":return"UNKNOWN";case"2":return"BOS";case"3":return"EOS";case"4":return"EON";default:return"UNKNOWN"}};var l=(e="")=>{let[r,t,n,m,b,d,y,g,N]=e.split(",");return{pos:o(r),posSubs:[o(t),o(n),o(m)],conjugatedType:o(b),conjugatedForm:o(d),basicForm:o(y),reading:o(g),pronunciation:o(N)}},a=e=>e.split(/\r?\n/).map(r=>{let t=r.split(" ");return{id:Number(t[0]),surface:t[1]??"",feature:l(t[2]),startPosition:Number(t[3]),endPosition:Number(t[4]),rcAttr:Number(t[5]),lcAttr:Number(t[6]),posid:Number(t[7]),charType:Number(t[8]),stat:s(t[9]),isbest:Boolean(Number(t[10])),alpha:Number(t[11]),beta:Number(t[12]),prob:Number(t[13]),cost:Number(t[14]),_:t.slice(15)}});var u=async(e,r={})=>{let{stdout:t}=await p("mecab",i(r),{input:e});return t},c=(e,r={})=>{let{stdout:t}=p.sync("mecab",i(r),{input:e});return t},x=async(e,r={})=>{let t=await u(e,{...r,outputFormatType:"dump"});return a(t)},F=(e,r={})=>{let t=c(e,{...r,outputFormatType:"dump"});return a(t)},M=async(e,r={})=>(await u(e,{...r,outputFormatType:"wakati"})).split(/\r?\n/).map(n=>n.trim().split(" ")),j=(e,r={})=>c(e,{...r,outputFormatType:"wakati"}).split(/\r?\n/).map(n=>n.trim().split(" "));export{u as analyze,c as analyzeSync,x as tokenize,F as tokenizeSync,M as wakati,j as wakatiSync};