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.xdb1
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 -i1
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.txt1
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.ini1
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.xdb1
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 91
2
3Use a ferramenta
scws-genpara gerar o dicionário no formatoxdb. A ferramenta também está no diretóriobindo ServBay.bashscws-gen -i custom_dict.txt -o custom_dict.xdb1Edite 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.xdb1
2Certifique-se de que
/path/to/your/custom_dict.xdbcorresponda 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 = result1
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, oufalseem 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$modeindica 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.iniaponta 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-genpara 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/binao PATH no seu arquivo de configuração do shell (~/.bash_profile,~/.zshrcetc.), 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.soestá 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.
