# MeCab Analyzer

`mecab-analyzer`는 [MeCab](https://taku910.github.io/mecab/) 기반의 형태소 분석기 라이브러리로, 한국어 텍스트를 분석하여 품사, 형태소, 명사 등 다양한 정보를 제공합니다. 이 라이브러리는 Node.js 환경에서 쉽게 형태소 분석을 할 수 있도록 만들어졌으며, MeCab 실행 파일을 이용하여 텍스트를 분석합니다.

## 설치 방법

```bash
npm install @makecode/mecab-analyzer
```

`MECAB_PATH` 환경 변수를 통해 MeCab 실행 파일의 경로를 지정할 수 있습니다. 기본적으로는 `node_modules/@makecode/mecab-analyzer/bin/mecab` 경로를 사용합니다.

## 사용 방법

`mecab-analyzer` 라이브러리는 다음과 같은 네 가지 주요 함수를 제공합니다:

- `pos(text: string): string[]` — 입력된 텍스트의 품사(POS) 분석 결과를 반환합니다.
- `morphs(text: string): string[]` — 입력된 텍스트의 형태소(Morphs) 분석 결과를 반환합니다.
- `nouns(text: string): string[]` — 입력된 텍스트에서 명사(Nouns)만을 추출하여 반환합니다.
- `all(text: string): string[][]` — 입력된 텍스트에 대한 전체 분석 결과를 반환합니다.

### 예제 코드

아래는 각 함수의 사용 예시입니다.

```typescript
import mecabAnalyzer from '@makecode/mecab-analyzer';

const text = '오늘은 날씨가 맑습니다.';

// 품사 분석 (POS)
const posResult = mecabAnalyzer.pos(text);
console.log('POS 분석 결과:', posResult);
// 출력 예시: ['오늘,NNG', '은,JX', '날씨,NNG', '가,JKS', '맑,VA', '습니다,EF']

// 형태소 분석 (Morphs)
const morphsResult = mecabAnalyzer.morphs(text);
console.log('형태소 분석 결과:', morphsResult);
// 출력 예시: ['오늘', '은', '날씨', '가', '맑', '습니다']

// 명사 추출 (Nouns)
const nounsResult = mecabAnalyzer.nouns(text);
console.log('명사 추출 결과:', nounsResult);
// 출력 예시: ['오늘', '날씨']

// 전체 분석 결과 (All)
const allResult = mecabAnalyzer.all(text);
console.log('전체 분석 결과:', allResult);
// 출력 예시: [['오늘', 'NNG', '*', '*', '*', 'T'], ['은', 'JX', '*', '*', '*', 'T'], ...]
```

## 함수 설명

### `pos(text: string): string[]`

입력된 텍스트에 대해 품사(POS) 분석을 수행합니다. 결과는 각 단어와 해당 품사가 연결된 문자열 배열로 반환됩니다. 예를 들어, `'오늘,NNG'`와 같이 반환됩니다.

### `morphs(text: string): string[]`

입력된 텍스트를 형태소 단위로 분석하여 형태소의 배열을 반환합니다. 각 단어의 최소 단위로 나누어줍니다.

### `nouns(text: string): string[]`

입력된 텍스트에서 명사(NNG, NNP)만을 추출하여 배열로 반환합니다. 이 함수는 특정 명사만 필요할 때 유용합니다.

### `all(text: string): string[][]`

입력된 텍스트의 전체 분석 결과를 2차원 배열 형태로 반환합니다. 각 배열은 단어와 해당 품사의 모든 정보가 포함된 배열로, 보다 상세한 정보가 필요할 때 사용할 수 있습니다.

### `analyzeWithExclusions(text: string, options: { analysisType?: string, pattern?: RegExp }): string[] | string[][]`

특정 패턴을 제외하고 분석을 수행합니다. 예를 들어, URL과 같은 특정 패턴을 제외하고 텍스트를 분석하고 싶을 때 유용합니다. `analysisType`은 분석 타입 (`morphs`, `pos`, `all`)을 지정하며, `pattern`은 제외하고자 하는 정규 표현식 패턴을 지정합니다.

## 환경 변수 설정

- **MECAB_PATH**: MeCab 실행 파일의 경로를 지정할 수 있습니다. 지정하지 않는 경우 기본적으로 `node_modules` 내부에 포함된 MeCab을 사용합니다.

```bash
export MECAB_PATH=/usr/local/bin/mecab
```

## CommonJS 지원

`mecab-analyzer`는 CommonJS 환경에서도 사용할 수 있습니다.

```javascript
const mecabAnalyzer = require('@makecode/mecab-analyzer');

const text = '오늘은 날씨가 맑습니다.';
const nouns = mecabAnalyzer.nouns(text);
console.log('명사 추출 결과:', nouns);
```
