Todos os produtos
Search
Central de documentação

MaxCompute:Use um nó PyODPS para segmentar texto em chinês com base no Jieba

Última atualização: Nov 05, 2026

Você pode usar um nó PyODPS no DataWorks para segmentar texto em chinês com o Jieba, a ferramenta de segmentação de código aberto, para casos de uso como análise de texto, recuperação de informações, mineração de texto, extração de recursos, construção de mecanismos de busca, tradução automática e treinamento de modelos de linguagem. Se o dicionário padrão do Jieba não atender aos seus requisitos, você pode criar um dicionário personalizado para adicionar entradas ou modificar os resultados da segmentação.

Informações de contexto

O DataWorks fornece nós PyODPS que permitem editar código Python e usar o MaxCompute SDK for Python para desenvolvimento de dados. Os nós PyODPS incluem as variantes PyODPS 2 e PyODPS 3. O PyODPS 3 oferece uma API mais simples e pode ser instalado usando pip, proporcionando melhor acesso aos recursos e funcionalidades do MaxCompute. Recomendamos o uso de nós PyODPS 3. Para mais informações, consulte Desenvolver uma tarefa do PyODPS 3.

Importante
  • Os nós do PyODPS 3 suportam apenas o Python 3.X. Os nós do PyODPS 2 suportam o Python 2.X e o Python 3.X. Se você quiser usar o Python 2.X, poderá selecionar apenas nós do PyODPS 2.

  • As operações neste tópico são apenas para referência. Não as utilize em ambientes de produção.

Pré-requisitos

  1. Um espaço de trabalho do DataWorks foi criado. Para obter mais informações, consulte Criar e gerenciar espaços de trabalho.

  2. Você tem um mecanismo de computação MaxCompute vinculado ao DataStudio. Para mais informações, consulte Criar uma fonte de dados do MaxCompute e vinculá-la a um workspace.

Preparação: Baixar o pacote de código aberto Jieba

Baixe o pacote Jieba de código aberto do seu repositório do GitHub em https://github.com/fxsjy/jieba. Clique no botão Code no canto superior direito e selecione Download ZIP para baixar o arquivo de código-fonte.

Prática 1: Use o pacote Jieba de código aberto para segmentar texto em chinês

  1. Crie um fluxo de trabalho. Para mais informações, consulte Criar um fluxo de trabalho.

  2. Crie um recurso do MaxCompute e faça upload do pacote jieba-master.zip.

    1. Clique com o botão direito no workflow que você criou e selecione Criar Recurso > MaxCompute > Arquivo.

    2. No Criar Recurso caixa de diálogo, configure os parâmetros e clique Criar.

      Neste exemplo, defina o Tipo de mecanismo como MaxCompute, a Instância do mecanismo como doc_test e o Tipo de recurso como Archive. Selecione Fazer upload como recurso do ODPS.

      Parâmetro

      Descrição

      Carregar arquivo

      Clique Clique em Upload e selecione o arquivo baixado jieba-master.zip arquivo.

      Nome

      O nome do recurso. Deve seguir as convenções de nomenclatura, mas não precisa corresponder ao nome do arquivo enviado. Neste exemplo, o nome está definido como jieba-master.zip.

    3. Clique no 提交ícone Commit na barra de ferramentas superior para fazer o commit do recurso.

  3. Crie uma tabela chamada jieba_test e outra chamada jieba_result. A tabela jieba_test é usada para armazenar dados de teste. A tabela jieba_result é usada para armazenar o resultado do teste.

    Clique com o botão direito no workflow que você criou e escolha Criar Tabela > MaxCompute > Tabela. Crie as tabelas e use o modo DDL para configurar seus campos. Após a criação das tabelas, faça o commit delas no ambiente de desenvolvimento. Para obter mais informações sobre a criação de tabelas, consulte Criar e usar tabelas do MaxCompute.

    A tabela a seguir descreve as instruções DDL usadas para configurar os campos nas duas tabelas.

    Tabela

    Instrução DDL

    Descrição

    jieba_test

    CREATE TABLE jieba_test (
        `chinese` string,
        `content` string
    );

    Armazena dados de teste.

    jieba_result

    CREATE TABLE jieba_result (
        `chinese` string
    ) ;

    Armazena o resultado do teste.

  4. Baixe os dados de teste e importe-os para a tabela jieba_test.

    1. Baixe o jieba_test.csv arquivo que contém dados de teste para a sua máquina local.

    2. No DataStudio página, clique no 导入ícone Importar.

    3. No Assistente de Importação de Dados caixa de diálogo, insira jieba_test como a tabela de destino, selecione-a e clique Próximo.

    4. Faça o upload do arquivo jieba_test.csv do seu computador, defina as configurações de upload, visualize a prévia dos dados e clique Próximo.

    5. Selecionar Por nome e clique Importar Dados.

  5. Crie um nó PyODPS 3.

    1. Clique com o botão direito no workflow que você criou e escolha Criar Node > MaxCompute > PyODPS 3.

    2. No Criar Nó caixa de diálogo, insira um Nome (por exemplo, word_split) e clique OK.

  6. Use o pacote de código aberto Jieba para executar o código de segmentação.

    Execute o seguinte código de exemplo no nó PyODPS 3 para segmentar os dados de teste no jieba_test tabela e retorne as primeiras 10 linhas dos dados do resultado da segmentação:

    def test(input_var):
        import jieba
        result = jieba.cut(input_var, cut_all=False)
        return "/ ".join(result)
    # odps.stage.mapper.split.size pode ser usado para aumentar o paralelismo.
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # Referencie o arquivo jieba-master.zip.
    src_df = o.get_table('jieba_test').to_df()  # Referencie os dados da tabela jieba_test.
    result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries)
    print(result_df.head(10))  # Visualize as 10 primeiras linhas dos resultados da segmentação. Para mais dados, consulte a tabela jieba_result.
    Nota

    odps.stage.mapper.split.size pode ser usado para melhorar o paralelismo de execução. Para obter mais informações, consulte Parâmetros de flag.

  7. Visualize o resultado.

    Você pode visualizar os resultados da segmentação do Jieba usando um dos seguintes métodos:

    • Método 1: Visualize os resultados no Logs operacionais área na parte inferior da página.

    • Método 2: No painel de navegação à esquerda, clique Consulta Ad Hoc para criar um nó Ad Hoc Query. Em seguida, visualize os dados no jieba_result tabela.

      select * from jieba_result;

