Conteúdo


Descubra e use terminologia do mundo real com o IBM Watson Content Analytics

Desenvolva dicionários de domínio de amostra para análise de dados

Comments

Argumentos a favor de dados não estruturados

Há muito interesse sobre a variedade de informações que a sociedade produz em quantidades sempre crescentes (seja nas empresas, na web ou em redes sociais). É possível usar esses dados de várias maneiras para produzir insights que podem melhorar a saúde, a democracia ou a maneira como você faz negócios. Esses insights baseados em dados são o playground tradicional de Analytics ou Business Intelligence (BI), que normalmente contam com dados estruturados, como datas, valores financeiros, quantidades ou nomes de empresas. Porém, a maioria dos dados está em formato não estruturado — textos, imagens, filmes— em proporções que variam de 70% para dados corporativos a quase 100% para mídia social.

Qualquer aplicativo de análise que use apenas dados estruturados o faz, portanto, sem cerca de quatro quintos das informações disponíveis. Extrair informações estruturadas de fontes não estruturadas parece ser obrigatório na era de Big Data. Este tutorial foca em dados textuais e mostra como extrair informações terminológicas relevantes para um domínio de negócios.

IBM Watson Content Analytics

O IBM Content Analytics com procura corporativa é uma plataforma de procura e análise. Ele utiliza análise de rich text para trazer à tona novos insights acionáveis de muitas fontes e tipos de conteúdo textual, incluindo conteúdo corporativo, conteúdo da web (como mídia social), email ou bancos de dados.

Na prática, o IBM Watson Content Analytics (WCA) pode ser usado de duas maneiras gerais:

  • Uso imediato de visualizações analíticas para produzir insights rápidos por meio de conjuntos dimensionáveis de conteúdos. Essas visualizações costumam operar em máscaras. Máscaras são aspectos significativos dos documentos derivados de metadados que já estão estruturados (por exemplo, data, autor, tags) ou de conceitos extraídos de conteúdo textual.
  • Por meio da extração de entidades ou conceitos para uso por visualização de análise do WCA ou outras soluções de recebimento de dados. Exemplos típicos incluem a mineração de relatórios de análises de laboratório ou de médicos para preencher prontuários de pacientes, extrair entidades nomeadas e relacionamentos para alimentar software de investigação ou definir uma tipologia de sentimentos expressos em redes sociais para melhorar a análise estatística do comportamento do consumidor.

O WCA usa a tecnologia de processamento de linguagem natural (NLP) para extrair informações sobre dados não estruturados (ou textos). Essas informações podem ser encontradas nos seguintes formatos:

  • Conceitos ou entidades atômicas, como pessoas, lugares, empresas, peças de aeronaves, ações de manufatura;
  • Combinações das informações anteriores, geralmente envolvendo algum nível de relacionamento entre os conceitos. Como exemplo, podemos mencionar uma pessoa e seu trabalho, uma empresa e o domínio do seu setor, a operação de manutenção de uma peça de aeronave específica, um antecedente médico de um paciente que envolva uma ligação familiar e um problema de saúde.

O WCA processa texto bruto de fontes de conteúdo por meio de um pipeline de operações em conformidade com o padrão da UIMA. A UIMA (Unstructured Information Management Architecture) é uma arquitetura de software que tem como objetivo desenvolver e implementar recursos para a análise de informações não estruturadas. Pipelines do WCA incluem estágios como detecção do idioma de origem, análise léxica, extração de entidade ou aplicação de extração de conceito customizada. A extração de conceito customizada é realizada por anotadores, que identificam informações expressas como segmentos de texto. Os anotadores podem ser criados com o IBM Content Analytics Studio (WCA Studio), um ambiente gráfico baseado em Eclipse que facilita o design e o teste de anotadores com base em dicionários e regras.

O foco deste artigo está no aperfeiçoamento da criação de dicionários de domínio. A aquisição de dicionários pode parecer uma tarefa simples quando terminologias de domínio estão disponíveis. Porém, a realidade dos conteúdos é que os autores não necessariamente seguem a terminologia canônica, como é visto mais adiante. Daí a necessidade de um corpus de textos que seja representativo do domínio em estudo. Neste artigo, uso um corpus de reclamações de usuários de automóveis. Eu descrevo a exploração do corpus na pesquisa de terminologia de domínio, com a ajuda das funcionalidades nativas de linguística e análise do WCA. Também mostro como essas operações podem ser aperfeiçoadas para produzir semiautomaticamente dicionários que possam ser usados no WCA Studio para realizar mais tarefas de anotação. Na seção final, descrevo um possível uso dos dicionários, ou seja, a identificação de novos registros de reclamação com informações sobre os componentes que possivelmente estão envolvidos no problema.

O artigo presume conhecimento básico do Watson Content Analytics. Para obter mais informações sobre o WCA, consulte Temas relacionados.

Desenvolvendo o corpus de origem

A fonte de amostra

O Departamento de Transportes dos Estados Unidos estabeleceu a National Highway Traffic Safety Administration (NHTSA) para que todas as informações sobre todos os problemas relacionados à segurança de veículos estejam disponíveis para os consumidores. A NHTSA recebe reclamações sobre problemas de segurança automotiva através de seu website ou de outros canais, como email ou telefone.

