Você está na página 1de 6

Resumo

O advento de grandes redes de área ampla conectando diversos repositórios de dados cria o
desafio de encontrar dados específicos de interesse de maneira fácil e oportuna. Este artigo
descreve o protótipo inicial de um sistema que aborda esse problema usando um conjunto de
agentes de software autônomos e personalizáveis. Central para o design do sistema são scripts --
segmentos de programa arbitrários e parametrizados escritos em uma linguagem que contém
primitivas para interagir com o ambiente de dados e marcados com palavras-chave
de[1] descrevendo suas finalidades -- que definem a funcionalidade de um agente. Os agentes
podem consultar as palavras-chave associadas aos scripts de outros agentes e podem importar
scripts uns dos outros, fornecendo assim um mecanismo para que os agentes aprendam uns com
os outros.

Introdução

Redes grandes, amplas e de alta largura de banda, como a Internet, criam uma série de
oportunidades e desafios para a recuperação eficaz de informações. Tais redes permitem que os
indivíduos obtenham acesso a enormes quantidades de dados de uma ampla variedade de
tipos. No entanto, sem ferramentas eficazes de gerenciamento de informações, a maioria desses
dados é inútil, uma vez que os usuários não conseguem encontrar os dados de seu interesse -
supondo que saibam de sua disponibilidade em primeiro lugar. Desenvolvemos um protótipo de
sistema que utiliza uma coleção de agentes de software como ferramentas de recuperação de
informação para tal ambiente. Este protótipo, o sistema Information Retrieval Agent (IRA),
concentra-se no problema da recuperação de textos de um conjunto de coleções de
documentos. Ele usa ideias - e código - desenvolvidas para uma aplicação anterior em que os
agentes controlam o fluxo do produto através de uma fábrica [Wolfson et al., 1989; Voorhees,
1991]. No aplicativo IRA, os agentes são encaminhados para uma série de coleções de
documentos 1, assim como os knowbots [Kahn e Cerf, 1988] e KNO [Tsichritzis et al., 1987]
foram imaginados como movendo-se entre recursos para recuperar dados. Ao contrário do
ambiente de roteamento de produtos, no entanto, um IRA modela um usuário individual e se
adapta aos interesses e preferências desse usuário e, eventualmente, será capaz de antecipar as
consultas do usuário, completar informações ausentes e recuperar fontes colaterais
relevantes. Acreditamos que essa adaptabilidade é crucial para formar uma solução eficaz para o
problema de recuperação de rede, assim como Etzioni e Segal vêem a adaptabilidade como uma
capacidade fundamental dos softbots [Etzioni e Segal, 1992]. O restante deste artigo descreve o
protótipo atual do IRA em detalhes. Na conclusão, sugerimos áreas a serem abordadas para que o
sistema evolua para um sistema de gestão da informação mais completo

Descrição do sistema

O sistema IRA possui dois tipos de agentes, os que representam um corpus (corpusbots) e os que
representam um usuário (userbots). Um corpus é qualquer coleção de documentos que um
provedor esteja disposto a permitir que outros pesquisem, como edições anteriores do Wall Street
Journal, da Enciclopédia Grolier ou das obras coletadas de Edith Wharton.

Um corpusbot é o modelo do sistema desse corpus particular; é o repositório de todos os valores


de parâmetros dependentes do corpus e controla todo o acesso ao seu corpus. Um corpusbot tem
atributos e descritores. Os atributos descrevem o comportamento de um corpusbot. Por exemplo,
os atributos podem ser usados para diferenciar entre vários tipos de estratégias de controle de
acesso (acesso gratuito a todos, somente assinantes, etc.). Descritores são designadores de
tópicos que fornecem um resumo de alto nível do conteúdo do corpus correspondente.

Da mesma forma, um userbot é o modelo do sistema de um determinado usuário; O UserBot


