Os assistentes de voz sonham com eletropoética? Entrevista com Tatiana Lando: Google Analyst Linguist



Em 24 de agosto, conversamos ao vivo com Tatiana Lando, uma analista de linguistas do Google. Tatiana está trabalhando no Google Assistant e está envolvida em projetos entre a produção e o desenvolvimento. Ela explora como as pessoas falam umas com as outras e quais estratégias usam para usar isso para ensinar ao assistente um comportamento mais humano. Vim para o Google para trabalhar como assistente para o mercado russo e o idioma russo. Antes disso, ela trabalhou na Yandex por 8 anos. Ela estava envolvida em tecnologias linguísticas, extração de fatos de texto não estruturado. Tatiana é uma das fundadoras da AINL: Conferência de Inteligência Artificial e Linguagem Natural.



Compartilhamos com vocês a transcrição da transmissão.









Quando digo que sou lingüista, na melhor das hipóteses me perguntam se li os Strugatskys, onde se tratava de “lingüistas estruturais”. No pior dos casos, perguntam-me quantos idiomas conheço. Os lingüistas não são pessoas que conhecem muitas línguas. Pessoas com qualquer especialidade podem saber muitos idiomas, não está conectado. Um linguista é uma pessoa que entende como funciona a linguagem, como funciona a comunicação entre as pessoas. Essa é uma disciplina científica grande, tem muitos aspectos além do que eu faço. Há uma análise de textos para estabelecer a autoria, há linguística na ciência forense - quando os lingüistas determinam se há extremismo em um texto, por exemplo. Isto é um exemplo.



A linguística computacional, que eu faço, visa principalmente desenvolver interfaces de fala entre tecnologia, computadores e humanos, por um lado, bem como introduzir métodos numéricos no processamento da linguagem. Existe toda uma área da linguística de corpus - quando tentamos processar textos automaticamente em grandes quantidades para tirar conclusões sobre o funcionamento da linguagem a partir dos dados obtidos. Estou trabalhando em um Google Assistente - é uma interface de voz entre um telefone ou computador e uma pessoa.



Antes de me mudar para Londres e começar a trabalhar no Google, trabalhei na Yandex por 7,5 anos, onde também estudei lingüística computacional. As tarefas que eu estava realizando no Yandex abrangiam uma ampla gama de tarefas de linguística computacional. Estudamos morfologia, sintaxe - como as palavras mudam, como as palavras são combinadas; Nesse sentido, a língua russa é mais complicada do que o inglês, pois não há casos em inglês, existem apenas duas formas de substantivos, tudo é relativamente simples (em russo - 6-9 casos, uma estranha formação plural - bem, todos os falantes nativos conhecem essas características). Portanto, quando mudei para o Google, fui contratado como um especialista na língua russa, embora agora já esteja fazendo outra coisa.



Há vagas relacionadas ao desenvolvimento da versão russa do Google Assistente? Como você consegue um emprego no Google Assistente?



Não há vagas especiais associadas à versão em russo do Google Assistente. O Google tenta desenvolver metodologias voltadas para o máximo de idiomas de uma vez, e a especificidade dos idiomas deve ser resolvida com dados, e não com metodologias específicas. Ou seja, os algoritmos para russo, inglês, alemão, chinês - todos os idiomas suportados são iguais, embora com algumas nuances. Existem muitas partes comuns e as pessoas que lidam com um idioma específico monitoram principalmente a qualidade dos dados e adicionam módulos especiais para idiomas individuais. Por exemplo, para o russo e outras línguas eslavas, a morfologia é necessária (é disso que acabei de falar - casos, formação plural, verbos complexos). E na língua turca há uma morfologia ainda mais complexa - se houver apenas 12 formas substantivas em russo,então, em turco, é muito mais. Portanto, precisamos de algum tipo de módulo especial que processe partes dependentes de idioma. Mas isso é feito com a ajuda de linguistas que conhecem sua língua nativa e engenheiros de linguagem geral que escrevem algoritmos usando dados; trabalhamos juntos para melhorar a qualidade desses algoritmos e dados. Sendo assim, não temos vagas especiais para o idioma russo, mas existem vagas no desenvolvimento do Google Assistant, principalmente em Zurique, Califórnia, Nova York, bastante - Londres.Não temos vagas especiais para o idioma russo, mas há vagas no desenvolvimento do Google Assistant, principalmente em Zurique, Califórnia, Nova York, bastante - Londres.Não temos vagas especiais para o idioma russo, mas há vagas no desenvolvimento do Google Assistant, principalmente em Zurique, Califórnia, Nova York, bastante - Londres.



, ?



4 anos atrás, quando me mudei, Londres ainda era a Europa. Na verdade, ele agora é a Europa, embora não seja a UE. Gosto muito de Londres, todo mundo fala inglês, não preciso aprender outro idioma. Não que eu não quisesse aprender outro idioma, mas a entrada para a mudança foi mínima. Aqui também tem teatros excelentes, adoro ir ao teatro. Claro, agora todas as vantagens de Londres com cultura e entretenimento estão um pouco niveladas, mas vamos torcer pelo melhor. Além disso, é muito mais fácil com um visto aqui do que em Zurique - na Suíça, por algum motivo, a legislação de vistos muda regularmente. Acabou sendo muito mais fácil colocar a mim e alguns outros caras em Londres, e nos instalamos aqui. Eu gosto daqui, não quero me mudar para lugar nenhum. As viagens de negócios à Califórnia me deixam melancólico - lá você tem que pegar um carro, distâncias enormes. Embora existam mais oportunidades de carreira lá.