No website (https://www-odi.nhtsa.dot.gov/VehicleComplaint/index.xhtml), os usuários podem inserir informações sobre o veículo (marca - modelo – ano) e o incidente. Essa última parte contém campos de escolha restrita: data, se houve incêndio / colisão / ferimentos, quilometragem, velocidade, peças afetadas (em uma lista de 17 peças automotivas de alto nível) e entrada de texto livre sob "Tell us what happened". Como resultado, os dados disponíveis sobre um incidente contêm a combinação típica de dados estruturados e não estruturados:

Figura 1. Formulário da NHTSA para registrar uma reclamação de segurança
Screen capture of the online form provided by NHTSA to file vehicle safety complaints;      the form has three sections, vehicle information, incident information and personal     information
Screen capture of the online form provided by NHTSA to file vehicle safety complaints; the form has three sections, vehicle information, incident information and personal information

Os dados resultantes são disponibilizados ao público no site da NHTSA. Esses conteúdos são anônimos, visto que não possuem identidades pessoais ou placas de licença. Nos dados da reclamação, descobri que o campo "component" é preenchido com um conjunto de valores mais amplo que os poucos permitidos no formulário online, em que os usuários podem escolher apenas três entre 17 peças automotivas de alto nível. Essa variedade sugere que os dados da NHTSA são enriquecidos com informações após a entrada do usuário, embora isso não seja documentado no site.

Carregando dados da NHTSA no WCA

Os dados da NHTSA podem ser obtidos na página FLAT FILE COPIES OF NHTSA/ODI DATABASES. O centro de conhecimento do produto do WCA explica como importar um arquivo .csv para uma coleção. Esse processo não é descrito em mais detalhes aqui.

Fiz o download de mais de 230 mil registros correspondentes a reclamações de usuários de 2005 a 2011.

Em seguida, importei esses registros em uma coleção de documentos do Watson Content Analytics. Na configuração para a coleção, especifiquei que campos de índice e máscara fossem criados para todos os campos estruturados, como data do incidente, marca e modelo do veículo, ocorrência de um incêndio, colisão, ferimentos ou componentes do veículo mencionados na reclamação.

Figura 2 mostra a visualização do documento no Content Analytics Miner, o aplicativo de análise fornecido com o WCA. Uma lista de máscaras é apresentada na coluna mais à esquerda, com resumos dos diferentes registros no lado direito. Os termos da solicitação, sejam digitados ou selecionados por navegação na máscara, são destacados nestes resumos:

Figura 2. Visualização do documento no Content Analytics Miner
Screen capture of the UI of the Content Analytics Miner application. A column features a list of facets on the left, and in the center a list of three document summaries where the words gas and pedal are highlighted in yellow and green
Screen capture of the UI of the Content Analytics Miner application. A column features a list of facets on the left, and in the center a list of three document summaries where the words gas and pedal are highlighted in yellow and green

Usando máscaras linguísticas para descobrir a terminologia do domínio.

Agora veja como as máscaras linguísticas fornecidas com o IBM Watson Content Analytics podem ajudar a descobrir o vocabulário específico do domínio.

Instruções sobre máscaras linguísticas do WCA

O WCA fornece máscaras imediatamente usáveis para informações de parte do discurso para palavras únicas, como substantivo, verbo ou adjetivo, e para frases, como frases substantivas. A visualização Facets no Content Analytics Miner mostra os valores que uma máscara específica pode adotar no conjunto de documentos selecionados pela consulta atual. Esses valores podem ser classificados por frequência, ou seja, o número de documentos que contêm o valor da máscara específica, ou correlação. Correlação é uma medida de quão fortemente o valor da máscara está relacionado ao conjunto de documentos selecionados pela consulta atual em comparação a outros documentos na coleção.

Para entender melhor a diferença entre frequência e correlação, veja a lista de substantivos encontrados em toda a coleção de documentos, que estão classificados por frequência. Selecione a visualização Facets e a máscara Part of speech > Noun > General Noun no Facet explorer. (General Noun representa as palavras identificadas como substantivos nos dicionários de linguagem geral, enquanto Others representa palavras desconhecidas.)

Figura 3. Principais valores para a máscara linguística "noun"
Screen capture of the facet view, with facet "General Noun"      highlighted in left column and on the right a list of values: vehicle, it, problem, dealer, car...
Screen capture of the facet view, with facet

Figura 3 mostra os substantivos mais frequentes em toda a coleção de documentos. Não surpreendentemente, os usuários falam do seu problem com ovehicle, dealer ou car.

Observação:It está na lista porque, uma vez que os dados da NHTSA estão em letras maiúsculas, ele foi identificado incorretamente como um substantivo em determinados contextos.

Agora, insira a consulta de procura "storm" (que produz 644 documentos na coleção) e observe como a lista de substantivos selecionados muda dinamicamente:

Figura 4. Principais substantivos com a consulta "storm"
Screen capture of the facet view, with facet "General Noun" highlighted in left column and on the right a list of values: storm, it, rain, problem, car, vehicle, time
Screen capture of the facet view, with facet

Além de storm em si e rain, as outras principais palavras: problem, car, vehicle, time, embora não estejam relacionadas ao conceito de storm, ainda aparecem aqui. Elas são frequentes em todo o corpus e, portanto, também aparecem nesses documentos que estão relacionados a storm.

Classificar os resultados por correlação apresenta resultados diferentes:

Figura 5. Principais substantivos com a consulta "storm", classificados por correlação
Screen capture of the facet view, with facet "General Noun" highlighted in left column and on the right a list of values: storm, snow, rain, wiper, windshield, water, window
Screen capture of the facet view, with facet

Aqui, é possível compreender intuitivamente a forte proximidade entre storm e snow, rain ou water, e você sabe que esses termos possuem alguma relação com wiper, windshield ou window. É possível observar familiaridades entre palavras vinculadas semanticamente. Correlação é claramente uma melhor indicação que frequência para a proximidade semântica entre valores de máscara e os termos da consulta.

Agora analise as frases substantivas, mais especificamente sequências de substantivos, que são classificadas por correlação. Selecione essas máscaras linguísticas sob a supermáscara Phrase Constituent :

Figura 6. Principais sequências de substantivo com a consulta "storm"
Screen capture of the facet view, with facet "Noun Sequence" highlighted in left column and on the right a list of values: rain storm, snow storm, ice storm, wiper arm, windshield wiper, window fall, water leak
Screen capture of the facet view, with facet

A lista em Figura 6 faz sentido no contexto de storm. As principais sequências de substantivo são compostas principalmente por palavras que aparecem na lista dos principais substantivos, o que parece lógico.

Outra máscara de frase interessante é modified noun (ou seja, tipicamente adjetivo + substantivo):

Figura 7. Principais substantivos modificados com a consulta "storm"
Screen capture of the facet view, with facet "Modifier Noun" highlighted in left column and on the right a list of values: tropic...storm, severe...storm, many...dollar, heavy...rain, late...winter, all...window, inclement...weather
Screen capture of the facet view, with facet

Novamente, você encontra frases que contêm a palavra "storm" ou que estão relacionadas a condições climáticas adversas, como heavy rain, late winter ou inclement weather.

Encontrando palavras ou frases associadas a um conceito específico

Se você já tiver uma série de máscaras que identifiquem conceitos gerais com algum interesse comercial, é possível usá-las em vez de consultas de procura simples para navegar na coleção. Considere, por exemplo, componentes de veículo específicos e que vocabulário está associado a eles. Para esse propósito, selecione a máscara Component no facet explorer, altere para a visualização de Facets e selecione um ou mais valores.

Antes disso, maximize o número de valores de máscara exibidos (100 por padrão), uma vez que muito mais valores são possíveis que o conjunto de 100 por padrão no WCA. Para esse propósito, clique no ícone Preferences , escolha a guia Facets e defina Count to analyze para 500:

Figura 8. Configurando o número de máscaras em exibição
Screen capture of the preferences dialogue with attribute "Count to analyze" set to value 500
Screen capture of the preferences dialogue with attribute

Agora veja os possíveis valores para a máscara Component na coleção. Filtre os valores que contêm "wheel", então selecione o valor "WHEELS:LUGS/NUTS/BOLTS" e inclua-o na consulta atual como em Figura 9:

Figura 9. Selecionando documentos relacionados ao componente "WHEELS:LUGS/NUTS/BOLTS"
Screen capture of a list of facet values with WHEELS:LUGS/NUTS/BOLTS selected
Screen capture of a list of facet values with WHEELS:LUGS/NUTS/BOLTS selected

Essa operação resulta em 276 reclamações que são marcadas pela NHTSA como estando relacionadas a WHEELS:LUGS/NUTS/BOLTS. Como os usuários referem-se a esses componentes em suas próprias palavras? Volte para as máscaras linguísticas e verifique que substantivos estão altamente correlacionados ao conjunto de documentos retornado pela sua navegação de máscara:

Figura 10. Principais substantivos relacionados ao componente "WHEELS:LUGS/NUTS/BOLTS"
Screen capture of facet values with a list of nouns: lug, stud, nut, Dane, bolt, wrench, dual...
Screen capture of facet values with a list of nouns: lug, stud, nut, Dane, bolt, wrench, dual...

Aqui você encontra palavras do nome de máscara (lug, nut, bolt, wheel), e outras palavras que estão relacionadas ao assunto, como "stud", que descreve a peça macho na qual as porcas da alheta são fixadas, ou o hub da roda, ao qual os parafusos podem ser fixados para prendê-la. Essas palavras refletem o fato de que os usuários podem utilizar terminologia variável quando expressam livremente suas preocupações. Os usuários não necessariamente empregam a terminologia padrão. Em vez disso, podem preferir termos relacionados, sinônimos ou paráfrases, como exemplificado neste extrato de reclamação:

"[...] HAD AFTERMARKET WHEELS AND TIRES REPLACE FOR A BETTER LOOK. ON 09/06, A YEAR LATER, HAD TO HAVE WHEEL STUD REPLACED. DEALERSHIP BILLED ME STATING NOT UNDER WARRANTY BECAUSE HAD WHEELS & TIRES REPLACED. JUST YESTERDAY 11/12/06, SAME INCIDENT OCCURRED AGAIN. ONLY TWO STUDS HAVE TO BE REPLACED THIS TIME"

Suponha que você deseje categorizar automaticamente as reclamações combinando suas palavras com as palavras-chave contidas nos títulos da categoria. Aqui você não vê nenhum lug, nut ou bolt que permita escolher a categoria específica WHEELS:LUGS/NUTS/BOLTS. Em vez disso, é necessário incluir palavras-chave como "stud" ou "hub" à lista de palavras-chave que caracterizam essa categoria.

Conforme você navega no conceito Component com as máscaras linguísticas do WCA, também é fácil encontrar exemplos similares:

  • Palavras associadas a "COMMUNICATIONS:HORN ASSEMBLY" incluem o verbo honk, que intuitivamente soa relevante;
  • O componente "STRUCTURE:BODY:DOOR" produz os substantivos slide, door, handle, opening e os verbos slide, close, open, latch ou snap. Novamente, essas palavras intuitivamente pertencem ao campo lexical de portas, seja com peças de portas (handle) ou ações que podem ser realizadas com portas (close).

Fica claro como o WCA pode ajudar a descobrir o vocabulário que é tipicamente associado, na voz dos usuários, a uma área de assunto específica. Essa propriedade será usada mais adiante neste artigo na identificação das categorias de dados NHTSA. Antes disso, vamos explorar outros aspectos da identificação terminológica com o WCA.

Palavras conhecidas que aparecem de surpresa, palavras desconhecidas que merecem ser conhecidas

A lista de palavras em Figura 10 também contém palavras que não estão diretamente relacionadas à categoria de componente selecionada. Uma palavra indiretamente relacionada é comum no domínio automotivo norte-americano, turnpike, mas outra palavra é surpreendente: Dane – o que Dane está fazendo aqui? O Watson Content Analytics versão 3.5, entre muitos novos recursos, oferece a possibilidade de facilmente alterar os layouts do aplicativo de análise. Em particular, o layout de análise Advanced permite visualizar os resumos do documento relevantes junto a outra visualização E altera o destaque de seleção e a palavra-chave dos documentos quando algo é selecionado nessa outra visualização. Por exemplo, se você clicar em "Dane" na visualização de máscara, a visualização do documento mostra documentos relevantes com a palavra destacada, o que imediatamente lhe diz que esse Dane veio do nome comercial de um trailer:

Figura 11. Encontrando instâncias de "Dane" em reclamações
Screen capture of a list of facet values with Dane selected on the left, and on the right a few complaint summaries with the word Dane highlighted
Screen capture of a list of facet values with Dane selected on the left, and on the right a few complaint summaries with the word Dane highlighted

Esse recurso se torna precioso quando é necessário comparar as suas intuições terminológicas com a realidade do texto.

Além de encontrar termos de domínio (rain storm), termos relacionados (windshield wipers, hub) ou ruído (turnpike, Dane), as máscaras linguísticas do WCA também podem ajudar a encontrar outros itens de interesse. Até o momento, foi usada a submáscara de substantivo geral de Noun. Veja a submáscara "Noun / others", que inclui tokens que não são encontrados em dicionários do WCA. Você ainda está na categoria "WHEELS:LUGS/NUTS/BOLTS":

Figura 12. Explorando palavras fora do vocabulário
Screen capture of the facet view, with a column with facet Others selected on the left, and on the right a list of nouns: EMBRITTLEMENT, FRUEHAUF, OVERTIGHTENED, OHIO, BERM, SOFTAIL, SANAT, NSA, CHEKCING, TRANSCRAFT, MILEMARK, COMPRHENSIVE
Screen capture of the facet view, with a column with facet Others selected on the left, and on the right a list of nouns: EMBRITTLEMENT, FRUEHAUF, OVERTIGHTENED, OHIO, BERM, SOFTAIL, SANAT, NSA, CHEKCING, TRANSCRAFT, MILEMARK, COMPRHENSIVE

Os resultados incluem vários erros ortográficos (chekcing, comprhensive), acrônimos (NSA), termos raros ou recém-cunhados (overtightened), nomes próprios ou palavras técnicas específicas que o WCA não apresenta no seu vocabulário geral (Ohio, embrittlement). Em outros casos, há variantes admissíveis de uma forma, como McPherson para MacPherson. Todas essas provas podem ser de interesse de uma perspectiva de terminologia — por exemplo, erros ortográficos frequentes ou acrônimos usados para encurtar uma palavra de domínio, podem ter um lugar como formas alternativas nos seus dicionários técnicos.

Implementando mais máscaras linguísticas

Durante sua exploração dos dados técnicos, aconteceu de alguns termos relevantes para uma classe de componente não terem sido identificados pelas máscaras linguísticas do WCA. Esse é o caso de termos como right front wheel, main drive pulley ou independent repair shop, que seguem um padrão gramatical de adjetivo-substantivo-substantivo. Esse padrão não é detectado pela máscara linguística "modified noun" do WCA, que está limitada a padrões de adjetivo-substantivo.

Para aprimorar as máscaras integradas do WCA, usei o WCA Studio para criar um anotador que localiza esses padrões. Após ter sido implementado no pipeline, o anotador alimenta uma máscara que batizei de Additional Linguistic Patterns/AdjNP.

Figura 13 mostra a nova máscara Adj NP (para frase de adjetivo-substantivo) na sua implementação do WCA, junto com uma amostra de frases identificadas para WHEELS:LUGS/NUTS/BOLTS):

