ServBay에서 SCWS PHP 모듈 활성화 및 설정 방법
ServBay는 macOS에 최적화된 강력한 로컬 웹 개발 환경으로, PHP, Node.js, Python, Go, Java 등 다양한 언어 런타임과 MySQL, PostgreSQL, MongoDB, Redis 등 데이터베이스, 그리고 Caddy, Nginx와 같은 웹서버를 통합 제공합니다. PHP 애플리케이션에서 중국어 텍스트 처리가 필요한 개발자를 위해 ServBay는 뛰어난 성능의 SCWS(Simpe Chinese Word Segmentation) 중국어 형태소 분석 모듈을 기본 탑재하고 있어 손쉽게 사용할 수 있습니다.
이 문서에서는 ServBay에서 SCWS PHP 확장 모듈을 활성화하는 방법, 사전 파일 설정, 그리고 간단한 코드 예제를 통해 기본적인 사용법까지 자세히 설명합니다.
SCWS 모듈 개요
SCWS는 오픈소스로 제공되는 중국어 형태소 분석 엔진으로, 높은 성능과 정확도를 자랑합니다. 사전 기반 매칭과 통계 모델을 결합하여 중국어 텍스트를 빠르고 정확하게 분할할 수 있으며, 중국어 검색 엔진 구축, 텍스트 마이닝, 콘텐츠 분석, 키워드 추출, 품사 태깅 등 다양한 분야에서 활용됩니다.
주요 특징
- 고성능 분석: SCWS는 최적화된 알고리즘을 통해 대용량 중국어 텍스트도 빠르게 처리합니다.
- 높은 정확도: 사전과 통계 모델의 결합으로 우수한 형태소 분석 정확도를 보여줍니다.
- 풍부한 기능: 기본 형태소 분석은 물론, 키워드 추출, 품사 태깅 등 고급 기능도 지원합니다.
- 손쉬운 통합: 간결한 API로 PHP 애플리케이션에 쉽게 통합할 수 있습니다.
- 오픈소스 무료 제공: SCWS는 오픈소스 소프트웨어로, 자유롭게 사용 및 커스터마이징이 가능합니다.
ServBay에 내장된 SCWS 버전
ServBay는 여러 버전의 PHP를 지원하며, 각 버전마다 SCWS 모듈이 기본으로 설치되어 있습니다. 현재 문서 기준, PHP 5.6 ~ PHP 8.4까지 SCWS 1.2.3 확장이 사전 탑재되어 있습니다.
SCWS 모듈 활성화 방법
기본적으로 ServBay에서는 SCWS 모듈이 비활성화 상태입니다. 활성화 방법은 두 가지이며, ServBay 그래픽 인터페이스 사용 또는 설정 파일 직접 편집이 가능합니다.
추천 방법: ServBay 그래픽 UI를 통한 활성화
가장 쉽고 빠른 방법은 다음과 같습니다.
- ServBay 메인 화면을 엽니다.
- 좌측 메뉴에서 언어(Languages) 탭을 클릭한 뒤, PHP를 선택합니다.
- 우측 PHP 버전 목록에서 SCWS를 활성화하려는 PHP 버전을 찾습니다(예:
PHP 8.4
). - 해당 PHP 버전 오른쪽의 확장(Extensions) 버튼을 클릭합니다.
- 팝업된 확장 목록에서
SCWS
모듈을 찾습니다. SCWS
왼쪽 토글 스위치를 클릭해 활성(녹색) 상태로 변경합니다.- 하단 저장(Save) 버튼을 클릭합니다.
- 변경 사항을 적용하려면 PHP 패키지를 재시작해야 한다는 안내가 나타납니다. 재시작(Restart) 버튼을 누릅니다.
위 절차를 완료하면, 선택한 PHP 버전에서 SCWS 모듈이 활성화됩니다.
수동 설정 파일 편집 (고급 사용자 또는 문제 해결 시)
좀 더 세밀한 제어나 문제 해결이 필요하다면, PHP 설정 파일을 직접 편집할 수도 있습니다.
설정 파일 위치 확인:
먼저, 해당 PHP 버전의conf.d
폴더로 이동합니다. SCWS의 설정은 이 폴더 내scws.ini
파일에 저장되어 있습니다. 경로 예시는 다음과 같습니다./Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1여기서
X.Y
는 실제 PHP 버전(예:8.4
)으로 교체해 사용하세요.scws.ini
파일 편집:
텍스트 에디터로scws.ini
파일을 엽니다. 다음과 같은 내용을 찾을 수 있습니다.ini[scws] ; Uncomment the following line to enable scws ;extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5주석을 해제(
;
제거)하여extension = scws.so
줄이 다음과 같이 되도록 수정합니다.ini[scws] ; Uncomment the following line to enable scws extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5(선택사항) 여기서 기본 문자셋 및 사전 경로도 조정할 수 있지만, 보통 PHP 코드 내에서 동적으로 설정하는 것을 권장합니다. 만약 여기에서 UTF-8 인코딩 사전을 지정하고 싶다면:
ini[scws] ; Uncomment the following line to enable scws extension = scws.so scws.default.charset = utf8 scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5파일을 저장 후 닫습니다.
PHP 패키지 재시작:
ServBay 메인 화면에서 패키지(Packages) 메뉴로 이동해, 설정을 변경한 PHP 버전(예: PHP 8.4)을 찾아 오른쪽의 재시작 버튼(흔히 원형 화살표 아이콘)을 클릭합니다.
SCWS 모듈 로드 여부 확인
모듈 활성화 후 정상적으로 로드되었는지 확인하는 것이 중요합니다. 가장 간단한 방법은 PHP의 phpinfo()
출력을 확인하는 것입니다.
- ServBay 기본 웹사이트 루트 디렉터리
/Applications/ServBay/www
에, 예를 들어scws-test
라는 새로운 폴더를 만듭니다. - 해당 폴더(
/Applications/ServBay/www/scws-test
) 내에phpinfo.php
라는 파일을 만듭니다. - 다음 PHP 코드를
phpinfo.php
에 입력합니다.php<?php phpinfo(); ?>
1
2
3 - ServBay의 웹 서버(Caddy 또는 Nginx)가 실행 중이며,
/Applications/ServBay/www
디렉터리에 접근 가능해야 합니다. ServBay는 기본적으로servbay.demo
도메인을/Applications/ServBay/www
로 매핑합니다. - 브라우저에서
https://servbay.demo/scws-test/phpinfo.php
에 접속합니다. - 열리는 PHP 정보 페이지에서 "SCWS"라는 섹션을 찾아봅니다. SCWS 관련 설정이나 버전 정보가 나타난다면 모듈이 성공적으로 로드된 것입니다.
(참고: 이미지 경로는 예시입니다. 실제 ServBay 문서의 이미지를 참고하세요.)
SCWS 사전 생성 및 설정
SCWS는 사전 기반 형태소 분석 엔진으로, 분석 품질은 사용하는 사전에 크게 좌우됩니다. ServBay는 /Applications/ServBay/etc/scws
폴더에 SCWS의 기본 사전과 규칙 파일을 제공합니다. 또한 사용자는 직접 사전을 만들거나 외부 사전을 사용할 수도 있습니다.
SCWS 사전(딕셔너리) 파일 포맷
SCWS는 일반 텍스트 형식과 xdb 바이너리 형식의 사전을 지원합니다. 속도와 효율을 위해 xdb 포맷 사용을 권장합니다.
일반 텍스트 사전 형식은 다음과 같습니다. 한 줄에 하나의 단어, 그 뒤로 빈칸을 두고 빈도(숫자, 값이 클수록 상용 단어)와 품사(선택 사항)를 적습니다.
단어1 [빈도1] [품사1]
단어2 [빈도2] [품사2]
...
1
2
3
2
3
예시:
인공지능 1000 n
자연어처리 800 n
ServBay 500 nz
1
2
3
2
3
이렇게 만든 사용자 사전을 예를 들어 my_dict.txt
로 저장하세요. 파일 인코딩은 사용하는 문자셋(권장: UTF-8)과 반드시 일치해야 합니다.
xdb 사전 파일 변환
ServBay에는 SCWS에서 제공하는 scws-gen-dict
도구가 기본 포함되어 있어, 텍스트 사전 파일을 xdb로 변환할 수 있습니다.
- macOS의 터미널(Terminal) 앱을 실행합니다.
cd
명령으로 ServBay의 bin 디렉터리로 이동하거나,scws-gen-dict
의 전체 경로를 직접 입력합니다. 일반적으로 다음 위치에 있습니다.bash/Applications/ServBay/bin/scws-gen-dict -i /path/to/your/my_dict.txt -o /Applications/ServBay/etc/scws/my_dict.utf8.xdb -c utf8
1/path/to/your/my_dict.txt
부분은 실제 텍스트 사전 경로로,-o
옵션은 변환 후 생성될 xdb 파일 경로(일반적으로/Applications/ServBay/etc/scws/
폴더 내 저장 추천)를 지정합니다.-c utf8
은 인코딩을 지정합니다.
SCWS가 사전 파일을 사용하도록 설정
xdb 파일을 생성한 후, PHP 코드에서 해당 사전을 지정할 수 있습니다.
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // 문자셋 지정, 사전 인코딩과 일치해야 함
// 기본 사전 파일 경로(ServBay 기본/사용자 xdb 파일)
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// 추가 사전이 있을 경우 한 번 더 로드
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT는 사용자 추가사전 의미
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // 품사 태깅 등 용도의 규칙 파일, ServBay에 기본 탑재
// ... 이후 형태소 분석 작업 ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
set_dict()
는 기본 대용량 사전을, add_dict()
는 사용자가 추가한 사전을 덧붙여 사용할 때 사용합니다. SCWS_XDICT_TXT
는 추가 사전임을 나타내는 상수입니다.
SCWS 사용 예시
SCWS 모듈을 활성화하고 사전을 설정했다면, PHP 코드에서 SCWS 함수를 호출해 형태소 분석을 진행할 수 있습니다. 아래는 기본적인 사용 예시입니다.
php
<?php
// SCWS 확장 모듈이 로드됐는지 확인
if (!extension_loaded('scws')) {
die('SCWS extension is not loaded.');
}
// SCWS 객체 초기화
$scws = scws_new();
if (!$scws) {
die('Failed to initialize SCWS.');
}
// 문자셋 지정 (텍스트 및 사전 인코딩과 일치해야 함)
$scws->set_charset('utf8');
// 사전 파일 경로(ServBay 기본 경로 사용)
// set_dict(): 기본 사전 지정
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict(): 사용자 추가 사전 지정(옵션)
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// 규칙 파일 경로 지정(ServBay 기본값), 품사 태깅 등에 사용
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// 형태소 분석 모드 지정(선택사항, 기본값: SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: 비한문자 분리(예: email, url 등)
// SCWS_XDICT_DUALITY: 복합 형태소 분석(2글자 단위)
// $scws->set_ignore(true); // 특수문자/구두점 무시 여부
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // 복합 분석 단계 설정
// 분석 대상 중국어 텍스트
$text = "ServBay 는 강력한 로컬 웹 개발 환경으로 PHP, Node.js 및 다양한 데이터베이스를 지원합니다.";
// 입력 텍스트를 SCWS로 전달해 분석
$scws->send_text($text);
// 분석 결과 출력
echo "원본 텍스트: " . $text . "\n\n";
echo "형태소 분석 결과:\n";
// 분석 결과 루프
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word 배열에는 'word', 'idf', 'attr'(품사) 등의 정보가 있음
echo "단어: " . $word['word'] . " (품사: " . $word['attr'] . ")\n";
}
}
// SCWS 리소스 해제
$scws->close();
?>
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
파일(예: scws_example.php
)로 저장해 ServBay의 웹사이트 폴더(예: /Applications/ServBay/www/scws-test/
)에 넣고, 브라우저에서 https://servbay.demo/scws-test/scws_example.php
로 접속하면 형태소 분석 결과를 볼 수 있습니다.
유의사항
- SCWS 모듈 버전과 실제 사용하는 PHP 버전이 호환되는지 꼭 확인하세요. ServBay는 기본적으로 호환성을 보장하지만, 직접 설정 시 체크가 필요합니다.
- 형태소 분석 품질은 사용하는 사전의 품질과 매우 관련이 높으므로, 특수 분야 용도라면 전문 용어 사전을 별도로 생성해 사용하길 권장합니다.
- SCWS 설정 파일(
scws.ini
), 사전 파일(.xdb
), 규칙 파일(.ini
)의 경로 및 PHP 프로세스의 파일 접근 권한이 정확한지 확인해야 합니다. - PHP 설정을 변경한 경우, 반드시 해당 PHP 패키지를 재시작해야 변경 사항이 반영됩니다.
자주 묻는 질문 (FAQ)
Q: ServBay UI에서 SCWS를 켰는데 phpinfo()
에 표시되지 않습니다.
A: 반드시 정확한 PHP 패키지를 재시작했는지 확인하세요. 여러 PHP 버전이 동시에 켜져 있을 수 있으니, 해당 웹사이트가 사용하는 PHP 버전을 재시작해야 합니다. 문제가 계속된다면, scws.ini
파일을 직접 수정하고 경로, 문법 오류 등을 꼼꼼히 점검하세요.
Q: 사용자 사전을 어떻게 생성하고 적용하나요?
A: 본 문서의 "SCWS 사전 생성 및 설정" 부분을 참고해 scws-gen-dict
도구로 텍스트 사전을 xdb로 변환한 뒤, PHP 코드에서 add_dict()
로 사용자 사전을 추가해주면 됩니다.
Q: SCWS의 규칙 파일(rules.utf8.ini
) 역할이 뭔가요?
A: 규칙 파일은 주로 품사 태깅 및 특수 형태소 분석 규칙에 사용됩니다. ServBay에는 이미 기본 규칙 파일이 포함되어 있으므로 일반 사용자는 별다른 수정이 필요 없습니다.
정리
ServBay는 개발자가 SCWS PHP 중국어 형태소 분석 모듈을 직관적이고 간편하게 활성화 및 관리할 수 있도록 도와줍니다. 그래픽 사용자 인터페이스는 손쉬운 접근을, 수동 설정은 유연성을 제공합니다. 또, ServBay에 기본 포함된 다양한 SCWS 도구와 사전 덕분에 빠르게 중국어 텍스트를 분석해 웹 애플리케이션(검색, 콘텐츠 분석 등)에 강력한 중국어 지원 기능을 추가할 수 있습니다. SCWS는 ServBay의 풍부한 생태계를 이루는 구성 요소 중 하나로, 로컬 개발 환경의 완성도와 실용성을 한층 높여줍니다.