?



É mais difícil do que inglês. Na verdade, quase todos os idiomas são mais complicados do que o inglês. Existem dois lados diferentes para essa complexidade. Primeiro, a morfologia muito complexa. Além disso, a língua russa tem uma ordem de palavras livre, o que complica o trabalho na construção de um algoritmo. Se for fixo, então para o "quadro de novela mãe" condicional, uma frase é necessária para ensinar o sistema a compreender "sujeito-predicado-objeto". Mas se essas palavras podem estar em qualquer ordem, mais dados são necessários. Ao mesmo tempo, há muitos recursos prontos para o idioma inglês; todo o mundo científico está engajado no idioma inglês, todas as corporações estão engajados no idioma inglês porque competem no mercado americano. E muito menos está envolvido em outras línguas, há menos financiamento, menos empresas. Se ainda houver pedaços ou dados prontos para alemão ou francês,que pode ser reutilizado, então o idioma russo é pior. Existem caixas prontas, mas são pequenas e não servem para tudo. Ou seja, são necessários muito mais dados para o idioma russo do que para o inglês, mas há menos dados disponíveis. Além de camadas gramaticais adicionais; Você pode tentar entender a mesma morfologia separadamente e, em seguida, reduzir a quantidade de dados necessária para um trabalho de alta qualidade do analisador em russo (em comparação com o inglês).que são necessários para um trabalho de alta qualidade do analisador em russo (em comparação com o inglês).que são necessários para um trabalho de alta qualidade do analisador em russo (em comparação com o inglês).



Portanto, verifica-se que a língua russa é bastante difícil, como outras línguas eslavas. As línguas turcas são ainda mais difíceis; As línguas orientais têm outros problemas: por exemplo, o chinês não tem espaços entre as palavras, você precisa entender como quebrar uma matriz de texto em pedaços para determinar o que cada pedaço diz. Em geral, cada idioma tem suas próprias piadas, mas basicamente tudo pode ser resolvido devido à grande quantidade de dados de linguagem em que as tarefas são resolvidas. Tudo depende do fato de que não há muitos deles para a língua russa e, portanto, é difícil trabalhar com ela, e para o inglês - o oposto.



A lingüística computacional pode reconstruir lugares incompreensíveis, por exemplo, nas negociações de pilotos com o solo?



Ah com certeza. Basicamente, o algoritmo que faria isso seria semelhante às sugestões de pesquisa. Quando você insere um termo de pesquisa (para qualquer idioma), o sistema oferece as pesquisas mais populares, com alguma filtragem. O algoritmo, é claro, é um pouco mais complicado, mas vamos esquecê-lo para maior clareza. O sistema sugere as combinações de palavras mais frequentes na consulta, começando com aquelas que você já inseriu. Uma técnica semelhante pode ser usada para restaurar lugares obscuros. Há muitas negociações, esse é um corpus enorme de textos, você pode analisá-los e ver quais partes são mais comuns. Eu mesmo nunca lidei com o tema das negociações entre os pilotos e o solo, mas suspeito que devam haver muitas propostas semelhantes, a estrutura da informação é bastante codificada, a forma de comunicação é padrão - tais coisas são muito fáceis de prever, então podem ser facilmente restauradas.



Conte-nos sobre a acústica e a limpeza de sinais sonoros em assistentes de voz



Sobre isso não sei quase nada, só lido com texto escrito. Fonética, acústica não são minhas áreas. Mas tenho certeza de que existem métodos de áudio que ajudam a limpar o sinal e, na interseção entre os sinais de áudio e o mecanismo de previsão, você pode filtrar hipóteses e restaurar o texto.



Qual é a linguagem mais difícil de processar e entender?



Eles são todos complexos. Não é que qualquer um deles seja mais complicado ou mais simples em si mesmo; há muitos dados para o inglês, então é mais fácil trabalhar com eles, e todo mundo está fazendo isso.



Acontece um círculo vicioso: quando as pessoas em conferências querem experimentar um novo algoritmo, elas pegam corpuses conhecidos e observam como os números nas métricas crescem. Para medir seu algoritmo, você precisa de um bom corpus; existem muitos corpus bons em inglês, então eles executam algoritmos em inglês neles, obtêm um aumento e, assim, estimulam outros pesquisadores a fazerem ainda mais corpus para encontrar lacunas nos algoritmos. Esta é uma tarefa para a qual é fácil obter uma bolsa. Por exemplo, existem 10 algoritmos para responder a perguntas automaticamente; no corpus existente, esses algoritmos são mais ou menos semelhantes, e os pesquisadores decidem criar um novo corpus para ver a diferença entre eles. Esta é uma boa tarefa, pois permite um melhor ajuste dos algoritmos. Eles fazem isso, e há mais corpus para o inglês - e quanto mais corpuses, mais algoritmos aparecem.Se você observar o trabalho no campo da PNL nos últimos anos, as conferências não medem nem mesmo porcentagens, mas frações de um aumento percentual na qualidade.