Figura 13. Implementação da nova máscara linguística Adj-Noun-Phrase
Screen capture of the facet column with AdjNP highlighted,      and a list of terms: broken wheel stud, other defective stud, main drive pulley,      new lug nut, right front wheel, right rear dual, rear passenger wheel, great Dane trailer, ...
Screen capture of the facet column with AdjNP highlighted, and a list of terms: broken wheel stud, other defective stud, main drive pulley, new lug nut, right front wheel, right rear dual, rear passenger wheel, great Dane trailer, ...

Resumindo esta primeira seção, foram utilizados recursos do WCA para identificar palavras ou frases relacionadas a determinadas classes de componentes. Algumas dessas palavras são termos que pertencem ao domínio semântico do componente (como sinônimos), enquanto outras são variações (acrônimos, erros ortográficos, formas alternativas). Na próxima seção, esse recurso será usado para criar dicionários de domínio que poderão ser usados ainda para tarefas como identificação automática de novas reclamações.

Criação de dicionário de domínio

Você sabe o suficiente agora para poder criar seus próprios dicionários de domínio com terminologias relevantes que poderão ser usadas para diversos fins. Mostrarei como criar tais dicionários de domínio manualmente usando a funcionalidade do Content Analytics Miner e, então, como automatizar a criação de dicionários com ajuda da interface de programação de aplicativos (API) do WCA.