armazena os valores de parâmetro dependentes do usuário e é o intermediário do usuário no
sistema. Os parâmetros dependentes do usuário incluem itens como recursos X necessários para
personalizar a interface do usuário da janela X para o userbot, e se esse usuário prefere pesquisas
orientadas a recall ou precisão (ou seja, prefere ver tudo o que é de interesse e, portanto, tolera
uma grande quantidade de itens irrelevantes, ou está disposto a correr o risco de perder alguns
itens de interesse para evitar a maioria dos itens irrelevantes). Um userbot também mantém listas
dos nomes de outros userbots e corpusbots conhecidos por seu usuário. Além disso, um userbot
contém uma lista de especialidades. Assim como os descritores, as especialidades são
designadores de tópicos, mas, neste caso, presume-se que os tópicos sejam áreas nas quais seu
usuário tenha interesse e expertise. As especialidades são cadeias arbitrárias auto-selecionadas
pelo usuário, por exemplo, "recuperação de informações", "hacks do kernel do sistema UNIX",
"asa delta". Um agente é implementado como um processo de longa duração que reage a
mensagens digitadas enviadas a ele por algum agente (in[1]incluindo possivelmente a si
mesmo). As mensagens são processadas na ordem em que são recebidas e podem fazer com que
o agente execute alguma ação. Quando não há mensagens para processar, o agente simplesmente
espera que outra mensagem seja recebida. Um agente pode enviar uma mensagem a qualquer
agente cujo nome conheça; Ele também pode enviar uma mensagem para todo o conjunto de
CorpusBots ou todo o conjunto de UserBots. A capacidade de enviar uma mensagem para todos
os corpusbots facilita muito a descoberta de recursos -- um userbot precisa simplesmente
anunciar sua solicitação em um determinado tópico e ver quais corpusbots respondem. No
entanto, enviar uma única mensagem para todos os corpusbots em uma grande rede de longa
distância é claramente inviável. O sistema IRA pode escalar para tal rede interpretando "todos"
como "todos os agentes no domínio local". O kit de ferramentas distribuído ISIS [Isis Distributed
Systems, Inc., 1992], que usamos como nosso meio de comunicação, fornece suporte para
comunicação dependente de domínio[1]. O movimento explícito entre domínios, conforme
descrito em [Wolfson et al., 1989], permitirá que os userbots encontrem recursos que não estão
em suas imediações da rede.

Userbots

Userbots são o principal componente do sistema protótipo IRA. Userbots enviam e recebem
mensagens entre si e também enviam mensagens para corpusbots. Um userbot responde a
algumas mensagens básicas, como solicitações para o conteúdo de sua lista de especialidade ou
nomes dos corpora e usuários que conhece. No entanto, a maior parte da funcionalidade de um
userbot é definida pelos scripts que ele conhece. Scripts são subprogramas arbitrários e
parametrizados escritos em uma linguagem que contém primitivas para interagir no ambiente
IRA, controle de fluxo padrão e instruções de manipulação de dados, e a capacidade de executar
um comando no nível do sistema operacional (ou seja, uma função semelhante à chamada
"sistema" do C). Os scripts têm palavras-chave atribuídas a eles que descrevem o objetivo geral
do script. A Figura 1 fornece um exemplo (estilizado) de um script. O objetivo deste script é
pesquisar bancos de dados que são conhecidos por conter informações esportivas para histórias
esportivas; Pode, portanto, ser marcado com a palavra-chave "esportes". As chamadas de função
em negrito são primitivas de ambiente IRA. Algumas primitivas enviam mensagens aos agentes
e disponibilizam as respostas no espaço de dados do script. Por exemplo, select_corpora_desc(x)
envia uma mensagem para o próprio userbot solicitando a lista de corpora conhecidos que têm o
descritor x, e query( db, query-text, num-wanted) envia uma consulta ao corpusbot do db. Outras
primitivas fornecem acesso aos dados assim retornados (por exemplo, tamanho) ou manipulam
I/0 com o programa de interface do usuário (por exemplo, dlsplay_results e
announce_failure). Um programa de interface de usuário separado permite que um usuário e seu
userbot interajam uns com os outros. Quando invocado, o programa de interface do usuário exibe
ícones que representam o conjunto de corpora e usuários conhecidos pelo userbot e a lista de
scripts que o userbot conhece. Clicar em um ícone faz com que as informações associadas a essa
entidade específica sejam apresentadas. Para o exame[1], a informação associada a um corpus
inclui seus atributos, seus descritores e um histórico de sua efetividade de recuperação (medida
em termos de recordação e precisão). A seleção de um script nas listas de scripts invoca esse
script. Depois que um script é chamado, o userbot interpreta o código do programa associado e
cria um rastreamento de execução completo (incluindo valores de parâmetro; ações executadas;
resultados de ações individuais, se houver; erros encontrados; etc.). Esse rastreamento é usado
atualmente para mostrar o caminho que o userbot percorre pelo espaço de dados na exibição do
usuário. No futuro, ele pode ser usado como a memória episódica a partir da qual o userbot pode
refinar seu modelo do usuário e, assim, melhorar sua eficácia [Stanfill e Waltz, 1986; Maes e
Kozierok, 1993]. Um userbot é inicializado com um conjunto padrão de scripts. Esse conjunto
inclui scripts que permitem ao usuário enviar e receber mensagens para todos os tipos de
mensagens básicas dos userbots: pesquisar bancos de dados que tenham atributos ou descritores
específicos, pesquisar usuários que tenham especialidades específicas e enviar uma consulta a
um banco de dados específico. Resultados não nulos dos dois primeiros scripts são incluídos na
lista do userbot de corpora conhecidos ou usuários conhecidos. Os scripts padrão também
existem para pesquisar as palavras-chave associadas aos scripts de outro usuário (conhecido),
importar o script de outro usuário para o próprio userbot e incorporar scripts recém-criados ao
userbot. A capacidade de incorporar novos scripts em um userbot é um método poderoso através
do qual os usuários podem estender e personalizar a funcionalidade de seus userbots. Uma série
de comandos de pesquisa que são repetidos com frequência (como uma busca matinal pelas
pontuações esportivas do dia anterior) podem ser codificadas em um script; A sequência inteira
pode então ser invocada em um único comando. Além disso, como os scripts podem conter
outros segmentos de programa arbitrários, o mesmo script pode manipular os dados recuperados
como o usuário desejar. A importação de scripts de outros usuários torna a personalização ainda
mais fácil. Suponha, por exemplo, que Alan esteja procurando documentos sobre uma nova lei
tributária, mas não saiba onde procurar. Ele sabe, no entanto, que Bárbara é especialista em
impostos (ou, ele consulta o domínio local para ver se há algum usuário com "impostos" ou
"advogado tributário" como especialidade), então ele procura nos scripts de Bárbara um marcado
com "impostos" como palavra-chave. Supondo que ele encontre um, ele pode importá-lo e usá-lo
para enviar sua questão fiscal, beneficiando-se imediatamente da experiência de Bárbara com
bancos de dados fiscais. Naturalmente, os usuários podem não desejar que outros possam ver
determinados scripts, e o protótipo permite que os usuários marquem scripts como
privados. Ainda assim, há um grande número de outras preocupações de privacidade e segurança
em um sistema como este que o protótipo não aborda. Como toda a interação de um usuário com
o sistema IRA ocorre por meio de seu userbot, o userbot tem o potencial de se tornar um
especialista em seu usuário. Interesses de longa data do usuário podem ser usados para formar
perfis de interesse que podem ser refinados com dados de relevância usando técnicas de
filtragem [Belkin e Croft, 1992]. Além disso, o userbot pode construir modelos dependentes do
usuário da utilidade de determinados corpora (por exemplo, esse usuário quase sempre encontra
artigos do Wall Street Journal rel[1]evant, mas raramente gosta de artigos do Federal
Register). Os dados de efetividade atualmente armazenados na lista de corpora conhecidos são
uma forma rudimentar de tal modelo.