Em geral, isso não é muito útil em problemas práticos e não é realmente linguística computacional. É assim que os engenheiros lidam com a linguagem se não estiverem trabalhando com linguistas (ou seja, medíocres ou muito teóricos).



Por que não há dados suficientes para o idioma russo?



Essa questão me atormenta todos os anos estudando a língua russa, na universidade onde estudei lingüística aplicada.



Eu não sei. Talvez simplesmente não haja dinheiro suficiente na ciência russa e, portanto, poucos dados estão sendo feitos para a língua russa. As conferências na Rússia são geralmente um pouco desatualizadas; há conferências sobre linguística aplicada, sobre processamento automático de linguagem natural, mas há muito poucas equipes grandes que estão engajadas nisso. Cientistas vão para grandes empresas - Yandex, ABBYY, agora MTS também contrata lingüistas; a profissão tornou-se mais procurada com o advento dos auxiliares de voz. Eles também vão para o exterior; Existem muitos linguistas em startups, Amazon e Google.

O único grande corpus é o Corpus Nacional da Língua Russa. Há também um corpus feito por meus amigos - o Open Corpus da Língua Russa; mas, em geral, é muito difícil conseguir financiamento para isso e poucas pessoas se interessam por isso.



Houve competições de algoritmos para os quais pequenos corpora foram criados para tarefas específicas - por exemplo, comparar como um sistema responde a perguntas em russo ou entende comandos em russo - mas esses dados não são suficientes para treinar grandes sistemas. Também acaba sendo um círculo vicioso na outra direção: não há nada para treinar, então não há nada para treinar, então não há nada para medir, então não há dados. Além disso, são necessários mais dados do que para o inglês. Depois de receber meu diploma, quase imediatamente fui para o Yandex, então é difícil para mim dizer por que ele não funciona aqui.



Qual abordagem o Google está adotando mais em relação ao processamento de idiomas? Redes neurais ou algoritmos?



Redes neurais também são algoritmos. Não entendo nem um pouco a dicotomia, mas tentarei dizer quais são as abordagens (e em geral) que temos no processamento analítico da linguagem na linguística computacional.



As abordagens históricas mais antigas são abordagens baseadas em regras. Os lingüistas escrevem regras à mão, quase como uma linguagem de programação. Suponha que, no texto percebido, primeiro haja o sujeito, depois o verbo, depois o predicado; se o predicado está em um caso, então - uma conclusão, e assim por diante. Por exemplo, para os casos em que o usuário diz algo como "ok Google, defina o alarme para 7h", você pode fazer a seguinte regra: coloque - qualquer palavra - despertador - on - número - pela manhã. Este é um modelo que pode ser descrito e ensinado ao sistema: se você usar esse modelo e ele funcionar, será necessário definir o alarme no horário indicado na forma de um número. Claro, este é um padrão muito primitivo, você pode fazer isso muito mais complicado. Eles podem ser combinados: por exemplo, um modelo extrai a data e a hora e, em seguida, um modelo para definir um alarme é escrito sobre ele.



Essa é uma abordagem muito antiga, já tem 70 anos - assim foi escrita em 1966 Eliza, o primeiro chatbot fingindo ser psicanalista. Então as pessoas ficaram muito surpresas. Houve histórias de que os criadores deste chatbot o mostraram a seus colegas e eles os expulsaram da sala para falar com um psicanalista "de verdade". E este bot foi escrito apenas nas regras - então foi uma abordagem inovadora. Agora, é claro, não queremos fazer isso, porque existem muitas regras necessárias - imagine quantas frases diferentes você pode usar apenas para definir um alarme, se você usar regras puras, você teria que descrever cada uma delas manualmente. Mudamos para sistemas híbridos há muito tempo: eles podem perceber padrões, mas em geral tentamos usar redes neurais para aprendizado de máquina e aplicar abordagens supervisionadas para aprendizado supervisionado. Ou seja,marcamos os dados e dizemos: ok, nesse array do que o usuário pode falar, essa parte é o tempo, e normaliza assim; esta parte é o dispositivo no qual o usuário deseja definir o alarme e esta parte é, por exemplo, o nome do alarme. Para que possa definir um despertador no seu iPhone às 7 da manhã com o nome "Escola". Em seguida, configuramos um grande corpus, treinamos o analisador nele e, em seguida, o analisador é aplicado às solicitações do usuário e, assim, os reconhecemos. É assim que o Google Assistente funciona agora e é a abordagem que estamos usando agora.Em seguida, configuramos um grande corpus, treinamos o analisador nele e, em seguida, o analisador é aplicado às solicitações do usuário e, assim, os reconhecemos. É assim que o Google Assistente funciona agora e é a abordagem que estamos usando agora.Em seguida, configuramos um grande corpus, treinamos o analisador nele e, em seguida, o analisador é aplicado às solicitações do usuário e, assim, os reconhecemos. É assim que o Google Assistente funciona agora e é a abordagem que estamos usando agora.