Criação de dicionário, o modo manual

Exportando valores de máscara

Valores de máscara exibidos na visualização "Facets" podem ser salvos em um arquivo delimitado por vírgulas (.csv). Clique no botão Report e escolha a opção relevante. Cada valor da máscara apresenta sua frequência e correlação. Por exemplo, depois de selecionar o componente WHEELS:..." , a máscara linguística da sequência de substantivos fornece a seguinte saída quando você a carrega em um software de planilha e a classifica por frequência (em Figura 14) ou correlação (em Figura 15):

Figura 14. Exportação de valores de máscara "Noun Sequence" (classificados por frequência)
Screen capture of an Excel spreadsheet with a list of facet values in the first column: OHIO traffic crash report, failure mileage, lug nut, front wheel, wheel stud, front tire, police report, rear wheel, wheel bearing, ford focus, repair shop, ... The second column gives the frequency and the third column the correlation.
Screen capture of an Excel spreadsheet with a list of facet values in the first column: OHIO traffic crash report, failure mileage, lug nut, front wheel, wheel stud, front tire, police report, rear wheel, wheel bearing, ford focus, repair shop, ... The second column gives the frequency and the third column the correlation.
Figura 15. Exportação de valores de máscara "Noun Sequence" (classificados por correlação)
Screen capture of an Excel spreadsheet with a list of facet values in the first column: wheel stud, lug nut, wheel lug, lug stud, lug bolt, torque wrench, defective stud, tire bolt,... The second column gives the frequency and the third column the correlation.
Screen capture of an Excel spreadsheet with a list of facet values in the first column: wheel stud, lug nut, wheel lug, lug stud, lug bolt, torque wrench, defective stud, tire bolt,... The second column gives the frequency and the third column the correlation.

