Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@enjoyjs/node-mecab

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@enjoyjs/node-mecab - npm Package Compare versions

Comparing version
0.4.0
to
0.5.0
+8
lib/command.d.ts
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),
};
});
};
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 +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};

@@ -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"}
{
"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)

@@ -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';

@@ -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[];
}
};