Parece primitivo, agora na literatura e nos noticiários, muitas vezes vazam informações sobre como as redes neurais aprendem por conta própria em grandes corpus, respondem a tudo e apóiam conversas. Isso, claro, é verdade e é legal, mas tais abordagens são inúteis nos casos em que você precisa que o sistema não apenas responda, mas também mude seu estado - pelo menos com a configuração de um despertador. Ao mesmo tempo, é necessária uma representação interna, para a qual é necessário trazer de alguma forma o que o usuário disse. Mesmo que tenhamos uma grande variedade de textos nos quais o usuário pede para definir um alarme, e ele não será marcado, não poderemos treinar o analisador para que ele mude o sistema. Seremos capazes de treiná-lo para que diga “Sim, estou configurando o alarme” e não faça nada. Mas treinar o sistema para que ele mude de estado, usando dados não marcados,ainda não é possível. Então, o que foi lançado recentemente pela OpenAI e DeepMind - parte da Alphabet, empresa controladora do Google - é legal, eles são boas técnicas de chatbot que respondem aos humanos, mas não existem técnicas que excluem o trabalho manual para mudar o estado do sistema. Portanto, infelizmente, o setor agora tem padrões bastante baixos nesse sentido - não apenas para o Google Assistente; todos os assistentes trabalham aproximadamente na mesma abordagem com muito trabalho manual - seja processando dados para analisadores ou escrevendo regras (o que não queremos fazer). Procuramos fazer trabalhos manuais com a ajuda de empresas parceiras.excluindo o trabalho manual para mudar o estado do sistema, não. Portanto, infelizmente, o setor agora tem padrões bastante baixos nesse sentido - não apenas para o Google Assistente; todos os assistentes trabalham aproximadamente na mesma abordagem com muito trabalho manual - seja processando dados para analisadores ou escrevendo regras (o que não queremos fazer). Procuramos fazer trabalhos manuais com a ajuda de empresas parceiras.excluindo o trabalho manual para mudar o estado do sistema, não. Portanto, infelizmente, o setor agora tem padrões bastante baixos nesse sentido - não apenas para o Google Assistente; todos os assistentes trabalham aproximadamente na mesma abordagem com muito trabalho manual - seja processando dados para analisadores ou escrevendo regras (o que não queremos fazer). Procuramos fazer trabalhos manuais com a ajuda de empresas parceiras.Procuramos fazer trabalhos manuais com a ajuda de empresas parceiras.Procuramos fazer trabalhos manuais com a ajuda de empresas parceiras.



Conte-nos sobre as direções promissoras no desenvolvimento do Google Assistente.



Na verdade, o que acabamos de discutir. A direção é criar um novo sistema de treinamento que possa alterar o estado do sistema de dados sem exigir processamento manual de dados. Isso seria legal. Mas até agora, embora eu já tenha muita experiência em trabalhar com assistentes, é difícil para mim imaginar até mesmo como tal sistema funcionaria em princípio. Eu entendo como as redes neurais, os métodos de ensino, as abordagens híbridas estão se tornando mais complicadas, como a preparação de dados para o treinamento está se tornando mais complicada - mas não entendo como fazer uma conexão direta entre os dados sem um professor e a mudança do sistema. Deve haver algum tipo de representação interna que permita fazer isso. Se alguém puder revolucionar e reimaginar esta parte, isso seria ótimo.



Além disso, agora muito é investido na geração dessa representação interna - ou seja, se não podemos ir diretamente dos dados sem marcação para alterar o estado do sistema, precisamos fazer um algoritmo que ajudará a fazer algo entre eles. Digamos que gere uma visão do sistema a partir do texto e então as pessoas a limpariam - em vez de construí-la do zero. Essa é uma direção muito promissora e, embora haja pouco progresso nela, os pesquisadores estão olhando exatamente para lá.



Plus - novos sinais para respostas e para a sanidade conversacional dos assistentes. E métodos de avaliação. Agora, nós (isto é, na indústria em geral) não temos um único método adequado para avaliar a qualidade dos sistemas de diálogo, nem uma única métrica pela qual se possa comparar o Assistente, Alice, Alex, Siri e assim por diante. Você pode pesquisar usuários, tentar resolver cenários semelhantes com assistentes diferentes e tirar conclusões disso, mas não existe uma métrica quantitativa adequada. Para tradução automática, existe uma métrica, e mais ou menos normal, mas para isso - nada; este é um dos problemas que agora estão sendo discutidos no setor em conferências. Os corpora de diálogo para o inglês finalmente começaram; também há muito poucos deles. Não há nada para contar as métricas, não há ninguém e não está claro como. Se alguem tiver uma boa ideia,então, essa pessoa colecionará todos os louros em conferências, fará uma startup e venderá em qualquer lugar. Teria arrancado qualquer projeto que ajudasse quantitativamente, em números, a medir a diferença entre assistentes.