Na planilha, é possível classificar e filtrar a lista de acordo com diferentes critérios. Por exemplo, é possível escolher manter apenas os termos que têm um valor de correlação acima de um determinado limite, garantindo boa relevância dos resultados.

É preciso repetir o procedimento para sequências de substantivos para outras partes do discurso que produzem termos, como substantivos simples, substantivos modificados ou o padrão de "frase de adjetivo substantivo" aprimorado. Figura 16 mostra uma lista dos principais "termos" obtidos com esses diferentes padrões e classificados por correlação, para a categoria de componente "FUEL SYSTEM, GASOLINE" — todo o processo levou apenas alguns minutos:

Figura 16. Exportação de todos os valores de máscara linguística para a categoria de componente "FUEL SYSTEM, GASOLINE", classificados por correlação
Screen capture of a spreadsheet with a list of facet values      in the first column: sludge build, engine failure due, sludge, rod bearing, engine sludge, use engine,      cylinder head, oil sludge, internal engine, spark plug thread... The second column gives the      frequency and the third column the correlation.
Screen capture of a spreadsheet with a list of facet values in the first column: sludge build, engine failure due, sludge, rod bearing, engine sludge, use engine, cylinder head, oil sludge, internal engine, spark plug thread... The second column gives the frequency and the third column the correlation.

Na Figura 16, há uma combinação de unidades de uma e de várias palavras que, na maioria dos casos, parecem ser termos relevantes para o domínio "engine". Aparece algum ruído, principalmente com marcas de carros ou nomes de modelos. Alguns termos estão incompletos ou são longos demais. Por exemplo, uma rápida análise das ocorrências de "sludge build" nos documentos mostra que o termo completo é uma combinação de "sludge" e "build up". De modo similar, "engine failure due" deve ser reduzido para "engine failure", uma vez que "due" é sempre parte de uma frase composta por "due to..." . O layout de análise aprimorado no minerador do WCA Content Analytics é de grande ajuda nesse processo, uma vez que um clique em um valor de máscara filtra a visualização do documento para todas as ocorrências do termo correspondente:

