@makecode/mecab-analyzer
Version:
A MeCab-based morphological analyzer for Node.js
93 lines (59 loc) • 4.15 kB
Markdown
# 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);
```