Separadamente, existe o estudo híbrido, que estou fazendo principalmente agora - no ano passado, mudei do russo para este tópico. Estou fazendo projetos sobre como tornar o Assistente mais coloquial, mais natural. Nós vemos as pessoas conversando entre si. Não se trata apenas de quais palavras são usadas aqui (“definir / definir o alarme”); na verdade, essa parte é primitiva e já foi resolvida, embora ainda haja muita rotina a ser concluída. Tarefas não resolvidas são, por exemplo, quando o usuário diz de várias formas: "Defina-me um alarme", "Você pode definir um alarme?", "Você poderia definir um alarme?" Quase a mesma coisa, mas em um caso, o comando é aplicado, em outros - perguntas. Estamos olhando para este nível de linguística - pragmática, isto é, o que vai além do significado - semântica. Para quem estudou lingüística ou língua,a marcação semântica no texto não é um termo novo, mas a pragmática adiciona contexto adicional a ela; ou seja, não apenas "o que dizem", mas também "como dizem", "por que dizem". Grosso modo, se o usuário disser ao assistente “você é burro?”, Ele não quer uma resposta “sim / não” - esse é outro sinal, e você deve perguntar o que havia de errado no comportamento do sistema antes; isso não deve ser classificado como uma pergunta, mas como uma reclamação.



Meu grupo - agora tenho três linguistas restantes depois de mudar para outro departamento - agora está tentando entender como as pessoas interagem entre si, como as pessoas interagem com os assistentes e como transformar isso em sinais para o aprendizado de máquina e realmente treinar o sistema para entender melhor as coisas transmitido não verbalmente e indiretamente.



E quanto ao número de novas consultas e stubs em relação à pergunta na declaração do problema?



Esta é uma boa métrica, mas, infelizmente, leva em consideração apenas o número de frases que o usuário não entendeu pelo assistente. Isso não nos diz o quão difíceis foram essas frases, o quão agradável foi a experiência do usuário. Escreva para mim mais tarde após a transmissão, todos que tiverem idéias para comparar assistentes, podem falar sobre isso separadamente - mas algo muito complicado é necessário. Em seções separadas, já aprendemos a entender algo - por exemplo, qual porcentagem das solicitações do usuário o sistema não entende, ou entende desde a enésima vez, e onde houve erros - na tradução da fala em texto, no próprio texto, em algum lugar mais longe ao mudar sistemas. Mas avaliar quão adequadamente o sistema respondeu já é mais difícil: na verdade, o que é uma “resposta adequada”? Existem também todos os tipos de "cerejas no bolo", como casos em que um usuário chama o sistema de "você"e ela responde "você" - é bom ou ruim? Parece ruim, o assistente é uma figura subordinada.



Em geral, existem muitos chips pequenos que são difíceis de levar em conta em medições quantitativas.



Existe uma linguagem comum intermediária para processamento simplificado e, em seguida, alternar para o idioma desejado?



Essa é uma ótima pergunta, mas não eu, mas os representantes da ABBYY que vêm tentando fazer exatamente isso há muitos anos. Ou seja, em linguística existe a ideia de que todas as línguas são construídas de maneira semelhante, e você pode criar uma gramática universal, dicionário e tudo mais para obter um elo intermediário entre todas as línguas. Então, pode-se traduzir de uma linguagem para uma meta-linguagem e depois para qualquer outra linguagem. Muitos homens-anos foram gastos nessa tarefa, mas descobriu-se - apesar da beleza da ideia - que as línguas ainda são bastante diferentes, e é quase impossível fazer tal mapeamento. E não está claro como fazer isso automaticamente - não manualmente. Como resultado, o tópico morreu.



Descobriu-se que, se você despejar muitos dados e executar uma rede neural, a tradução automática acabará sendo de qualidade suficiente e sem uma meta-linguagem. As redes neurais são boas no cálculo de padrões, incluindo os gramaticais; portanto, se a quantidade de dados for suficiente, elas próprias lidarão com a ausência de solicitações de um link intermediário. Na tradução automática, tudo funciona bem quando existem bons textos paralelos. Por exemplo, existem muitos textos paralelos entre o russo e o inglês, mas não há nenhum entre o russo e alguma língua indígena americana - mas existem muitos textos paralelos entre ela e o inglês, ou seja, o inglês pode atuar como uma língua intermediária. Freqüentemente, uma tradução do russo é feita primeiro para o inglês e depois para um terceiro idioma; esta técnica é bastante comumde modo que o inglês na prática substitui a mesma meta-linguagem - afinal, a maioria dos dados traduzidos vêm de e para o inglês. A qualidade é prejudicada, é claro, mas é melhor do que nada. Se não houver nada para treinar o sistema, então é melhor treinar nessa tradução passo a passo do que não fazer nada.

Em geral, do ponto de vista teórico, a ideia é bonita, mas na prática se usa o inglês.



Você pode dar exemplos de problemas em que está trabalhando no Google? Qual é a porcentagem de tarefas interessantes e rotineiras?