Figura 17. Consultando o valor de máscara "sludge build" nas reclamações
Screen capture of the document view with a list of facet values      in the first column: sludge build, engine failure due, rod bearing, engine sludge, use engine,      cylinder head, oil sludge... On the right a list of complaint summaries with the term Sludge build highlighted
Screen capture of the document view with a list of facet values in the first column: sludge build, engine failure due, rod bearing, engine sludge, use engine, cylinder head, oil sludge... On the right a list of complaint summaries with the term Sludge build highlighted

Essa filtragem permite uma rápida revisão da lista por especialistas do domínio que aceitam ou rejeitam os candidatos na lista de termos com base no próprio conhecimento do domínio e em evidências dos documentos.

É possível usar a lista de termos resultante para futuras análises. Essa lista é importada para o dicionário do WCA Studio. Nessa perspectiva, é necessário incluir informações de parte do discurso sobre cada termo. Uma vez que você lida com sequências de substantivos, a parte do discurso resultante deve ser "substantivo". Essas informações podem ser facilmente incluídas para todas as entradas ou parte delas com simples comandos de planilha.

Usando o dicionário no WCA Studio

Importar o dicionário para o WCA Studio com o assistente de importação de dicionários é muito simples. A criação e a importação de um dicionário no WCA Studio são descritas em detalhes em "Chemical Dictionaries in ICA Studio", um artigo do developerWorks.

O dicionário resultante pode ser usado para alimentar uma submáscara de "ENGINE...", em que os valores seriam partes do motor, como rod bearing, cylinder head, oil pump, spark plug... O dicionário também pode fazer parte de uma regra de nível superior que combine peças do motor com outro tipo de conceito para gerar uma nova anotação. As anotações criadas por meio de dicionários e regras podem ser implementadas no tempo de execução do WCA, onde podem alimentar novas máscaras no minerador do WCA.

Aperfeiçoando a criação de dicionários

Na seção anterior, você viu como exportar candidatos a terminologia do WCA para o WCA Studio para uma máscara linguística única (substantivo). O processo deve ser repetido para cada máscara linguística que seja interessante para fins terminológicos: substantivo, verbo, frase substantiva (também conhecida como "noun sequence" na interface do minerador do WCA).

Para aperfeiçoar essa operação, use a API REST do WCA para extrair em massa todas essas máscaras. Para fins de concisão, apenas o básico será descrito aqui. O IBM Knowledge Center do WCA explica como acessar a documentação da API REST.

Primeiro, tente obter uma lista de máscaras associadas a toda a coleção inserindo a chamada REST relevante em um campo de endereço do navegador:

http://localhost:8393/api/v10/facets?collection=test_NHTSA&namespace=keyword

que retorna algo como (imagem truncada):

Figura 18. Lista de máscaras obtidas por meio da API REST do WCA
Screen capture of a browser showing the contents of an XML file with linguistic facets internal names
Screen capture of a browser showing the contents of an XML file with linguistic facets internal names

O membro XML facet apresenta um atributo label que fornece o nome de exibição da máscara (por exemplo, "Noun") e um atributo id para o nome "interno" (por exemplo, "$._word.noun"), que é o usado nas chamadas de API. Agora é possível pesquisar possíveis valores da máscara "Noun" com a chamada REST:

http://localhost:8393/api/v10/search/facet?collection=test_NHTSA&facet={"namespace":"keyword","id":"$._word.noun"}&query=*:*

que retorna o seguinte (os resultados estão truncados):

Figura 19. Lista de valores para a máscara linguística "Noun" obtida por meio da API REST do WCA
Screen capture of the contents of an XML file with containing the values of linguistic facets and associated frequency and correlation scores
Screen capture of the contents of an XML file with containing the values of linguistic facets and associated frequency and correlation scores

A chamada REST de pesquisa/máscara retorna os possíveis valores para a máscara Noun, além das estatísticas associadas. Aqui, todos os valores da máscara têm uma correlação de 1, pois o parâmetro de consulta retorna todos os documentos na coleção. O parâmetro de consulta usa a mesma sintaxe que consultas simples do WCA. Modifique sua chamada REST para pesquisar documentos contendo a palavra "engine" e retornar 500 valores de máscara possíveis:

http://localhost:8393/api/v10/search/facet?collection=test_NHTSA&facet={"namespace":"keyword","id":"$._word.noun","count":"500"}&query="engine"

Se você extrair valores de máscara e correlação do documento XML resultante e classificar a lista por correlação decrescente, obterá os principais substantivos listados na Tablela 1:

Tablela 1. Principais substantivos para a consulta "engine"
SubstantivoCorrelação
mecanismo5.945369512024206
sludge5.083791128653582
check4.5708567925714405
misfire4.434578339511516
liter4.100485492528164
compartment3.8341929699503408
cold3.8088538657369537
timing3.6459742040763126
crankshaft3.529813794496392
oxygen3.4589095714483973
piston3.2950541462145404
coolant3.2595967667044956
spark3.2328246789720247
cam3.1382332433086573

