SCWS em ServBay: Guia de Instalação, Configuração e Uso para Segmentação de Palavras em Chinês
O ServBay é um poderoso ambiente local de desenvolvimento web, integrado com várias ferramentas e pacotes essenciais para desenvolvedores. O SCWS (Simple Chinese Word Segmentation) é um sistema eficiente para segmentação de palavras em chinês, indispensável para o tratamento de texto em chinês em atividades como busca, processamento de linguagem natural e análise de conteúdo. O ServBay já vem com o SCWS e seu módulo PHP pré-instalados, eliminando a necessidade de instalações complicadas. Este artigo irá guiá-lo detalhadamente na configuração e utilização do SCWS no ambiente ServBay, cobrindo tanto a ferramenta de linha de comando quanto a API PHP.
Visão Geral
O SCWS é uma biblioteca de segmentação de alta performance, especialmente adequada para cenários que exigem segmentação rápida e precisa de grandes volumes de texto chinês. Ele suporta múltiplos modos de segmentação, dicionários personalizados e regras configuráveis, sendo uma ferramenta fundamental para aplicações como busca, recomendação de conteúdo e análise textual. O ServBay integra o SCWS aos seus pacotes, com uma extensão PHP já compilada, tornando o uso do SCWS em ambientes de desenvolvimento locais muito mais simples.
Pré-requisitos
- Você deve ter o ServBay instalado e funcionando corretamente em um sistema macOS.
Instalação e Configuração
Instalação
O ServBay foi projetado para oferecer um ambiente de desenvolvimento pronto para uso. O SCWS, como uma ferramenta fundamental para processamento de chinês, já vem pré-instalado como parte do ServBay. Não é necessário baixar ou compilar nada extra. Os executáveis, arquivos de configuração e dicionários do SCWS ficam organizados dentro do diretório de instalação do ServBay, cujo caminho padrão normalmente é /Applications/ServBay/
.
Configuração
O arquivo de configuração padrão do SCWS encontra-se em /Applications/ServBay/etc/scws/scws.ini
. Você pode editar este arquivo conforme suas necessidades para ajustar o comportamento de segmentação, charset, dicionários e regras do SCWS.
Exemplo do conteúdo do arquivo de configuração padrão:
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]
: Define o charset padrão, geralmente mantenha comoutf8
.[rule]
: Caminho para o arquivo de regras de segmentação.[dict]
: Caminho para o(s) arquivo(s) de dicionário. Você pode listar vários arquivos separados por vírgula,
.
Uso Básico: Ferramenta de Linha de Comando
O SCWS oferece uma poderosa ferramenta de linha de comando, scws
, ideal para realizar testes rápidos de segmentação ou processar textos em lote diretamente no terminal. O ServBay inclui o executável scws
em seu diretório bin
(normalmente /Applications/ServBay/bin
), que já vem adicionado ao PATH do sistema, permitindo o uso direto do comando scws
no terminal.
Exemplos de Segmentação
Veja alguns exemplos básicos de uso do utilitário de linha de comando scws
:
Segmentar uma string
Utilize o pipe para enviar uma string ao comando scws
:
bash
echo "这是一个中文分词的例子" | scws -i
1
Segmentar texto a partir de arquivo
Especifique o arquivo de entrada com -i
e o arquivo de saída com -o
:
bash
scws -i input.txt -o output.txt
1
Utilizar regras de segmentação específicas
Use o parâmetro -r
para indicar o caminho do arquivo de regras personalizado:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
1
Especificar um dicionário
Use o parâmetro -d
para indicar o caminho do dicionário personalizado:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
Uso Avançado
Dicionários Personalizados
Para melhorar a precisão da segmentação, especialmente para termos técnicos, nomes próprios, nomes de locais ou neologismos, você pode criar seus próprios dicionários. O SCWS utiliza um formato eficiente de dicionário xdb
. O ServBay inclui a ferramenta scws-gen
para converter arquivos de texto em dicionários xdb
.
Passos para Criar um Dicionário Personalizado:
Crie um arquivo de texto, por exemplo,
custom_dict.txt
, com uma palavra por linha. Opcionalmente, inclua um valor numérico após a palavra para indicar o peso (impacta a prioridade de segmentação).ServBay 10 Ambiente de desenvolvimento local 8 Segmentação de palavras em chinês 9
1
2
3Use a ferramenta
scws-gen
para gerar o dicionário no formatoxdb
. A ferramenta também está no diretóriobin
do ServBay.bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1Edite o arquivo de configuração do SCWS (
/Applications/ServBay/etc/scws/scws.ini
) na seção[dict]
adicionando o caminho para seu dicionário personalizado, após o dicionário padrão, separados por vírgula.ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2Certifique-se de que
/path/to/your/custom_dict.xdb
corresponda ao local real do dicionário personalizado.
Ajuste das Regras de Segmentação
O arquivo de regras (por padrão em /Applications/ServBay/etc/scws/rules.ini
) define como o SCWS trata estruturas ambíguas ou complexas em chinês. Modificar este arquivo requer conhecimento avançado dos algoritmos do SCWS. Para a maioria dos casos, usar as regras padrão junto com dicionários personalizados já atende bem às necessidades. Se for mexer nas regras, faça alterações com cautela e consulte a documentação oficial da SCWS para os detalhes de sintaxe (se fornecida na versão do SCWS incluída pelo ServBay).
Exemplo de conteúdo do arquivo de regras (normalmente inclui padrões de correspondência):
ini
[rule]
# Adicione regras personalizadas de segmentação aqui
# Exemplo: definir uma regra simples
# pattern = result
1
2
3
4
2
3
4
Uso da API PHP
Para quem desenvolve aplicações web em PHP, o ambiente PHP do ServBay já inclui a extensão SCWS. Isso significa que você pode utilizar diretamente a API do SCWS em seu código, sem instalar ou configurar nada extra.
Você pode verificar se a extensão SCWS está habilitada acessando a página phpinfo()
do ServBay.
Exemplo de Uso
Veja um exemplo de código PHP simples demonstrando como usar a API do SCWS para segmentação:
php
<?php
// Verifica se a extensão SCWS está carregada
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// Texto a ser segmentado
$text = "ServBay 是一款强大的本地 Web 开发环境,支持 PHP、Node.js、Python 等多种语言,并集成了 MySQL、Nginx 等软件包。";
// Abre uma instância do segmentador SCWS
$sh = scws_open();
// Define o charset, normalmente igual ao encoding do texto
scws_set_charset($sh, 'utf8');
// Define caminhos para dicionário e regras de segmentação
// Certifique-se de que o caminho corresponde aos arquivos do SCWS em ServBay
$dict_path = '/Applications/ServBay/etc/scws/dict.utf8.xdb';
$rule_path = '/Applications/ServBay/etc/scws/rules.ini';
if (!file_exists($dict_path)) {
die("Arquivo de dicionário SCWS não encontrado: " . $dict_path);
}
if (!file_exists($rule_path)) {
die("Arquivo de regras SCWS não encontrado: " . $rule_path);
}
scws_set_dict($sh, $dict_path);
scws_set_rule($sh, $rule_path);
// Envia o texto para segmentação
scws_send_text($sh, $text);
// Obtém e exibe o resultado da segmentação
echo "Texto original: " . $text . "\n";
echo "Resultado da segmentação:\n";
// Loop para obter e exibir cada palavra segmentada
// $res é um array, cada elemento representa um resultado de segmentação (palavra, tipo, etc)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// Exibe somente a palavra segmentada
echo $word_info['word'] . " ";
// Se desejar, exiba mais informações, por exemplo:
// echo "Palavra: " . $word_info['word'] . ", Tipo: " . $word_info['attr'] . ", Peso: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// Fecha a instância SCWS e libera recursos
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
Você pode salvar este código em um arquivo .php
, por exemplo segment_test.php
, e colocá-lo no diretório raiz do seu site no ServBay (/Applications/ServBay/www/servbay.demo/
, assumindo o nome do site configurado como servbay.demo
). Acesse o arquivo via navegador ou execute-o no terminal usando o PHP CLI para visualizar o resultado da segmentação.
Principais Funções
Aqui estão algumas das funções principais da extensão SCWS para PHP:
scws_open()
: Inicializa e abre uma instância do SCWS. Retorna um handle de recurso em caso de sucesso, oufalse
em caso de erro.scws_set_charset($sh, $charset)
: Define o charset da instância$sh
.scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: Define o(s) dicionário(s) de segmentação para a instância$sh
. O parâmetro$mode
indica o formato (o recomendado éxdb
).scws_set_rule($sh, $rule_path)
: Define o arquivo de regras para segmentação.scws_send_text($sh, $text)
: Envia texto para segmentação.scws_get_result($sh)
: Retorna o resultado da segmentação em array a cada chamada, até que retornefalse
.scws_close($sh)
: Fecha a instância e libera recursos.
Para funções avançadas (ignorar pontuação, ajustar modo de segmentação, pesos etc.), consulte a documentação oficial da extensão PHP do SCWS.
Perguntas Frequentes (FAQ)
1. O resultado da segmentação não está preciso, o que fazer?
- Solução: Primeiro, confira se o arquivo de configuração
/Applications/ServBay/etc/scws/scws.ini
aponta corretamente para o(s) dicionário(s) (dict
) e regras (rule
). Certifique-se de que esses arquivos existem e estão acessíveis. Para textos de domínios específicos ou neologismos, crie e adicione um dicionário personalizado (usescws-gen
para gerar no formatoxdb
) e insira seu caminho no arquivo de configuração. Ajustar pesos ou regras pode ajudar ainda mais, mas exige conhecimento avançado.
2. O SCWS está lento, segmentando devagar?
- Solução: Use somente dicionários no formato
xdb
, que são otimizados para velocidade. Dicionários antigos em formato texto são mais lentos. No arquivo de configuração, garanta que está referenciando um arquivoxdb
. Para textos muito grandes, divida-os em blocos para processamento.
3. Ferramenta de linha de comando SCWS não encontrada?
- Solução: Geralmente isso acontece quando o diretório de executáveis do ServBay não está no PATH do sistema. Tente rodar o comando especificando o caminho completo, por exemplo:
/Applications/ServBay/bin/scws -i ...
. Alternativamente, adicione/Applications/ServBay/bin
ao PATH no seu arquivo de configuração do shell (~/.bash_profile
,~/.zshrc
etc.), e recarregue as configurações ou reinicie o terminal.
4. Função scws_open()
falha no PHP ou não existe?
- Solução: Isso indica que a extensão SCWS para PHP não está carregada. Verifique, através do painel do ServBay, a versão do PHP em uso e consulte a página
phpinfo()
(ServBay geralmente oferece um atalho) para ver se a extensão está listada e habilitada. Caso não esteja, confira se o arquivo de configuração (php.ini
) incluiextension=scws.so
, e sescws.so
está presente no diretório de extensões do PHP (o ServBay já configura isso por padrão). Persistindo o problema, reinicie os serviços do ServBay.
Conclusão
O SCWS é um sistema poderoso e eficiente para segmentação de palavras em chinês. Com o pacote e extensão PHP pré-integrados no ServBay, desenvolvedores podem instalar, configurar e utilizar facilmente o SCWS no ambiente macOS local, seja processando texto via linha de comando ou integrando a segmentação dinâmica em aplicações PHP. Siga este guia para começar rapidamente e aproveite o SCWS para aprimorar o processamento de textos em chinês em seus projetos.