Quando lancei o Russian Assistant, havia muitas tarefas de rotina - simplesmente porque os algoritmos são universais e a maior parte do trabalho foi reduzida para corrigir bugs manualmente e preparar dados em russo. Verificamos a qualidade, às vezes escrevíamos os dados à mão; parece muito triste, mas não podíamos usar os dados do usuário e tínhamos que retirá-los de algum lugar. Para obter dados, você também pode escrever uma regra e gerar dados; ou dados abertos. Curiosamente, foi possível lidar com a morfologia, ver que a geração e compreensão do texto foram mais inteligentes e não foi necessário escrever todas as formas da palavra "despertador" em uma coluna. Infelizmente, havia muitos ciclos de "executar-ver-qualidade-consertar-executar-dados corretos e assim por diante"; Foi divertido no início, mas rapidamente se tornou rotina. Agora,como estou mais pesquisando, fazemos nossa própria agenda, em certo sentido. Estou apenas criando novos dados que podem ser úteis para métricas no futuro e pesquisando como as pessoas conversam entre si e com os assistentes para entender quais sinais podem ser usados ​​para treinar modelos. Analisamos qualidade. Parte do trabalho que estou fazendo atualmente é produto, estamos tentando criar um roteiro de problemas nas interações de diálogo entre uma pessoa e um assistente, para entender como classificá-lo, para entender o que podemos resolver agora, e depois. Ou seja, agora quase não tenho mais tarefas de rotina e estou satisfeito com minha configuração.que pode ser útil no futuro para métricas e pesquisar como as pessoas falam umas com as outras e com os assistentes para entender quais sinais podem ser usados ​​para treinar modelos. Analisamos qualidade. Parte do trabalho que estou fazendo atualmente é trabalho de produto, estamos tentando criar um roteiro de problemas nas interações de diálogo entre uma pessoa e um assistente, para entender como classificar isso, para entender o que podemos resolver agora, e depois. Ou seja, agora quase não tenho mais tarefas de rotina e estou satisfeito com minha configuração.que pode ser útil no futuro para métricas e pesquisar como as pessoas falam umas com as outras e com os assistentes para entender quais sinais podem ser usados ​​para treinar modelos. Analisamos qualidade. Parte do trabalho que estou fazendo atualmente é produto, estamos tentando criar um roteiro de problemas nas interações de diálogo entre uma pessoa e um assistente, para entender como classificá-lo, para entender o que podemos resolver agora, e depois. Ou seja, agora quase não tenho mais tarefas de rotina e estou satisfeito com minha configuração.estamos tentando criar um roteiro de problemas nas interações de diálogo entre uma pessoa e um assistente, para entender como classificá-lo, para entender o que podemos resolver agora, o que depois. Ou seja, agora quase não tenho mais tarefas de rotina e estou satisfeito com minha configuração.estamos tentando criar um roteiro de problemas nas interações de diálogo entre uma pessoa e um assistente, para entender como classificá-lo, para entender o que podemos resolver agora, o que depois. Ou seja, agora quase não tenho mais tarefas de rotina e estou satisfeito com minha configuração.

Esse equilíbrio parece diferente para diferentes linguistas. Recentemente, comemoramos nosso aniversário - 100 lingüistas na empresa, agora há um pouco mais. É legal, porque quando entrei na empresa há 4 anos éramos 30. Nossa demanda com certeza está crescendo.



Você usa a definição de contexto para analisar textos?



Não sei se o autor da pergunta ainda está procurando - reformule, por favor, não entendi.

Estamos usando contexto, é claro; sem ele, não há interação por diálogo. Claro, estamos tentando resolver problemas para que o usuário, por exemplo, não diga “despertador” todas as vezes, mas possa usar pronomes naturais (“definir alarme para 7, não, altere para 8”). Isso já funciona bem para inglês; Não me lembro se já foi lançado para russo.



Por que a coluna em russo não foi lançada?



Pelo que posso dizer, o Google possui vários idiomas diferentes. As prioridades devem ser organizadas de acordo com o volume e valor dos mercados, e o mercado russo não é o mais interessante. É um pouco estimulante que haja Yandex na Rússia, e você possa competir com ele, mas do ponto de vista prático ninguém quer. Além disso, o Google fechou escritórios de desenvolvimento na Rússia após a adoção da lei de dados pessoais.



Existem bibliotecas abertas para reconhecimento e geração de voz, matrizes de dados para treinamento de redes neurais? Quão aberta é essa tecnologia?



Sim, cheio de algoritmos de código aberto. O Google lançou recentemente o Bert, uma biblioteca supernova; agora as conferências estão cheias de atualizações, que são chamadas de várias palavras engraçadas, dentro das quais está "Bert" (Albert). É tudo de código aberto, feito por nossos excelentes cientistas em Berlim. Você pode treinar qualquer coisa; as comunidades científicas têm dados para treinar as redes neurais e ver o que acontece. Como falei, esses dados não são suficientes para o russo, mais para o inglês, então todos se divertem com ele.



Ou seja, você não tem textos de log do usuário?