A seguir, você deseja realizar a mesma operação com uma consulta sobre a máscara do "componente" NHTSA "WHEELS:LUGS/NUTS/BOLTS", mas como expressar isso como uma consulta do WCA? Volte para o aplicativo Content Analytics Miner, na visualização Facets, selecione esse valor de máscara e clique no botão "Add to query...": o campo de consulta no WCA agora mostra a sintaxe exata que deve ser incluída na chamada REST:

&query=keyword::/"component"/"WHEELS:LUGS/NUTS/BOLTS"

Tablela 2 mostra que a lista resultante dos principais substantivos (classificados por correlação) contém entradas familiares:

Tablela 2. Principais substantivos associados ao componente "WHEELS:LUGS/NUTS/BOLTS"
SubstantivoCorrelação
lug229,0527407353
stud178,3998666573
nut81,0483078168
OHIO30,8503584036
BERM25,8579292585
Dane23,2626241945
bolt18,5593450909
wrench15,8542751694
dual13,9362582749
turnpike12,7908656193

Se desejar criar automaticamente um dicionário associado aos diferentes componentes, Lista 1 mostra o pseudocódigo típico a ser usado:

Lista 1. Pseudocódigo para extrair valores de máscara linguística para diferentes componentes
For each value Vc of the "components" facet     # for example WHEELS:LUGS/NUTS/BOLTS...
    For each value Vl of linguistic facets      # for example, Noun,Verb,Noun Phrase...
        Get values Vlc of facet Vl restricted with a query on Vc
        For each Vlc
            Output Vlc, Vc, part-of-speech, frequency, correlation
        End for
    End For
End For

Esse código básico pode ser refinado para incluir filtros — por exemplo, para rejeitar candidatos a termo sob determinados limites de correlação — ou para incluir vários componentes possíveis para uma palavra.

Como um exemplo, implementei um script no Microsoft Powershell que realiza essa extração. Para cada candidato a termo, ele retorna os dois componentes associados com as principais pontuações de correlação. Figura 20 mostra os principais resultados. (A saída é classificada por correlação. Alguns nomes de componente estão truncados.):

Figura 20. Termos automaticamente extraídos e códigos de componente associados
Screen capture of a spreadsheet with a list of terms      in the first column: kickstand, relay rod, overhead shield, steering relay, torsion bar, torsion, auxiliary tank,      advance carbon, carbon composite... The second column gives the part of speech, the third columns gives the component code, and the fourth column gives the correlation
Screen capture of a spreadsheet with a list of terms in the first column: kickstand, relay rod, overhead shield, steering relay, torsion bar, torsion, auxiliary tank, advance carbon, carbon composite... The second column gives the part of speech, the third columns gives the component code, and the fourth column gives the correlation

Como se pode ver, alguns candidatos a termo possuem mais de um código de componente associado: por exemplo, shackle pertence a SUSPENSION:REAR....:SHACKLE, mas também tem uma associação significativa com STRUCTURE:FRAME AND MEMBERS.

Outros casos ocorrem quando os códigos do componente são relatados: tether ou tether strap ocorrem significativamente em reclamações da NHTSA que estão relacionadas a CHILD SEAT, mas ainda mais naquelas identificadas como CHILD SEAT:TETHER (STRAP). As últimas são códigos de componente detalhados com uma maior profundidade na hierarquia dos componentes.

Nos valores inferiores da correlação, não é surpresa encontrar mais ruído:

Figura 21. Termos automaticamente extraídos com valores inferiores da pontuação de correlação
Screen capture of a spreadsheet with a list of terms      in the first column: avalanche, plastic clip, brake pressure, instruction, six tire, squeal, uneven road,      drain, any tire, grill, liter... The second column gives the part of speech, the third columns gives the component code,      and the fourth column gives the correlation
Screen capture of a spreadsheet with a list of terms in the first column: avalanche, plastic clip, brake pressure, instruction, six tire, squeal, uneven road, drain, any tire, grill, liter... The second column gives the part of speech, the third columns gives the component code, and the fourth column gives the correlation

Um relacionamento entre brake pressure, ou mesmo squeal, e SERVICE BRAKES:... é compreensível. Não está claro que uneven road possa levar a um problema com SERVICE BRAKES, ou como uma concessionária local está vinculada a problemas de SUSPENSION.

De modo similar, embora modelos de carro específicos tenham apresentado alguns problemas no passado, a situação pode mudar conforme os fabricantes realizam ações corretivas. Você não deseja poluir seus dicionários com marcas e modelos de carro, nem mesmo com terminologia periférica, como local dealership, a menos que isso seja relevante para seu propósito.

O desenvolvimento de dicionários pode ser aperfeiçoado com a ajuda do Watson Content Analytics / WCA Studio, mas os dicionários resultantes ainda precisam de revisão cuidadosa.

Uma possível aplicação: identificar reclamações de segurança da NHTSA

O dicionário criado na seção anterior pode ser importado para o WCA Studio para desenvolver anotadores que extraiam mais informações de textos de origem e, assim, possivelmente forneçam melhores insights usando máscaras analíticas do WCA.

