@enjoyjs/node-mecab
Advanced tools
| import type { MecabOptions, Token } from './types.js'; | ||
| export declare const analyze: (text: string, options?: Readonly<MecabOptions>) => Promise<string>; | ||
| export declare const analyzeSync: (text: string, options?: Readonly<MecabOptions>) => string; | ||
| export declare const tokenize: (text: string, options?: Readonly<MecabOptions>) => Promise<Token[]>; | ||
| export declare const tokenizeSync: (text: string, options?: Readonly<MecabOptions>) => Token[]; | ||
| export declare const wakati: (text: string, options?: Readonly<MecabOptions>) => Promise<string[][]>; | ||
| export declare const wakatiSync: (text: string, options?: Readonly<MecabOptions>) => string[][]; | ||
| //# sourceMappingURL=command.d.ts.map |
| {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,OAAO,SACb,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,QAAQ,MAAM,CAGhB,CAAC;AAEF,eAAO,MAAM,WAAW,SACjB,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,MAGF,CAAC;AAEF,eAAO,MAAM,QAAQ,SACd,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,QAAQ,KAAK,EAAE,CAGjB,CAAC;AAEF,eAAO,MAAM,YAAY,SAClB,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,KAAK,EAGP,CAAC;AAEF,eAAO,MAAM,MAAM,SACZ,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,QAAQ,MAAM,EAAE,EAAE,CAGpB,CAAC;AAEF,eAAO,MAAM,UAAU,SAChB,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,MAAM,EAAE,EAGV,CAAC"} |
| import type { Feature, Token } from './types.js'; | ||
| export declare const parseFeature: (feature?: string) => Feature; | ||
| export declare const parseDump: (dump: string) => Token[]; | ||
| //# sourceMappingURL=parser.d.ts.map |
| {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAG/C,eAAO,MAAM,YAAY,wBAAmB,OA0B3C,CAAC;AAEF,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,KAAK,EAsB7C,CAAC"} |
| import type { Stat } from './types.js'; | ||
| export declare const mecabNaToUndefined: (text?: string) => string | undefined; | ||
| export declare const getStat: (statId?: string) => Stat; | ||
| //# sourceMappingURL=util.d.ts.map |
| {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,YAAY,CAAC;AAGrC,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,MAAM,GAAG,SAE3D,CAAC;AAEF,eAAO,MAAM,OAAO,YAAa,MAAM,KAAG,IA0BzC,CAAC"} |
| import dargs from 'dargs'; | ||
| import execa from 'execa'; | ||
| import {parseDump} from './parser.js'; | ||
| import type {MecabOptions, Token} from './types.js'; | ||
| export const analyze = async ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): Promise<string> => { | ||
| const {stdout} = await execa('mecab', dargs(options), {input: text}); | ||
| return stdout; | ||
| }; | ||
| export const analyzeSync = ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): string => { | ||
| const {stdout} = execa.sync('mecab', dargs(options), {input: text}); | ||
| return stdout; | ||
| }; | ||
| export const tokenize = async ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): Promise<Token[]> => { | ||
| const dump = await analyze(text, {...options, outputFormatType: 'dump'}); | ||
| return parseDump(dump); | ||
| }; | ||
| export const tokenizeSync = ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): Token[] => { | ||
| const dump = analyzeSync(text, {...options, outputFormatType: 'dump'}); | ||
| return parseDump(dump); | ||
| }; | ||
| export const wakati = async ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): Promise<string[][]> => { | ||
| const wakati = await analyze(text, {...options, outputFormatType: 'wakati'}); | ||
| return wakati.split(/\r?\n/).map((row) => row.trim().split(' ')); | ||
| }; | ||
| export const wakatiSync = ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): string[][] => { | ||
| const wakati = analyzeSync(text, {...options, outputFormatType: 'wakati'}); | ||
| return wakati.split(/\r?\n/).map((row) => row.trim().split(' ')); | ||
| }; |
| import type {Feature, Token} from './types.js'; | ||
| import {getStat, mecabNaToUndefined} from './util.js'; | ||
| export const parseFeature = (feature = ''): Feature => { | ||
| const [ | ||
| pos, | ||
| posSub1, | ||
| posSub2, | ||
| posSub3, | ||
| conjugatedType, | ||
| conjugatedForm, | ||
| basicForm, | ||
| reading, | ||
| pronunciation, | ||
| ] = feature.split(','); | ||
| return { | ||
| pos: mecabNaToUndefined(pos), | ||
| posSubs: [ | ||
| mecabNaToUndefined(posSub1), | ||
| mecabNaToUndefined(posSub2), | ||
| mecabNaToUndefined(posSub3), | ||
| ], | ||
| conjugatedType: mecabNaToUndefined(conjugatedType), | ||
| conjugatedForm: mecabNaToUndefined(conjugatedForm), | ||
| basicForm: mecabNaToUndefined(basicForm), | ||
| reading: mecabNaToUndefined(reading), | ||
| pronunciation: mecabNaToUndefined(pronunciation), | ||
| }; | ||
| }; | ||
| export const parseDump = (dump: string): Token[] => { | ||
| return dump.split(/\r?\n/).map<Token>((row) => { | ||
| const values = row.split(' '); | ||
| return { | ||
| id: Number(values[0]), | ||
| surface: values[1] ?? '', | ||
| feature: parseFeature(values[2]), | ||
| startPosition: Number(values[3]), | ||
| endPosition: Number(values[4]), | ||
| rcAttr: Number(values[5]), | ||
| lcAttr: Number(values[6]), | ||
| posid: Number(values[7]), | ||
| charType: Number(values[8]), | ||
| stat: getStat(values[9]), | ||
| isbest: Boolean(Number(values[10])), | ||
| alpha: Number(values[11]), | ||
| beta: Number(values[12]), | ||
| prob: Number(values[13]), | ||
| cost: Number(values[14]), | ||
| _: values.slice(15), | ||
| }; | ||
| }); | ||
| }; |
+34
| import type {Stat} from './types.js'; | ||
| // Convert MeCab N/A value (*) to `undefined` | ||
| export const mecabNaToUndefined = (text?: string): string | undefined => { | ||
| return text === '*' ? undefined : text; | ||
| }; | ||
| export const getStat = (statId?: string): Stat => { | ||
| switch (statId) { | ||
| case '0': { | ||
| return 'NORMAL'; | ||
| } | ||
| case '1': { | ||
| return 'UNKNOWN'; | ||
| } | ||
| case '2': { | ||
| return 'BOS'; | ||
| } | ||
| case '3': { | ||
| return 'EOS'; | ||
| } | ||
| case '4': { | ||
| return 'EON'; | ||
| } | ||
| default: { | ||
| return 'UNKNOWN'; | ||
| } | ||
| } | ||
| }; |
+1
-4
@@ -1,4 +0,1 @@ | ||
| var P=Object.create;var a=Object.defineProperty,z=Object.defineProperties,h=Object.getOwnPropertyDescriptor,A=Object.getOwnPropertyDescriptors,U=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,x=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var y=(n,e,t)=>e in n?a(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,i=(n,e)=>{for(var t in e||(e={}))g.call(e,t)&&y(n,t,e[t]);if(d)for(var t of d(e))B.call(e,t)&&y(n,t,e[t]);return n},u=(n,e)=>z(n,A(e));var E=(n,e)=>{for(var t in e)a(n,t,{get:e[t],enumerable:!0})},l=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!g.call(n,o)&&o!==t&&a(n,o,{get:()=>e[o],enumerable:!(s=h(e,o))||s.enumerable});return n};var N=(n,e,t)=>(t=n!=null?P(x(n)):{},l(e||!n||!n.__esModule?a(t,"default",{value:n,enumerable:!0}):t,n)),K=n=>l(a({},"__esModule",{value:!0}),n);var D={};E(D,{analyze:()=>p,analyzeSync:()=>c,tokenize:()=>O,tokenizeSync:()=>T,wakatsu:()=>S,wakatsuSync:()=>F});module.exports=K(D);var m=N(require("dargs"),1),b=N(require("execa"),1);const r=n=>n==="*"?void 0:n,W=n=>{switch(n){case"0":return"NORMAL";case"1":return"UNKNOWN";case"2":return"BOS";case"3":return"EOS";case"4":return"EON";default:return"UNKNOWN"}},v=n=>{const[e,t,s,o,w,M,R,f,j]=(n==null?void 0:n.split(","))??[];return{pos:r(e),posSubs:[r(t),r(s),r(o)],conjugatedType:r(w),conjugatedForm:r(M),basicForm:r(R),reading:r(f),pronunciation:r(j)}},k=n=>n.split(` | ||
| `).map(e=>{const t=e.split(" ");return{id:Number(t[0]),surface:t[1]??"",feature:v(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:W(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)}}),p=async(n,e={})=>{const{stdout:t}=await(0,b.default)("mecab",(0,m.default)(e),{input:n});return t},c=(n,e={})=>{const{stdout:t}=b.default.sync("mecab",(0,m.default)(e),{input:n});return t},O=async(n,e)=>{const t=await p(n,u(i({},e),{outputFormatType:"dump"}));return k(t)},T=(n,e)=>{const t=c(n,u(i({},e),{outputFormatType:"dump"}));return k(t)},S=async(n,e)=>(await p(n,u(i({},e),{outputFormatType:"wakati"}))).split(` | ||
| `).map(s=>s.trim().split(" ")),F=(n,e)=>c(n,u(i({},e),{outputFormatType:"wakati"})).split(` | ||
| `).map(s=>s.trim().split(" "));0&&(module.exports={analyze,analyzeSync,tokenize,tokenizeSync,wakatsu,wakatsuSync}); | ||
| "use strict";var T=Object.create;var s=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var F=(e,r)=>{for(var t in r)s(e,t,{get:r[t],enumerable:!0})},b=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of S(r))!x.call(e,a)&&a!==t&&s(e,a,{get:()=>r[a],enumerable:!(n=O(r,a))||n.enumerable});return e};var d=(e,r,t)=>(t=e!=null?T(w(e)):{},b(r||!e||!e.__esModule?s(t,"default",{value:e,enumerable:!0}):t,e)),M=e=>b(s({},"__esModule",{value:!0}),e);var h={};F(h,{analyze:()=>c,analyzeSync:()=>m,tokenize:()=>R,tokenizeSync:()=>P,wakati:()=>z,wakatiSync:()=>U});module.exports=M(h);var p=d(require("dargs"),1),u=d(require("execa"),1);var o=e=>e==="*"?void 0:e,y=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 j=(e="")=>{let[r,t,n,a,g,N,l,f,k]=e.split(",");return{pos:o(r),posSubs:[o(t),o(n),o(a)],conjugatedType:o(g),conjugatedForm:o(N),basicForm:o(l),reading:o(f),pronunciation:o(k)}},i=e=>e.split(/\r?\n/).map(r=>{let t=r.split(" ");return{id:Number(t[0]),surface:t[1]??"",feature:j(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:y(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 c=async(e,r={})=>{let{stdout:t}=await(0,u.default)("mecab",(0,p.default)(r),{input:e});return t},m=(e,r={})=>{let{stdout:t}=u.default.sync("mecab",(0,p.default)(r),{input:e});return t},R=async(e,r={})=>{let t=await c(e,{...r,outputFormatType:"dump"});return i(t)},P=(e,r={})=>{let t=m(e,{...r,outputFormatType:"dump"});return i(t)},z=async(e,r={})=>(await c(e,{...r,outputFormatType:"wakati"})).split(/\r?\n/).map(n=>n.trim().split(" ")),U=(e,r={})=>m(e,{...r,outputFormatType:"wakati"}).split(/\r?\n/).map(n=>n.trim().split(" "));0&&(module.exports={analyze,analyzeSync,tokenize,tokenizeSync,wakati,wakatiSync}); |
+2
-9
@@ -1,10 +0,3 @@ | ||
| import type { MecabOptions, Token } from './types.js'; | ||
| export type { Feature, MecabOptions, Stat, Stats, Token, OutputFormatType, } from './types.js'; | ||
| export { analyze, analyzeSync, tokenize, tokenizeSync, wakatsu, wakatsuSync }; | ||
| declare const analyze: (text: string, options?: Readonly<MecabOptions>) => Promise<string>; | ||
| declare const analyzeSync: (text: string, options?: Readonly<MecabOptions>) => string; | ||
| declare const tokenize: (text: string, options?: Readonly<MecabOptions>) => Promise<Token[]>; | ||
| declare const tokenizeSync: (text: string, options?: Readonly<MecabOptions>) => Token[]; | ||
| declare const wakatsu: (text: string, options?: Readonly<MecabOptions>) => Promise<string[][]>; | ||
| declare const wakatsuSync: (text: string, options?: Readonly<MecabOptions>) => string[][]; | ||
| export * from './command.js'; | ||
| export * from './types.js'; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAU,YAAY,EAAQ,KAAK,EAAC,MAAM,YAAY,CAAC;AAEnE,YAAY,EACX,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,gBAAgB,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC;AA2E5E,QAAA,MAAM,OAAO,SACN,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,QAAQ,MAAM,CAGhB,CAAC;AAEF,QAAA,MAAM,WAAW,SACV,MAAM,YACH,SAAS,YAAY,CAAC,KAC7B,MAGF,CAAC;AAEF,QAAA,MAAM,QAAQ,SACP,MAAM,YACF,SAAS,YAAY,CAAC,KAC9B,QAAQ,KAAK,EAAE,CAGjB,CAAC;AAEF,QAAA,MAAM,YAAY,SACX,MAAM,YACF,SAAS,YAAY,CAAC,KAC9B,KAAK,EAGP,CAAC;AAEF,QAAA,MAAM,OAAO,SACN,MAAM,YACF,SAAS,YAAY,CAAC,KAC9B,QAAQ,MAAM,EAAE,EAAE,CAGpB,CAAC;AAEF,QAAA,MAAM,WAAW,SACV,MAAM,YACF,SAAS,YAAY,CAAC,KAC9B,MAAM,EAAE,EAGV,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"} |
+1
-4
@@ -1,4 +0,1 @@ | ||
| var T=Object.defineProperty,S=Object.defineProperties;var F=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var w=Object.prototype.hasOwnProperty,M=Object.prototype.propertyIsEnumerable;var c=(n,e,t)=>e in n?T(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,o=(n,e)=>{for(var t in e||(e={}))w.call(e,t)&&c(n,t,e[t]);if(p)for(var t of p(e))M.call(e,t)&&c(n,t,e[t]);return n},a=(n,e)=>S(n,F(e));import m from"dargs";import b from"execa";const r=n=>n==="*"?void 0:n,R=n=>{switch(n){case"0":return"NORMAL";case"1":return"UNKNOWN";case"2":return"BOS";case"3":return"EOS";case"4":return"EON";default:return"UNKNOWN"}},f=n=>{const[e,t,s,y,g,l,N,k,O]=(n==null?void 0:n.split(","))??[];return{pos:r(e),posSubs:[r(t),r(s),r(y)],conjugatedType:r(g),conjugatedForm:r(l),basicForm:r(N),reading:r(k),pronunciation:r(O)}},d=n=>n.split(` | ||
| `).map(e=>{const t=e.split(" ");return{id:Number(t[0]),surface:t[1]??"",feature:f(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:R(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)}}),i=async(n,e={})=>{const{stdout:t}=await b("mecab",m(e),{input:n});return t},u=(n,e={})=>{const{stdout:t}=b.sync("mecab",m(e),{input:n});return t},j=async(n,e)=>{const t=await i(n,a(o({},e),{outputFormatType:"dump"}));return d(t)},P=(n,e)=>{const t=u(n,a(o({},e),{outputFormatType:"dump"}));return d(t)},z=async(n,e)=>(await i(n,a(o({},e),{outputFormatType:"wakati"}))).split(` | ||
| `).map(s=>s.trim().split(" ")),h=(n,e)=>u(n,a(o({},e),{outputFormatType:"wakati"})).split(` | ||
| `).map(s=>s.trim().split(" "));export{i as analyze,u as analyzeSync,j as tokenize,P as tokenizeSync,z as wakatsu,h as wakatsuSync}; | ||
| 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}; |
+9
-9
@@ -1,3 +0,3 @@ | ||
| export declare type OutputFormatType = 'wakati' | 'yomi' | 'chasen' | 'dump' | 'simple' | 'none' | 'em'; | ||
| export interface MecabOptions { | ||
| export type OutputFormatType = 'wakati' | 'yomi' | 'chasen' | 'dump' | 'simple' | 'none' | 'em'; | ||
| export type MecabOptions = { | ||
| rcfile?: string; | ||
@@ -26,4 +26,4 @@ dicdir?: string; | ||
| output?: string; | ||
| } | ||
| export interface Feature { | ||
| }; | ||
| export type Feature = { | ||
| pos?: string; | ||
@@ -36,6 +36,6 @@ posSubs: [string | undefined, string | undefined, string | undefined]; | ||
| pronunciation?: string; | ||
| } | ||
| export declare type Stats = readonly ['NORMAL', 'UNKNOWN', 'BOS', 'EOS', 'EON']; | ||
| export declare type Stat = Stats[number]; | ||
| export interface Token { | ||
| }; | ||
| export type Stats = readonly ['NORMAL', 'UNKNOWN', 'BOS', 'EOS', 'EON']; | ||
| export type Stat = Stats[number]; | ||
| export type Token = { | ||
| id: number; | ||
@@ -57,3 +57,3 @@ surface: string; | ||
| _: string[]; | ||
| } | ||
| }; | ||
| //# sourceMappingURL=types.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB,GACzB,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;AAIR,MAAM,WAAW,YAAY;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,OAAO;IAEvB,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAGtE,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,oBAAY,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxE,oBAAY,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAGjC,MAAM,WAAW,KAAK;IAErB,EAAE,EAAE,MAAM,CAAC;IAGX,OAAO,EAAE,MAAM,CAAC;IAGhB,OAAO,EAAE,OAAO,CAAC;IAGjB,aAAa,EAAE,MAAM,CAAC;IAGtB,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAGf,KAAK,EAAE,MAAM,CAAC;IAGd,QAAQ,EAAE,MAAM,CAAC;IAGjB,IAAI,EAAE,IAAI,CAAC;IAGX,MAAM,EAAE,OAAO,CAAC;IAGhB,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAEb,CAAC,EAAE,MAAM,EAAE,CAAC;CACZ"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACzB,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;AAIR,MAAM,MAAM,YAAY,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,MAAM,MAAM,OAAO,GAAG;IAErB,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAGtE,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAGF,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxE,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAGjC,MAAM,MAAM,KAAK,GAAG;IAEnB,EAAE,EAAE,MAAM,CAAC;IAGX,OAAO,EAAE,MAAM,CAAC;IAGhB,OAAO,EAAE,OAAO,CAAC;IAGjB,aAAa,EAAE,MAAM,CAAC;IAGtB,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAGf,KAAK,EAAE,MAAM,CAAC;IAGd,QAAQ,EAAE,MAAM,CAAC;IAGjB,IAAI,EAAE,IAAI,CAAC;IAGX,MAAM,EAAE,OAAO,CAAC;IAGhB,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAEb,CAAC,EAAE,MAAM,EAAE,CAAC;CACZ,CAAC"} |
+12
-11
| { | ||
| "name": "@enjoyjs/node-mecab", | ||
| "version": "0.4.0", | ||
| "version": "0.5.0", | ||
| "description": "MeCab wrapper for Node.js", | ||
@@ -46,16 +46,17 @@ "type": "module", | ||
| "engines": { | ||
| "node": ">=16" | ||
| "node": ">=v18.12.1" | ||
| }, | ||
| "packageManager": "npm@9.2.0", | ||
| "devDependencies": { | ||
| "@enjoyjs/tsconfig": "^3.0.1", | ||
| "@swc/core": "^1.2.182", | ||
| "@types/node": "^16.11.33", | ||
| "@types/xo": "^0.39.2", | ||
| "esbuild": "^0.14.38", | ||
| "@enjoyjs/tsconfig": "^4.0.0", | ||
| "@swc/core": "^1.3.24", | ||
| "@types/node": "^18.11.18", | ||
| "@types/xo": "^0.39.5", | ||
| "esbuild": "^0.16.12", | ||
| "eslint-plugin-security": "^1.5.0", | ||
| "eslint-plugin-sonarjs": "^0.13.0", | ||
| "eslint-plugin-sonarjs": "^0.17.0", | ||
| "npm-run-all": "^4.1.5", | ||
| "ts-node": "^10.7.0", | ||
| "typescript": "^4.7.1-rc", | ||
| "xo": "^0.48.0" | ||
| "ts-node": "^10.9.1", | ||
| "typescript": "^4.9.4", | ||
| "xo": "^0.53.1" | ||
| }, | ||
@@ -62,0 +63,0 @@ "dependencies": { |
+18
-15
@@ -5,11 +5,10 @@ # node-mecab | ||
| ## 前提条件 | ||
| ## Requirements | ||
| MeCabがインストールされている必要があります。 | ||
| - MeCab | ||
| - [MeCab: Yet Another Part-of-Speech and Morphological Analyzer](https://taku910.github.io/mecab/) | ||
| - [taku910/mecab: Yet another Japanese morphological analyzer](https://github.com/taku910/mecab) | ||
| - [MeCab: Yet Another Part-of-Speech and Morphological Analyzer](https://taku910.github.io/mecab/) | ||
| - [taku910/mecab: Yet another Japanese morphological analyzer](https://github.com/taku910/mecab) | ||
| ## Install | ||
| ## インストール | ||
| ```bash | ||
@@ -45,2 +44,4 @@ npm i @enjoyjs/node-mecab | ||
| --- | ||
| ### tokenize(text: string, options?: [MecabOptions][mecaboptions]): Promise\<[Token][token][]\> | ||
@@ -63,3 +64,3 @@ | ||
| pos: '感動詞', | ||
| posSubs: [Array], | ||
| posSubs: [ undefined, undefined, undefined ], | ||
| conjugatedType: undefined, | ||
@@ -90,3 +91,3 @@ conjugatedForm: undefined, | ||
| pos: '名詞', | ||
| posSubs: [Array], | ||
| posSubs: [ '一般', undefined, undefined ], | ||
| conjugatedType: undefined, | ||
@@ -125,8 +126,10 @@ conjugatedForm: undefined, | ||
| ### wakatsu(text: string, options?: [MecabOptions][mecaboptions]): Promise\<string[][]\> | ||
| --- | ||
| ### wakati(text: string, options?: [MecabOptions][mecaboptions]): Promise\<string[][]\> | ||
| ```js | ||
| import { wakatsu } from "@enjoyjs/node-mecab"; | ||
| import { wakati } from "@enjoyjs/node-mecab"; | ||
| const result = await wakatsu("こんにちは世界"); | ||
| const result = await wakati("こんにちは世界"); | ||
| console.log(result); | ||
@@ -139,8 +142,8 @@ ``` | ||
| ### wakatsuSync(text: string, options?: [MecabOptions][mecaboptions]): string[][] | ||
| ### wakatiSync(text: string, options?: [MecabOptions][mecaboptions]): string[][] | ||
| ```js | ||
| import { wakatsuSync } from "@enjoyjs/node-mecab"; | ||
| import { wakatiSync } from "@enjoyjs/node-mecab"; | ||
| const result = wakatsuSync("こんにちは世界"); | ||
| const result = wakatiSync("こんにちは世界"); | ||
| console.log(result); | ||
@@ -154,3 +157,3 @@ ``` | ||
| ## ライセンス | ||
| ## License | ||
@@ -157,0 +160,0 @@ [MIT License](LICENSE) |
+2
-134
@@ -1,134 +0,2 @@ | ||
| import dargs from 'dargs'; | ||
| import execa from 'execa'; | ||
| import type {Feature, MecabOptions, Stat, Token} from './types.js'; | ||
| export type { | ||
| Feature, | ||
| MecabOptions, | ||
| Stat, | ||
| Stats, | ||
| Token, | ||
| OutputFormatType, | ||
| } from './types.js'; | ||
| export {analyze, analyzeSync, tokenize, tokenizeSync, wakatsu, wakatsuSync}; | ||
| const mecabNaToUndefined = (text?: string): string | undefined => { | ||
| return text === '*' ? undefined : text; | ||
| }; | ||
| const getStat = (statId?: string): Stat => { | ||
| switch (statId) { | ||
| case '0': | ||
| return 'NORMAL'; | ||
| case '1': | ||
| return 'UNKNOWN'; | ||
| case '2': | ||
| return 'BOS'; | ||
| case '3': | ||
| return 'EOS'; | ||
| case '4': | ||
| return 'EON'; | ||
| default: | ||
| return 'UNKNOWN'; | ||
| } | ||
| }; | ||
| const parseFeature = (feature?: string): Feature => { | ||
| const [ | ||
| pos, | ||
| posSub1, | ||
| posSub2, | ||
| posSub3, | ||
| conjugatedType, | ||
| conjugatedForm, | ||
| basicForm, | ||
| reading, | ||
| pronunciation, | ||
| ] = feature?.split(',') ?? []; | ||
| return { | ||
| pos: mecabNaToUndefined(pos), | ||
| posSubs: [ | ||
| mecabNaToUndefined(posSub1), | ||
| mecabNaToUndefined(posSub2), | ||
| mecabNaToUndefined(posSub3), | ||
| ], | ||
| conjugatedType: mecabNaToUndefined(conjugatedType), | ||
| conjugatedForm: mecabNaToUndefined(conjugatedForm), | ||
| basicForm: mecabNaToUndefined(basicForm), | ||
| reading: mecabNaToUndefined(reading), | ||
| pronunciation: mecabNaToUndefined(pronunciation), | ||
| }; | ||
| }; | ||
| const parseDump = (dump: string): Token[] => { | ||
| return dump.split('\n').map<Token>((row) => { | ||
| const values = row.split(' '); | ||
| return { | ||
| id: Number(values[0]), | ||
| surface: values[1] ?? '', | ||
| feature: parseFeature(values[2]), | ||
| startPosition: Number(values[3]), | ||
| endPosition: Number(values[4]), | ||
| rcAttr: Number(values[5]), | ||
| lcAttr: Number(values[6]), | ||
| posid: Number(values[7]), | ||
| charType: Number(values[8]), | ||
| stat: getStat(values[9]), | ||
| isbest: Boolean(Number(values[10])), | ||
| alpha: Number(values[11]), | ||
| beta: Number(values[12]), | ||
| prob: Number(values[13]), | ||
| cost: Number(values[14]), | ||
| _: values.slice(15), | ||
| }; | ||
| }); | ||
| }; | ||
| const analyze = async ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): Promise<string> => { | ||
| const {stdout} = await execa('mecab', dargs(options), {input: text}); | ||
| return stdout; | ||
| }; | ||
| const analyzeSync = ( | ||
| text: string, | ||
| options: Readonly<MecabOptions> = {}, | ||
| ): string => { | ||
| const {stdout} = execa.sync('mecab', dargs(options), {input: text}); | ||
| return stdout; | ||
| }; | ||
| const tokenize = async ( | ||
| text: string, | ||
| options?: Readonly<MecabOptions>, | ||
| ): Promise<Token[]> => { | ||
| const dump = await analyze(text, {...options, outputFormatType: 'dump'}); | ||
| return parseDump(dump); | ||
| }; | ||
| const tokenizeSync = ( | ||
| text: string, | ||
| options?: Readonly<MecabOptions>, | ||
| ): Token[] => { | ||
| const dump = analyzeSync(text, {...options, outputFormatType: 'dump'}); | ||
| return parseDump(dump); | ||
| }; | ||
| const wakatsu = async ( | ||
| text: string, | ||
| options?: Readonly<MecabOptions>, | ||
| ): Promise<string[][]> => { | ||
| const wakati = await analyze(text, {...options, outputFormatType: 'wakati'}); | ||
| return wakati.split('\n').map((row) => row.trim().split(' ')); | ||
| }; | ||
| const wakatsuSync = ( | ||
| text: string, | ||
| options?: Readonly<MecabOptions>, | ||
| ): string[][] => { | ||
| const wakati = analyzeSync(text, {...options, outputFormatType: 'wakati'}); | ||
| return wakati.split('\n').map((row) => row.trim().split(' ')); | ||
| }; | ||
| export * from './command.js'; | ||
| export * from './types.js'; |
+7
-7
@@ -12,3 +12,3 @@ export type OutputFormatType = | ||
| // Ref 2: http://www.mwsoft.jp/programming/munou/mecab_command.html (Japanese) | ||
| export interface MecabOptions { | ||
| export type MecabOptions = { | ||
| rcfile?: string; | ||
@@ -37,7 +37,7 @@ dicdir?: string; | ||
| output?: string; | ||
| } | ||
| }; | ||
| // Ref: https://taku910.github.io/mecab/#usage-tools (Japanese) | ||
| export interface Feature { | ||
| // 品詞 | ||
| export type Feature = { | ||
| // 品詞 (part of speech) | ||
| pos?: string; | ||
@@ -62,3 +62,3 @@ | ||
| pronunciation?: string; | ||
| } | ||
| }; | ||
@@ -70,3 +70,3 @@ // Ref: https://github.com/taku910/mecab/blob/046fa78b2ed56fbd4fac312040f6d62fc1bc31e3/mecab/src/mecab.h#L218-L243 | ||
| // Ref: http://taku910.github.io/mecab/bindings.html (Japanese) | ||
| export interface Token { | ||
| export type Token = { | ||
| // Node id | ||
@@ -118,2 +118,2 @@ id: number; | ||
| _: string[]; | ||
| } | ||
| }; |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
20812
1.5%20
81.82%300
1.69%157
1.95%1
Infinity%