ServBay에서 SCWS 중국어 형태소 분석: 설치, 설정 및 사용 가이드
ServBay는 강력한 로컬 웹 개발 환경으로, 개발자들이 자주 사용하는 다양한 도구와 패키지를 내장하고 있습니다. SCWS(Simple Chinese Word Segmentation)는 중국어 텍스트 처리(검색, 자연어 처리, 콘텐츠 분석 등)에 핵심적인 고성능 중국어 형태소 분석(분절) 시스템입니다. ServBay는 이미 SCWS와 PHP 모듈을 사전 설치해 두었기 때문에 별도의 번거로운 설치 과정이 필요하지 않습니다. 본 문서에서는 ServBay 환경에서 SCWS를 설정하고 사용하는 방법을 명령행 도구와 PHP API 예제와 함께 상세히 안내합니다.
개요
SCWS는 대용량의 중국어 텍스트를 빠르고 정확하게 분절해야 하는 환경에 최적화된 고성능 형태소 분석 라이브러리입니다. 다양한 분절 모드, 사용자 정의 사전 및 규칙을 지원하며, 중국어 검색, 추천, 텍스트 분석 같은 애플리케이션의 기반 도구로 활용됩니다. ServBay는 SCWS를 패키지에 통합하여 사전 컴파일된 PHP 확장 모듈까지 제공하므로, 로컬 개발 환경에서 SCWS를 빠르고 간편하게 활용할 수 있습니다.
전제 조건
- macOS 운영체제에 ServBay가 성공적으로 설치되어 실행되고 있어야 합니다.
설치 및 설정
설치
ServBay는 '즉시 사용 가능한 개발환경'이란 설계 철학을 바탕으로 합니다. SCWS 역시 ServBay의 필수 중국어 처리 도구로, 시스템에 미리 설치되어 제공됩니다. 별도의 다운로드나 컴파일 과정 없이 바로 사용할 수 있으며, 관련 실행 파일, 설정 파일, 사전 등은 ServBay 설치 디렉토리에 일괄 저장되어 있습니다. 기본 경로는 /Applications/ServBay/
입니다.
설정
SCWS 기본 설정 파일은 ServBay 설치 디렉토리 내 /Applications/ServBay/etc/scws/scws.ini
에 위치합니다. 이 파일을 수정하여 SCWS의 분절 동작, 문자셋, 사전 및 규칙등을 사용자 환경에 맞게 조정할 수 있습니다.
아래는 기본 설정 파일 예시입니다:
ini
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
[charset]
: 기본 문자셋 지정(일반적으로utf8
유지).[rule]
: 분절 규칙 파일의 경로 지정.[dict]
: 분절 사전 파일 경로 지정. 여러 사전을 사용할 경우 쉼표(,)로 구분하여 나열 가능.
기본 사용법: 명령행 도구
SCWS는 터미널에서 텍스트 분절 테스트나 대량 처리를 할 수 있는 강력한 명령행 도구 scws
를 제공합니다. ServBay는 scws
실행 파일을 bin
디렉토리에 포함했고, /Applications/ServBay/bin
경로가 시스템 PATH에 기본 추가되어 있으므로 터미널에서 바로 scws
명령을 사용할 수 있습니다.
분절 예시
다음은 scws
명령행 도구의 기본 사용 예시입니다:
문자열 분절하기
파이프를 이용해 문자열을 scws
명령에 전달:
bash
echo "这是一个中文分词的例子" | scws -i
1
파일에서 텍스트를 읽어서 분절
-i
옵션으로 입력 파일 지정, -o
옵션으로 출력 파일 지정:
bash
scws -i input.txt -o output.txt
1
분절 규칙 지정
-r
옵션으로 사용자 지정 규칙 파일 경로를 명시:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
1
사전 지정
-d
옵션으로 사용자 지정 사전 파일 경로를 명시:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
고급 사용법
사용자 정의 사전
형태소 분석 정확도를 높이기 위해(특정 산업 용어, 인명, 지명, 신조어 등) 직접 커스텀 사전을 만들 수 있습니다. SCWS는 고효율 xdb
포맷 사전을 사용합니다. ServBay가 제공하는 scws-gen
도구로 텍스트 포맷 사전을 xdb
포맷으로 변환할 수 있습니다.
사용자 정의 사전 생성 단계
먼저
custom_dict.txt
와 같은 텍스트 파일을 만듭니다. 한 줄에 하나의 단어, 뒤에 한 칸 띄우고 가중치(보통 정수, 분절 우선순위에 영향)를 추가합니다(선택 사항).ServBay 10 로컬 개발환경 8 중국어 형태소 분석 9
1
2
3scws-gen
도구로xdb
포맷 사전 파일 생성. (scws-gen
역시 ServBay의bin
디렉토리에 위치)bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1SCWS 설정 파일
/Applications/ServBay/etc/scws/scws.ini
의[dict]
항목에서, 기본 사전 뒤에 사용자 사전 경로를 쉼표(,)로 추가합니다.ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2/path/to/your/custom_dict.xdb
경로는 실제 사용자 사전 파일 위치로 수정하세요.
분절 규칙 조정
분절 규칙 파일(기본 /Applications/ServBay/etc/scws/rules.ini
)은 SCWS가 중국어의 모호하거나 복잡한 구조를 어떻게 처리할지 정의합니다. 규칙 수정은 SCWS 분절 알고리즘에 대한 이해가 필요하며, 대부분의 경우 기본 규칙과 사용자 정의 사전만으로도 충분합니다. 만약 수정이 필요하다면 신중히 작업하고, SCWS 공식 문서(ServBay의 SCWS에 관련 문서가 포함된 경우)를 참고하세요.
예시 규칙 파일 내용(일반적으로 패턴 매칭 규칙 포함):
ini
[rule]
# 이곳에 사용자 정의 분절 규칙 추가 가능
# 예시: 간단한 규칙 정의
# pattern = result
1
2
3
4
2
3
4
PHP API 사용법
PHP 기반 웹 애플리케이션을 개발하는 경우, ServBay에서 제공하는 PHP 환경에 SCWS 확장 모듈이 내장되어 있어 별도의 설치나 추가 설정 없이 곧바로 SCWS API를 사용할 수 있습니다.
ServBay 내장 phpinfo()
페이지를 통해 SCWS 확장이 활성화되어 있는지 확인할 수 있습니다.
사용 예시
아래는 SCWS API를 활용해 분절하는 기본 PHP 코드 예시입니다:
php
<?php
// SCWS 확장이 로드되었는지 확인
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// 분절할 텍스트
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// SCWS 형태소 분석기 인스턴스 열기
$sh = scws_open();
// 문자셋 설정(문서 인코딩과 일치시킴)
scws_set_charset($sh, 'utf8');
// 사전 및 분절 규칙 파일 경로 설정
// 반드시 ServBay 환경 내 실제 경로로 지정해야 함
$dict_path = '/Applications/ServBay/etc/scws/dict.utf8.xdb';
$rule_path = '/Applications/ServBay/etc/scws/rules.ini';
if (!file_exists($dict_path)) {
die("SCWS dictionary file not found: " . $dict_path);
}
if (!file_exists($rule_path)) {
die("SCWS rules file not found: " . $rule_path);
}
scws_set_dict($sh, $dict_path);
scws_set_rule($sh, $rule_path);
// 분절할 텍스트를 SCWS 인스턴스로 전송
scws_send_text($sh, $text);
// 분절 결과 출력
echo "원본 텍스트: " . $text . "\n";
echo "분절 결과:\n";
// 결과 루프 출력
// $res는 각 분절 결과(단어, 품사 등)를 포함한 배열
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// 단어 출력
echo $word_info['word'] . " ";
// 필요시 품사 등 추가 정보 출력도 가능
// echo "단어: " . $word_info['word'] . ", 품사: " . $word_info['attr'] . ", 가중치: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// SCWS 인스턴스 닫기 및 리소스 해제
scws_close($sh);
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
이 코드를 .php
파일(예: segment_test.php
)로 저장 후, ServBay의 웹사이트 루트 /Applications/ServBay/www/servbay.demo/
(예: servbay.demo
사이트가 설정되어 있는 경우)에 배치하면, 브라우저에서 접근하거나 터미널에서 PHP CLI로 실행해 분절 결과를 확인할 수 있습니다.
주요 함수
SCWS PHP 확장에서 자주 사용하는 핵심 함수는 다음과 같습니다:
scws_open()
: SCWS 형태소 분석기 인스턴스 초기화 및 열기. 성공 시 리소스 핸들 반환, 실패 시false
반환.scws_set_charset($sh, $charset)
: 인스턴스$sh
의 문자셋 지정.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: 인스턴스$sh
의 사전 파일 지정.$mode
는 사전 포맷 지정으로,SCWS_XDICT_TXT
(텍스트 사전, 권장하지 않음) 대신 기본적으로xdb
파일 직접 지정 권장.scws_set_rule($sh, $rule_path)
: 인스턴스$sh
의 분절 규칙 파일 경로 설정.scws_send_text($sh, $text)
: 분절할 텍스트$text
를 인스턴스$sh
로 전달.scws_get_result($sh)
: 인스턴스$sh
에서 분절 결과를 가져옴. 호출할 때마다 하나의 결과 배열 반환. 분절 완료 시에는false
반환.scws_close($sh)
: 인스턴스$sh
닫고 리소스 해제.
세부 기능(구두점 무시, 분절 모드, 단어 가중치 조회 등)은 SCWS PHP 확장 공식 문서를 참고하십시오.
자주 묻는 질문(FAQ)
1. SCWS 분절 결과가 부정확할 때는?
- 해결 방법: 설정 파일
/Applications/ServBay/etc/scws/scws.ini
에 지정된 사전(dict
) 및 규칙(rule
) 파일 경로가 올바른지 확인하세요. 파일 존재 여부와 읽기 권한을 점검합니다. 도메인 특화 텍스트나 신조어가 많다면scws-gen
으로xdb
형식의 커스텀 사전을 만들고 설정 파일에 추가하세요. 필요한 경우 사전 우선순위나 분절 규칙을 조정하면 도움이 되지만, 이 경우 SCWS 활용에 대한 추가 이해가 필요합니다.
2. SCWS 성능이 떨어지거나 분절이 느릴 때?
- 해결 방법: SCWS가 고속
xdb
포맷 사전을 사용하는지 확인하세요. 텍스트 포맷 사전은 느릴 수 있으니, 설정 파일에서 사전 경로가 반드시xdb
파일을 가리키는지 점검합니다. 매우 큰 텍스트의 경우 분할 처리도 고려하십시오.
3. SCWS 명령행 도구가 동작하지 않고 명령을 찾을 수 없다고 나올 때?
- 해결 방법: ServBay의 실행 파일 디렉토리가 시스템 PATH 환경 변수에 등록되어 있지 않은 경우입니다.
/Applications/ServBay/bin/scws -i ...
처럼 전체 경로를 명시해 실행하거나,~/.bash_profile
,~/.zshrc
등 셸 설정 파일의 PATH 변수에/Applications/ServBay/bin
을 추가 후, 설정을 반영하거나 터미널을 재시작하세요.
4. PHP에서 scws_open()
호출이 실패하거나 함수가 존재하지 않을 때?
- 해결 방법: ServBay의 PHP 환경에 SCWS 확장 모듈이 로드되지 않은 경우입니다. ServBay 제어판에서 PHP 버전을 확인하고, 해당 버전의
phpinfo()
페이지에서scws
모듈이 활성화되어 있는지 확인하세요. 미활성화된 경우 PHP 설정 파일(php.ini
) 내에extension=scws.so
행이 있는지, 그리고scws.so
파일이 PHP 확장 디렉토리에 존재하는지 점검하십시오(ServBay는 기본값을 사전 설정함). 여전히 문제가 지속된다면 ServBay 서비스를 재시작해보세요.
요약
SCWS는 매우 강력하고 효율적인 중국어 형태소 분석 시스템입니다. ServBay가 사전 통합한 패키지와 PHP 확장 모듈을 활용하면 macOS 로컬 환경에서 명령행 도구로 텍스트를 처리하거나 PHP 애플리케이션 내에서 동적분절 기능을 구현하는 모든 과정을 손쉽게 진행할 수 있습니다. 본 가이드 라인을 참고하여 SCWS를 바로 적용해 보시고, 중국어 텍스트 처리 능력을 프로젝트에 한층 강화해보세요.