Não podemos ler os logs do usuário. As únicas exceções são aqueles casos em que os usuários estão reclamando e são solicitados especificamente a permissão para compartilhar as últimas tantas declarações. Mas, mesmo nesses casos, vemos apenas uma releitura do problema a partir de suportes especialmente treinados e estatísticas agregadas da forma "o assistente respondeu que não entende, tal e tal porcentagem de vezes." O Google usa os dados do usuário com muito cuidado. Parte do que minha equipe está fazendo é pensar em como gerar dados realistas ou coletá-los de pessoas especialmente pagas. Esta é uma direção importante para todas as equipes industriais porque a privacidade nunca deve ser violada. Temos que buscar novos métodos de coleta de dados, escrever novas ferramentas;Tenho feito isso de perto nos últimos seis meses. Infelizmente, os detalhes ainda não foram publicados. Queríamos escrever um artigo para a conferência, mas a epidemia atrapalhou. Quando você trabalha em uma empresa, você, em princípio, precisa de um artigo apenas para ir a uma conferência às custas da empresa e sair. E agora todas as conferências estão online e você não poderá mais participar - a motivação para escrever um artigo realmente desapareceu. Agora a epidemia vai acabar e nós vamos acabar com isso.Agora a epidemia vai acabar, e faremos assim mesmo.Agora a epidemia vai acabar e nós vamos acabar com isso.



, , ?



Não vou mostrar nenhum item de teste, mas posso falar sobre a entrevista. Como eu disse, agora temos 100 linguistas, e as entrevistas agora ocorrem no formato conhecido pelos engenheiros - uma entrevista na piscina. Entrevistamos lingüistas seguidos e, quando há um bom lingüista, olhamos onde há vaga e os colocamos em equipes. Temos linguistas de vários perfis; alguém programa, alguém praticamente não programa. Eu sou da segunda categoria: eu estou mais na parte de pesquisa, eu não treino modelos - tem gente na equipe que faz isso. Temos agora 8 equipas de linguistas de diferentes tamanhos, e também temos uma equipa de internalização, na qual fui especialista na língua russa: são pessoas que monitorizam a qualidade do assistente (agora sou apenas um linguista-investigador e faço tarefas não relacionadas com um idioma específico) ...Dependendo de seu perfil, os linguistas se enquadram em uma dessas equipes.



Quando as tarefas são para um idioma específico, são necessários falantes de idiomas específicos; eles recebem atribuições especiais neste idioma - estamos tentando descobrir se a pessoa entende bem os recursos. Por exemplo, se estivéssemos contratando para uma posição com a língua russa (agora não está lá), perguntaríamos por que o russo é mais complicado do que o inglês, que métodos existem para superar essas dificuldades, como funciona a morfologia russa, o que é necessário para um computador entender isso, como isso afeta pela quantidade de dados. Se o papel for geral, então perguntaremos sobre o quão bem uma pessoa entende as realidades atuais da linguística, o quanto ela pode pensar sobre algoritmos. Embora eu quase nunca me programe, eu entendo bem como funciona o Aprendizado de Máquina, o que é necessário para treinar o sistema, sobre sinais, aprendizado supervisionado / não supervisionado e assim por diante. Na verdade, é isso queque costumo perguntar em entrevistas. O exemplo mais comum: “Como você corrigiria erros de digitação? Há uma quantidade infinita de dinheiro e desenvolvedores, mas ainda não há nenhum produto - como construí-lo do ponto de vista linguístico, quais são os passos? " Em geral, você pode perguntar sobre qualquer componente que inclua linguagem natural. Como é construído, segundo o entrevistado? Como uma pessoa vai construir um semelhante, que problemas ela vê? Como transferir a experiência do inglês para o chinês, do chinês para o russo, do russo para o hindi? Como ele vai organizar seu trabalho com uma linguagem que não conhece? Há muitas opções.quais são os passos? " Em geral, você pode perguntar sobre qualquer componente que inclua linguagem natural. Como é construído, segundo o entrevistado? Como uma pessoa vai construir um semelhante, que problemas ela vê? Como transferir a experiência do inglês para o chinês, do chinês para o russo, do russo para o hindi? Como ele vai organizar seu trabalho com uma linguagem que não conhece? Há muitas opções.quais são os passos? " Em geral, pode-se perguntar sobre qualquer componente que inclua linguagem natural. Como é construído, segundo o entrevistado? Como uma pessoa vai construir um semelhante, que problemas ela vê? Como transferir a experiência do inglês para o chinês, do chinês para o russo, do russo para o hindi? Como ele vai organizar seu trabalho com uma linguagem que não conhece? Há muitas opções.



Você monitora o comportamento do usuário: qual comando o usuário deu, qual ação foi executada pelo dispositivo?



Não podemos monitorar o comportamento do usuário. Só podemos criar métodos para simular e testar como o sistema responde. Isso é o que estamos realmente fazendo: tentando descobrir como medi-lo e tentando coletar dados para treinar os algoritmos.



Como o contexto da conversa é rastreado? Quanta memória é usada para isso? Existe persistência entre as sessões?



Há muito uso de memória - não sei os detalhes, nem é para o departamento onde trabalho. O nosso departamento está mais preocupado com a qualidade, mas há departamentos que procuram ver se tem memória suficiente, se tem fugas, se o assistente burra durante 10 minutos para colocar o alarme.