Corpusbots

Os Corpusbots são bastante pedestres no protótipo atual. Um corpusbot não envia mensagens e
responde a exatamente quatro tipos de mensagens: ̄ uma solicitação para seus atributos recebe a
lista de atributos em resposta; ̄ um pedido de seus descritores recebe a lista de descritores em
resposta; ̄ uma mensagem contendo uma consulta em linguagem natural e um número de
documentos a serem recuperados recebe uma lista de que muitos [ID do documento, título do
documento, valor de similaridade] triplicam em resposta; e ̄ uma mensagem contendo uma lista
de IDs de documento recebe os textos desses documentos em resposta Tanto a recuperação de
documentos em resposta a uma consulta quanto a busca de texto com uma ID de documento são
implementadas usando o sistema de recuperação de informações SMART [Salton e McGill,
1983]. Assim como um userbot pode se tornar um especialista em seu usuário, um corpusbot é o
único ponto de acesso ao seu corpus e, portanto, tem o potencial de se tornar um especialista no
corpus. O corpusbot é o repositório lógico para dados de relevância em todos os usuários do
corpus. Pode, então, utilizar esses dados para melhorar sua indexação do corpus utilizando, por
exemplo, a técnica sugerida por Fuhr e Buckley [Fuhr e Buckley, 1991].

Conclusão

Desenvolvemos um protótipo de sistema que usa agentes de software para recuperar documentos
de bancos de dados diferentes. Como um protótipo, o sistema tem algumas limitações tanto na
implementação quanto no design. A implementação atual não permite a execução simultânea de
scripts em um único userbot, nem permite que um script chame outro. Como consequência, os
userbots permanecem ociosos, a menos que um usuário esteja ativamente envolvido com o
sistema. Mais fundamentalmente, esses agentes ainda não têm a iniciativa e a adaptabilidade
necessárias para uma solução verdadeiramente adequada para o problema de recuperação da
rede. No entanto, o sistema IRA tem várias características interessantes. A transferência direta de
ideias e código do aplicativo de roteamento do produto para o aplicativo de recuperação de rede
demonstra que os agentes como programas escritos pelo usuário são aplicáveis em vários
domínios de problemas. O protótipo como existe hoje pode automatizar tarefas de recuperação
de rotina e pode acomodar alguma medida de descoberta de recursos aproveitando a experiência
de outras pessoas. No mínimo, o uso de um script por muitos indivíduos diferentes alavanca o
custo de escrever o roteiro. Finalmente, o protótipo fornece um banco de testes para pesquisas
contínuas sobre o desenvolvimento de agentes mais sofisticados. Uma das formas mais
importantes de aumentar a sofisticação dos agentes está na capacidade de modelar seus usuários
e corpora. Como sugerido acima, as informações relevantes dos usuários devem poder ser
exploradas para que os modelos dos agentes evoluam ao longo do tempo de forma a melhorar a
eficácia geral.

Você também pode gostar