Em cenários de análise de texto, recuperação de informações, mineração de texto, extração de recursos, criação de mecanismos de busca, tradução automática ou treinamento de modelos de linguagem, use um nó PyODPS no DataWorks para segmentar texto em chinês com a ferramenta de segmentação open source Jieba. Essa abordagem permite analisar e processar textos com eficiência. Se o dicionário padrão do Jieba não atender às suas necessidades de negócio, crie um dicionário personalizado para adicionar termos ou ajustar os resultados da segmentação.
Informações básicas
O DataWorks oferece nós PyODPS que permitem editar código Python e usar o MaxCompute SDK for Python para desenvolvimento de dados. Há dois tipos disponíveis: PyODPS 2 e PyODPS 3. O PyODPS 3 fornece uma API simples e fácil de usar, instalável via pip, o que facilita o uso dos recursos e funcionalidades do MaxCompute. Recomendamos o uso de nós PyODPS 3 para o desenvolvimento de dados. Para mais informações, consulte Desenvolver uma tarefa PyODPS 3.
Os nós PyODPS 3 suportam apenas Python 3.X. Os nós PyODPS 2 suportam Python 2.X e Python 3.X. Para usar Python 2.X, selecione exclusivamente nós PyODPS 2.
As operações descritas neste tópico servem apenas como referência. Não as utilize diretamente no ambiente de produção.
Pré-requisitos
Crie um workspace do DataWorks. Para mais informações, consulte Criar e gerenciar workspaces.
Vincule um mecanismo de computação MaxCompute ao DataStudio. Para mais detalhes, consulte Criar uma fonte de dados MaxCompute e vinculá-la a um workspace.
Preparação: Baixar o pacote open source Jieba
Baixe o pacote open source Jieba do repositório GitHub em https://github.com/fxsjy/jieba. Clique em no botão Code no canto superior direito e selecione Download ZIP para obter o arquivo compactado com o código-fonte.
Prática 1: Usar o pacote open source Jieba para segmentar texto em chinês
Crie um fluxo de trabalho. Para mais informações, consulte Criar um fluxo de trabalho.
-
Crie um recurso do MaxCompute e carregue o pacote jieba-master.zip.
Clique em com o botão direito no fluxo de trabalho criado e escolha .
-
Na caixa de diálogo Create Resource, configure os parâmetros e clique em Create.
Neste exemplo, defina Engine Type como MaxCompute, Engine Instance como doc_test e Resource Type como Archive. Marque a opção Upload as ODPS Resource.
Parâmetro
Descrição
Upload File
Clique em Click Upload e selecione o arquivo jieba-master.zip baixado anteriormente.
Name
Nome do recurso. Deve seguir as convenções de nomenclatura, mas não precisa ser idêntico ao nome do arquivo enviado. Neste exemplo, o nome definido é jieba-master.zip.
Clique em no ícone
na barra de ferramentas superior para submeter o recurso.
-
Crie uma tabela chamada jieba_test e outra chamada jieba_result. A tabela jieba_test armazena os dados de teste; a jieba_result guarda o resultado obtido.
Clique em com o botão direito no fluxo de trabalho criado e escolha . Crie as tabelas e use o modo DDL para configurar seus campos. Após a criação, submeta-as ao ambiente de desenvolvimento. Para mais detalhes sobre 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 das 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.
-
Baixe os dados de teste e importe-os para a tabela jieba_test.
Baixe o arquivo jieba_test.csv, que contém os dados de teste, para sua máquina local.
Na página DataStudio, clique em no ícone
.Na caixa de diálogo Data Import Wizard, insira jieba_test como tabela de destino, selecione-a e clique em Next.
Carregue o arquivo jieba_test.csv do seu computador, ajuste as configurações de upload, visualize os dados e clique em Next.
Selecione By Name e clique em Import Data.
-
Crie um nó PyODPS 3.
Clique em com o botão direito no fluxo de trabalho criado e escolha .
Na caixa de diálogo Create Node, insira um Name (por exemplo, Name) e clique em OK.
-
Execute o código de segmentação com o pacote open source Jieba.
Execute o código de exemplo abaixo no nó PyODPS 3 para segmentar os dados de teste na tabela jieba_test e retornar as primeiras 10 linhas do resultado:
def test(input_var): import jieba result = jieba.cut(input_var, cut_all=False) return "/ ".join(result) # odps.stage.mapper.split.size can be used to increase parallelism. hints = { 'odps.isolation.session.enable': True, 'odps.stage.mapper.split.size': 64, } libraries =['jieba-master.zip'] # Reference your jieba-master.zip archive. src_df = o.get_table('jieba_test').to_df() # Reference the data in your jieba_test table. result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries) print(result_df.head(10)) # View the first 10 rows of the segmentation results. For more data, query the jieba_result table.NotaUse o parâmetro odps.stage.mapper.split.size para aumentar o paralelismo da execução. Para mais informações, consulte Parâmetros de flag.
-
Visualize o resultado.
Use um dos métodos a seguir para verificar o resultado da execução do programa de segmentação Jieba:
Método 1: Verifique os resultados na área Operational Logs, na parte inferior da página.
-
Método 2: No painel de navegação à esquerda, clique em Ad Hoc Query para criar um nó de consulta ad hoc. Em seguida, consulte os dados na tabela jieba_result.
select * from jieba_result;
Prática 2: Usar um dicionário personalizado para segmentar texto em chinês
Se o dicionário padrão da ferramenta Jieba não atender aos seus requisitos, use um dicionário personalizado. Esta seção apresenta um exemplo prático de como aplicar um dicionário personalizado na segmentação de texto em chinês.
-
Crie um recurso do MaxCompute.
Use uma função definida pelo usuário (UDF) do PyODPS para ler recursos carregados no MaxCompute, sejam tabelas ou arquivos. Nesse cenário, escreva a UDF como uma função closure ou como método de uma classe chamável (callable class).
NotaCrie funções do MaxCompute no DataWorks para referenciar UDFs complexas. Para mais detalhes, consulte Criar e usar uma função do MaxCompute.
Nesta seção, chame uma função closure para referenciar o arquivo de dicionário personalizado key_words.txt, previamente carregado no MaxCompute.
-
Crie um recurso do MaxCompute do tipo File.
Clique em com o botão direito no fluxo de trabalho criado e escolha . Insira o nome do recurso key_words.txt e clique em Create.
-
Na aba de configuração do recurso key_words.txt, insira o conteúdo do dicionário personalizado, salve e submeta o recurso.
O conteúdo abaixo serve como exemplo para o dicionário personalizado. Adapte as entradas conforme as necessidades do seu teste.
-
-
Execute o código de segmentação com o dicionário personalizado.
Execute o código de exemplo a seguir no nó PyODPS 3 para segmentar os dados de teste na tabela jieba_test e obter as primeiras 10 linhas do resultado:
def test(resources): import jieba fileobj = resources[0] jieba.load_userdict(fileobj) def h(input_var): # In the nested function h(), load the dictionary and perform segmentation. result = jieba.cut(input_var, cut_all=False) return "/ ".join(result) return h # odps.stage.mapper.split.size can be used to increase parallelism. hints = { 'odps.isolation.session.enable': True, 'odps.stage.mapper.split.size': 64, } libraries =['jieba-master.zip'] # Reference your jieba-master.zip archive. src_df = o.get_table('jieba_test').to_df() # Reference the data in your jieba_test table. file_object = o.get_resource('key_words.txt') # get_resource() references a MaxCompute resource. mapped_df = src_df.chinese.map(test, resources=[file_object]) # The map function calls the function and passes the resources parameter. result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries) print(result_df.head(10)) # View the first 10 rows of the segmentation results. For more data, query the jieba_result2 table.NotaUse o parâmetro odps.stage.mapper.split.size para melhorar o paralelismo da execução. Para mais informações, consulte Parâmetros de flag.
-
Visualize o resultado.
Escolha uma das opções abaixo para ver o resultado da execução com o dicionário personalizado:
Opção 1: Analise os resultados na área Operational Logs, na parte inferior da página.
-
Opção 2: No painel de navegação à esquerda, clique em Ad Hoc Query para criar um nó de consulta ad hoc e visualize os dados na tabela jieba_result2.
select * from jieba_result2;