Nós acompanhamos o contexto. Até agora, infelizmente, apenas dentro de uma sessão. Esta é uma das tarefas que nosso departamento - minha equipe, equipes de engenharia vizinhas - resolverá no próximo ano. Uma tarefa muito legal e interessante: quanto tempo manter o contexto, em que ponto considerar que a conversa acabou, se manter sempre o contexto do usuário, quais informações sobre o usuário o sistema armazenará em si. Relativamente falando, se um usuário disser "Eu odeio pizza", então provavelmente é bom manter esse contexto para sempre e perguntar uma vez por ano se a situação mudou. E, se o usuário responder que não mudou, não ofereça entrega de pizza. Embora os assistentes não saibam como fazer isso - infelizmente, eles ainda estão muito longe de serem perfeitos, eles precisariam de muitos outros contextos diferentes.



Agora podemos entender os pronomes em uma sessão (“defina o alarme, defina-o para 8h”). Estamos trabalhando para expandir esse contexto e conduzir pesquisas separadamente para entender qual contexto é útil, quanto é necessário, onde e quanto armazená-lo. Claro, o Google tem muitos servidores, então não precisamos economizar dinheiro, mas queremos que o assistente não processe cada solicitação por 3 horas. É muito rápido agora, mas não perfeito; e se o tornarmos perfeito, gostaríamos que continuasse a funcionar rapidamente.



Você tem competição entre equipes?



Sim e não. Claro, de acordo com a forma como o trabalho dentro do Google é organizado, você pode fazer uma transmissão separada. Temos muita iniciativa local; as pessoas podem tentar fazer protótipos de qualquer coisa, sugerir aos chefes - os chefes são sempre muito abertos e vão propor aos chefes. Muitos projetos surgem do fato de que alguém tentou fazer algo, ele teve sucesso, e foi decidido fazê-lo com uma qualidade adequada para lançamento. Claro, há situações em que em 5 lugares ao mesmo tempo as pessoas têm a mesma ideia e 10 protótipos são obtidos. Nesse momento, às vezes você tem que escolher um dos protótipos, mas geralmente eles tentam unir as pessoas em uma equipe para que possam desenvolver um novo recurso juntos, lançá-lo em produção e todos ficaram felizes.



Então, tem competição, mas a gente tenta manter a competição saudável, para que não haja muita política. No geral, a atmosfera é ótima. Agora estamos sentados entre a pesquisa e a produção, trazendo ideias, estamos no epicentro com gerentes de produto, e com projetos, e com todos - todos estão coordenados e cooperados. Caos, mas tudo é espiritual.



O que acontecerá mais rápido - eles serão um assistente de voz inteligente que não compreenderá pior do que uma pessoa, ou Elon Musk inventará uma interface neural?



Não sei nada sobre o estágio em que se encontra a interface neural. Mas um assistente de voz inteligente que entenderá tão bem quanto uma pessoa ainda está muito longe. Até agora, ninguém sabe como fazer o assistente entender. Todas as conversas em redes neurais poderosas são imitações. Eu vi uma pergunta sobre o teste de Turing - este também é um teste de imitação, de quão bem o sistema finge ser humano e finge que entende, mas afinal, nenhum sistema entende nada. Teve o chatbot Eugene Goostman, que venceu uma das provas - passou em certa porcentagem dos juízes que tiveram que ser enganados. Ele fingiu ser um menino de 15 anos de Odessa com seu pai, um ginecologista e uma cobaia (não é brincadeira - ele estava falando sobre si mesmo). O bot manteve um pouco o contexto, perguntando: "De onde você é?" - e lembrou-se da cidade pela resposta,e então usei o memorizado depois de um tempo, causando um efeito uau. Embora agora não seja muito difícil criar um efeito wah com assistentes de voz; eles não são perfeitos. Além disso, como a competição era em inglês, as irregularidades na fala do bot foram atribuídas ao fato de ele ser "de Odessa" - acreditavam em um menino estrangeiro.



A questão é o que chamar de “compreensão”, o que é “compreensão tão boa quanto um ser humano” e o que basicamente queremos dos bots de bate-papo. Ninguém sabe a resposta para essa pergunta também. Queremos que ele converse conosco como um melhor amigo ou que controle continuamente a casa inteligente e o carro e acerte despertadores? O que ele pode fazer? Ele pode nos xingar e nos insultar? Não é que todos os nossos melhores amigos xinguem e zombem, mas existem maneiras especiais de se comunicar com os entes queridos. Talvez não quiséssemos que o sistema falasse bem conosco e contasse anedotas?






O que aconteceu antes



  1. Ilona Papava, Engenheira de Software Sênior do Facebook - como conseguir um estágio, obter uma oferta e tudo sobre trabalhar em uma empresa
  2. Boris Yangel, engenheiro de ML da Yandex - como não se juntar às fileiras de especialistas idiotas se você é um Cientista de Dados
  3. , EO LastBackend — , 15 .
  4. , Vue.js core team member, GoogleDevExpret — GitLab, Vue Staff-engineer.
  5. , DeviceLock — .
  6. , RUVDS — . 1. 2.
  7. , - . — .
  8. , Senior Digital Analyst McKinsey Digital Labs — Google, .
  9. «» , Duke Nukem 3D, SiN, Blood — , .
  10. , - 12- — ,
  11. , GameAcademy — .
  12. , PHP- Badoo — Highload PHP Badoo.
  13. , CTO Delivery Club — 50 43 ,
  14. , Doom, Quake Wolfenstein 3D — , DOOM
  15. , Flipper Zero —









All Articles