Prática 2: Use um dicionário personalizado para segmentar texto em chinês

Se o dicionário padrão do Jieba não atender aos seus requisitos, você pode usar um dicionário personalizado para segmentar textos em chinês. O exemplo a seguir demonstra essa abordagem.

  1. Crie um recurso do MaxCompute.

    As funções definidas pelo usuário (UDFs) do PyODPS podem ler recursos carregados no MaxCompute, incluindo tabelas e arquivos. A UDF deve ser escrita como uma função closure ou uma classe chamável.

    Nota

    Você pode criar funções do MaxCompute no DataWorks para referenciar UDFs complexas. Para obter mais informações, consulte Criar e usar uma função do MaxCompute.

    O exemplo a seguir usa uma função closure para referenciar o arquivo de dicionário personalizado. key_words.txt carregado no MaxCompute.

    Um dicionário personalizado estende o dicionário padrão do Jieba. Após adicionar as palavras que você deseja manter intactas ao dicionário personalizado, o Jieba as retorna como palavras completas durante a segmentação, em vez de dividi-las ainda mais. Isso melhora a precisão da segmentação para termos específicos de domínio e outras palavras que o dicionário padrão não consegue reconhecer corretamente.

    1. Crie uma função do MaxCompute do tipo File.

      Clique com o botão direito no workflow que você criou e selecione Criar Recurso > MaxCompute > Arquivo. Insira o nome do recurso palavras-chave.txt e clique Criar.

    2. Na aba de configuração do recurso key_words.txt, insira o conteúdo do dicionário personalizado, salve e confirme o recurso.

  2. Use o dicionário personalizado para executar o código de segmentação.

    Execute o seguinte código de exemplo no nó PyODPS 3 para segmentar os dados de teste no jieba_test tabela e retorne as primeiras 10 linhas dos dados de resultado da segmentação:

    def test(resources):
        import jieba
        fileobj = resources[0]
        jieba.load_userdict(fileobj)
        def h(input_var):  # Na função aninhada h(), carregue o dicionário e execute a segmentação.
            result = jieba.cut(input_var, cut_all=False)
            return "/ ".join(result)
        return h
    # odps.stage.mapper.split.size pode ser usado para aumentar o paralelismo.
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # Referencie seu arquivo jieba-master.zip.
    src_df = o.get_table('jieba_test').to_df()  # Referencie os dados da sua tabela jieba_test.
    file_object = o.get_resource('key_words.txt') # get_resource() referencia um recurso do MaxCompute.
    mapped_df = src_df.chinese.map(test, resources=[file_object])  # A função map chama a função e passa o parâmetro resources.
    result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries)
    print(result_df.head(10))  # Visualize as 10 primeiras linhas dos resultados da segmentação. Para obter mais dados, consulte a tabela jieba_result2.
    Nota

    odps.stage.mapper.split.size pode ser utilizado para melhorar o paralelismo de execução. Para mais informações, consulte Parâmetros de flag.

  3. Visualize o resultado.

    Você pode visualizar os resultados da segmentação do dicionário personalizado usando um dos seguintes métodos:

    • Método 1: Visualizar os resultados no Logs operacionais área na parte inferior da página.

    • Método 2: No painel de navegação à esquerda, clique Consulta Ad Hoc para criar um nó Ad Hoc Query. Em seguida, visualize os dados no jieba_result2 tabela.

      select * from jieba_result2;