Seu objetivo é ajudar a automatizar a identificação de reclamações da NHTSA com informações relevantes sobre componentes. Para isso, tente encontrar fragmentos de texto que ajudem a identificar quais componentes do veículo estão no centro da reclamação. Para esse fim, use o dicionário extraído automaticamente na seção anterior com seus conteúdos associados (código de componente e pontuação de correlação).

A importação para um dicionário do WCA Studio não é detalhada aqui, mas envolve as seguintes etapas:

  • Salvar a lista de termos em um formato delimitado que inclua colunas como código de componente e pontuação de correlação.
  • Criar um banco de dados do dicionário do WCA Studio.
  • No assistente de criação de banco de dados do dicionário, inclua colunas para valores associados: código do componente e pontuação de correlação.
  • Importe a lista de termos delimitada para o banco de dado s do dicionário. O assistente de importação propõe uma correspondência entre os nomes de coluna no arquivo delimitado e os nomes no banco de dados, com uma possibilidade de redefinir a correspondência.
  • Compilar o banco de dados do dicionário

Esse processo é simples e pode ser concluído em alguns minutos. Figura 22 mostra um extrato desse banco de dados, que foi obtido com uma importação de dicionário bruto (não foi feita nenhuma tentativa de remover marcas ou modelos de carros nem qualquer tipo de ruído). Os códigos de componente aparecem em uma forma abreviada para facilitar o processo:

Figura 22. Banco de dados de dicionário de amostra no WCA Studio com termos automaticamente extraídos
Screen capture of WCA Studio, with dictionary entries and their associated part of speech,      component codes and correlation scores
Screen capture of WCA Studio, with dictionary entries and their associated part of speech, component codes and correlation scores

Quando o banco de dados do dicionário está concluído, ele pode ser usado em uma etapa de análise lexical de um perfil de anotação da UIMA. Textos de amostra analisados com esse perfil revelam quais dos conteúdos combinam com entradas do dicionário:

Figura 23. Uma visualização geral do WCA Studio com anotações do dicionário encontradas
Screen capture of WCA Studio, with project hierarchy on the left,      sample texts with annotations highlighted in the middle, and an outline column on the right with a list      of annotations
Screen capture of WCA Studio, with project hierarchy on the left, sample texts with annotations highlighted in the middle, and an outline column on the right with a list of annotations

Na Figura 23, a visualização de esboço no lado direito mostra as instâncias de uma anotação em particular, neste caso, o dicionário do componente. No arquivo de texto, essas instâncias são destacadas e passar o cursor do mouse sobre uma delas mostra os detalhes da entrada do dicionário: tensioner pulley está correlacionado (83.73) ao código do componente ENGINE AND ENGINE COOLING:ENGINE:GASOLINE:BELTS AND ASSOCIATED PULLEYS. Se você analisar os outros fragmentos nessa entrada, serpentine belt também está correlacionado ao mesmo código de componente (corr. 108.3), enquanto steering failure está associado a STEERING (corr. 12.67) e STEERING:HYDRAULIC POWER ASSIST SYSTEM (corr. 11.68). Em toda a lógica, essa reclamação deve ser identificada como ENGINE AND ENGINE COOLING:ENGINE:GASOLINE:BELTS AND ASSOCIATED PULLEYS: essa identificação é, de fato, o caso nos dados originais da NHTSA.

A partir desse exemplo rápido, é possível derivar facilmente um processo para designar um código de componente a uma nova reclamação. Localize todos os fragmentos em uma reclamação anotando com um dicionário de terminologia, como descrito anteriormente, e compile uma pontuação geral para cada valor do código de componente encontrado nos diferentes fragmentos com base nas pontuações de correlação individuais.

Para dar um exemplo, usarei a pontuação agregada mais simples, somando pontuações individuais. Na reclamação de amostra anterior:

  • ENGINE AND ENGINE COOLING:ENGINE:GASOLINE:BELTS AND ASSOCIATED PULLEYS viriam no topo com uma pontuação global de 192,03 (83,73 + 108,3),
  • então, STEERING, com 12,67,
  • então, STEERING:HYDRAULIC POWER ASSIST SYSTEM com 11,68.

Essa pontuação, usando essa soma simples ou uma fórmula mais complexa, pode ser calculada usando código Java como estágio customizado no pipeline da UIMA. O código customizado usaria os números de correlação extraídos com a anotação do dicionário no estágio de anotação anterior.

Conclusão

Neste tutorial, você aprendeu a explorar terminologias específicas do domínio usando os recursos do Watson Content Analytics, em particular suas máscaras linguísticas. Essas terminologias podem ser extraídas automaticamente graças à API REST do WCA, e importadas para o WCA Studio para desenvolver anotações de dicionário simples ou anotadores de nível superior. Lembre-se de que tais extrações automáticas ainda contêm entradas que são termos incompletos ou irrelevantes e precisam de revisão cuidadosa com base no uso que você faz dos dicionários resultantes.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=
ArticleID=995211
ArticleTitle=Descubra e use terminologia do mundo real com o IBM Watson Content Analytics
publish-date=01162015