Transcrições
1. Trailer do curso: Olá a todos, Bem-vindo ao curso de hoje que é sobre processamento de linguagem natural em Python. Meu nome é Leah e eu sou um cientista de dados em uma grande instituição financeira com cerca de quatro anos de experiência em meu colega de trabalho, Ray e eu realmente queria fazer esses vídeos porque notamos que há uma enorme lacuna entre o habilidades que você aprende na escola versus aquelas que você realmente precisa no mundo real. Então, todos os nossos vídeos estarão focados em usar conjuntos de dados do
mundo real, problemas do mundo real e também fornecer as habilidades necessárias para resolver aqueles que eles não ensinam necessariamente na escola. Estamos muito entusiasmados por te ter hoje e esperar que fiques por aqui. Na lição de hoje. Vamos cobrir os conceitos básicos do processamento de linguagem natural, incluindo algumas técnicas de pré-processamento e parte da marcação de fala Reconhecimento de Entidade Nomeada, análise de
dependência e frequência de termos. E você pode não saber nada disso significa ainda, mas você será um profissional até o final deste vídeo. Este tutorial é realmente destinado a ser amigável para iniciantes. Vamos começar do início com os cadernos Jupyter. Você será capaz de seguir junto com o que eu estou fazendo e usar algumas bibliotecas realmente populares, como pandas, Spacey, e scikit learn. Agora, estes são realmente populares na comunidade de ciência de dados em geral, mas especialmente para processamento de linguagem natural. Os dados que vamos usar para o curso de hoje são um conjunto de milhares de avaliações da Amazon. Eu escolhi as avaliações da Amazon porque praticamente todos compraram algo da Amazon em 1 e muito provavelmente deixou sua avaliação. Então este é um conjunto de dados realmente familiar para todos. Especificamente, vamos dar uma olhada na categoria de casa e cozinha. Mas também vou ligar-te ao conjunto de dados de onde retirei isto. E você poderá ver um monte de diferentes avaliações de categorias da Amazon, como Tech AB, Maquiagem, qualquer coisa assim. E com isso, vamos começar.
2. O que é NLP?: Então, no curso de hoje, vamos estar falando sobre processamento de linguagem natural ou PNL com Python, um pouco de fundo sobre o que PNL realmente é. É realmente em um nível alto, apenas uma maneira de os computadores entenderem ou processarem a linguagem humana. Se você fizer outros cursos em um LP, você pode ouvir o termo compreensão de linguagem natural. E alguns cursos fazem a distinção entre processamento de linguagem natural como realmente quebrar os dados de texto em uma forma que os computadores podem entendê-lo. E então a compreensão da linguagem natural é reconhecer as relações entre as palavras dentro da frase. Relacionamentos entre frases, ou até mesmo relações entre todos os documentos uns com os outros. Então, alguns exemplos de PNL que você provavelmente está familiarizado com em sua própria vida. Ou nosso número um, sua Amazônia, Alexa. Muitas pessoas têm esses dispositivos em suas casas e você é capaz de fazer uma pergunta como Alexa, qual é o tempo? E ela lhe dará uma resposta dizendo, que o tempo está atualmente 65 graus em pulsar. Então, nos bastidores, realmente o que Alexa está fazendo é usar algum processamento de linguagem
natural ou compreensão de linguagem natural para ser capaz de pegar seu texto ou discurso que você realmente disse em voz alta. E então converta isso em texto escrito e depois converte isso em algo que o computador possa entender. Processos que recebem a resposta e, em seguida, enviam-na de volta para você. Agora, a Amazon gastou muito tempo, energia e pesquisa sobre isso. Eles realmente fazem tudo parecer super simples. Você faz uma pergunta rápida, você recebe uma resposta muito rápida, mas na verdade há muita coisa acontecendo debaixo do capô. Então, outro exemplo de PNL que você pode estar familiarizado com o seu dia a dia é um texto preditivo no iPhone. Agora, se você não estiver familiarizado com
isso, é aqui que você começará a digitar uma frase em sua mensagem de texto. E então a Apple tentará prever o que você quer dizer ao lado dele, facilitando para que você não precise digitar todas as suas palavras. Você pode simplesmente clicar nos botões para ver o que você quer ver. Então, no exemplo aqui nós digitamos fora quer almoçar. Vamos mandar isso para a Jane. E então a Apple está nos dando alguns pequenos emojis que podemos querer colocar com ele, e também algumas outras palavras que podemos querer incluir lá também.
3. Visão de cursos e ferramentas: No curso de hoje, como eu mencionei anteriormente, estamos realmente começando em um nível muito amigável para iniciantes. Então, se você não sabe muito sobre PNL, isso é ótimo. Vamos aprender tudo isso neste curso. E então se, também se você não está familiarizado com os espaços da biblioteca, eu não posso aprender e Pandas, nós vamos passar por eles também. Agora eu tenho listado aqui que você pode querer ter alguma experiência com Python 3. Isso realmente não é extremamente necessário. Vamos usar Jupyter Notebooks. Então você deve ser capaz de seguir com facilidade com o que estou fazendo. Mas eu vou estar usando algumas funções mais avançadas ou intermediárias dentro do Pandas, como aplicar instruções com funções lambda. Mas eu também vou estar falando através deles enquanto passamos por tudo. Os tópicos que vamos abordar no curso de hoje, nossa freqüência de pré-processamento de termos, marcação de
parte de fala reconhecimento de entidade nomeada e análise de dependência. Agora estes são apenas a ponta do iceberg quando se
trata de processamento de linguagem natural. Porque realmente para qualquer um desses, você pode ter um curso completo sobre eles, mas nós vamos dar-lhe o básico aqui. E então você deve ser capaz de aplicar sua compreensão em problemas do mundo real que você vê, as ferramentas para o curso que estaremos usando nossos Jupyter Notebooks. Como eu disse, eu vou estar rodando isso através PyCharm, nauseous, meu IDE preferido, mas poucos estão usando Anaconda. Isso é perfeitamente bom. Desde que você seja capaz de executar um caderno de Júpiter de alguma forma, isso é ótimo. E como já mencionei antes, as bibliotecas que usaremos principalmente nossos Pandas, scikit-learn e SPAC. E novamente, se você não sabe nada sobre essas bibliotecas, tudo bem. Você vai aprender hoje.
4. Carregue um caderno de Júpiter: Tudo bem, então agora vamos começar a percorrer algum código que você deveria ter baixado em seu arquivo, o caderno Júpiter da lição, bem
como o conjunto de dados que a maneira que eu vou abrir isso é através do PyCharm. Este é o meu editor preferido. Eu geralmente não gosto de usar Anaconda só porque ele realmente não funciona bem quando você está
tentando criar arquivos executáveis e fazer desenvolvimento de software mais tradicional. Então eu vou estar usando PyCharm, mas se você tem Anaconda ou seu IDE favorito, que não é um daqueles para uma carregá-lo em seu computador. Sinta-se livre para fazer isso. Mas eu vou apenas abrir um caderno de Júpiter indo para o terminal e depois digitando Júpiter. E o que isso vai fazer é girar isso. Então você deve ser capaz de fazer isso em qualquer IDE que você está usando, mas eu prefiro usar PyCharm. Ok, então podemos ir em frente e começar agora que temos nosso caderno de Júpiter aberto, eu incluí um monte de texto aqui. Então este poderia realmente ser um caderno de Júpiter autônomo com essa informação de fundo, mas você estará recebendo muito disso através
dos slides que eu estou falando em outras partes deste vídeo. Então muitas vezes eu poderia pular sobre isso, mas se você precisar voltar e se referir a qualquer coisa, digamos que você esqueceu o que tokenization estava lá algo que você pode se sentir livre para apenas olhar no Jupyter Notebook nessas seções de texto, Eu também incluí um link para baixar PyCharm. Se você quiser fazer isso. Acabei de baixar a edição comunitária, que é grátis. Eu vou até aquele link só para mostrar a vocês como isso é. Este é o meu ambiente de desenvolvimento preferido, como eu disse, mas eu sei que muitas pessoas usam qualquer Anaconda porque ele vem com Python e todas essas coisas boas. Ou VS Code e outro popular. Então escolha o que funciona para você. Pycharm Community Edition é grátis, então basta baixar e instalá-lo em seu computador se quiser brincar com isso.
5. SpaCy: Agora, se você é completamente novo no processamento de linguagem natural em Python, você pode não ter ouvido falar desta biblioteca chamada spacey. O que é basicamente é, é apenas uma biblioteca livre de código aberto que é realmente popular na fase de uso da PNL. Muitas pessoas o usam para seus pipelines pré-treinados, que são armazenados como modelos. Então a forma como o espaço que ele armazena as coisas é um pouco complicada. Sabe um pouco de se acostumar, mas vamos quebrar. E a visão geral aqui é que vamos pegar alguns textos para colocá-lo neste mecanismo de PNL, que faz um monte de coisas nos bastidores. Vai tokenizar nossas palavras para nós. Ele vai fazer uma marcação de parte do discurso, fazer alguma análise de reconhecimento de entidade nomeada. E realmente você também pode adicionar em seus próprios passos personalizados, se você quiser. Mas este é apenas um exemplo aqui. E uma vez que tudo isso é feito, basicamente poupa fora como o que é chamado de DACA. E de lá dentro da doca, você pode acessar todas essas coisas. E vai fazer muito mais sentido quando passarmos pelo tutorial, na verdade, mas esta é apenas uma visão geral de alto nível por enquanto. Então, como mencionei nos slides, vamos usar uma biblioteca chamada SPAC, que é extremamente popular para processamento de linguagem natural em Python. E uma das coisas que você tem que fazer aqui é primeiro instalar um modelo que o espaço vai usá-lo. Eles têm versões pequenas, médias e grandes de modelos. Você também pode treinar seu próprio modelo, se quiser. Então, para esta demonstração, vamos baixar o pequeno modelo inglês que foi treinado em texto de blogs, notícias e comentários. Eu vou primeiro sair e mostrar esses modelos se parecem na documentação do SPAC. Então você pode ver aqui estamos usando o English Core web small, e ele lhe dá um pouco mais de informações sobre eles. Mas você também pode ver até mesmo médio lá fora, grande e eles têm algumas outras versões também. Há também é importante para um monte de idiomas diferentes. Então, se você estiver trabalhando com dados que estão em outro idioma diferente do inglês. Você pode ir aqui e baixar, digamos, um modelo espanhol se quiser fazer isso. Então este primeiro passo aqui onde apenas baixar o modelo. E eu já baixei isso. Então provavelmente vai me dar uma mensagem dizendo que eu já baixei. Mas para você, você provavelmente terá que se sentar durante o download, o que não deve demorar muito. Ok. Então está dizendo que eu já o baixei. Isso é totalmente bom. Apenas certifique-se de obter o seu está baixado.
6. Bibliotecas de Python: Ter todas as importações que vamos usar para este conjunto de dados e análise. Então vamos usar pandas spacey, scikit-learn, uma ferramenta de visualização chamada tijolo amarelo e também a biblioteca de caminhos. Nós também vamos em frente e carregar no modelo Inglês da Spacey e apenas rotulá-lo como PNL porque nós estaremos usando isso mais tarde. Então eu vou importar tudo isso. Se você estiver executando isso pela primeira vez, provavelmente
precisamos instalar todas essas bibliotecas também. Então, certifique-se de fazer isso. Também incluí um arquivo de requisitos. Então, se você estiver usando PyCharm, você pode criar seu próprio ambiente virtual e fazer apenas uma instalação pip a partir do arquivo de requisitos. E ele vai baixar tudo o que você precisa de lá.
7. Sobre os dados: Em seguida, eu queria dar um pouco de fundo sobre esses dados que estamos usando. Grande grito para Julian Macaulay na Universidade da Califórnia, San Diego, que realmente juntou esses dados. Ele fornece uma tonelada de avaliações diferentes da Amazon desde 1996 até 2014. E para nossos propósitos hoje, o que vamos fazer é apenas analisar um subconjunto de 500 avaliações de cozinha e produtos domésticos da Amazon. Assim, além das avaliações, que incluem classificações, texto
e modos de saúde, Julianne também nos dá alguns metadados do produto, como descrições sobre a categoria do produto,
informações, preço, imagem da marca e também links para o curso de hoje, vamos olhar apenas para os dados de revisão. Portanto, estas serão apenas as leituras, o texto dos comentários, bem como qualquer voto de utilidade. Então, quantas pessoas acharam esta avaliação de produto útil? Eu realmente gosto deste conjunto de dados porque a maioria de
nós provavelmente comprou algo da Amazon em algum momento de nossas vidas. E, potencialmente, escrevi uma crítica. Então isso é realmente familiar para muitos de nós. Eu também gostei muito desses dados porque é um exemplo incrível de como os seres humanos realmente digitam ou se comunicam através de texto. E isso vai incluir muitos erros de digitação executados em frases, todas as maiúsculas para incluir emoção, muitos pontos de exclamação e qualquer coisa sob o sol que você possa pensar praticamente. Considerando que se estivéssemos lidando com qualquer tipo de texto formal, não
teria tantos desses erros e mais emoção que as pessoas usam geralmente na maneira que eles podem escrever comentários de produtos. Então eu vou sair para esses dados e mostrar a vocês o que realmente está lá fora. Pode sentir-se livre para sair para este site e dar uma olhada. Ele inclui uma tonelada de diferentes categorias de revisão de produtos. Se vamos nos concentrar na seção de casa e cozinha. Mas se você queria olhar para as críticas de livros, CBS Sports, o que você quiser. Há alguns dados lá fora para isso. E ele dá muita informação aqui sobre o que esses conjuntos de dados realmente significam. Então sinta-se livre para ir e lê-los em seu próprio tempo. Julian também foi muito bom para nos fornecer um par de funções para poder analisar os dados porque eles vêm no formato JSON. E, finalmente, queremos colocá-lo em um Pandas DataFrame para ser capaz de manipulá-lo um pouco mais fácil. Então ele já escreveu essas duas funções para nós. Um para analisar o caminho do arquivo e, em seguida, queria realmente criar um DataFrame a partir do arquivo JSON. Então vamos em frente e usar essas funções. E então aqui estamos apenas lendo o DataFrame e, em seguida, pegando uma amostra de 500 itens, essa opção de estado aleatório, você pode definir isso para o que quiser. Mas se você quiser obter o mesmo conjunto de dados com o qual estou trabalhando, basta
deixar isso em um, mas isso é útil para reprodutibilidade. E então vá em frente e execute isso. E vai demorar um pouco porque há na verdade cerca de 0,5 milhões de comentários. Eles estão no formato JSON. E então nós temos que analisar através desse JSON para obter o Pandas DataFrame que queremos,
para o bem deste tutorial e não ter as coisas executado super longo, vamos apenas tomar um subconjunto de 500 desses. E então vamos deixar isso correr por um minuto e depois voltar em um segundo. Então, parece que estamos carregados e vamos dar uma olhada em como o DataFrame realmente se parece. Então você pode ver aqui, pandas nos dá esse ID exclusivo, então nós temos esse ID de revisor. Outra idéia parece que talvez para o produto que o revisor nomeia uma peça nos dizendo quantas pessoas acharam isso útil versus não achou útil. O texto da revisão, que será a principal coisa em que nos concentramos na lição de hoje, a pontuação geral de cinco, o resumo da revisão
e, em seguida, algumas colunas sobre o que está na revisão é feita. Então você pode ver por aqui temos poucos de 2013, lote de 2011. Mas esses dados remontam a 1986.
8. Termos de NLP: Então, quando você começa no espaço PNL, você provavelmente vai começar a ouvir um monte de termos que você nunca ouviu antes. Eu sei, especialmente quando comecei, foi um pouco esmagador ouvir o vocabulário diferente que ele usou para isso. Então, neste curso vamos começar definindo todos esses termos e, em seguida, mostrar como eles são usados. Primeiro, vamos começar com token, e você pode pensar nisso como um agrupamento de personagens. Então, neste exemplo, estamos tokenizing no nível do caractere. E isso significa que estamos pegando uma frase em que estamos começando com ela foi oferecido o emprego 11 meses atrás e pegando cada personagem individual e fazendo isso um símbolo. Agora isso é realmente útil quando você tem textos curtos, como nomes de arquivos ou no exemplo dos dados que estamos usando. Mas esse pode ser o título de uma visão diferente. Então, nesses casos, pode não haver textos suficientes lá para ser capaz de token íons no nível da palavra muito bem, especialmente com nomes de arquivos. Muitas vezes as pessoas colocam sublinhados ou outros tipos de caracteres lá para que não possamos realmente separar em espaços em branco. Assim, muitas vezes pode ser útil para dividi-lo no nível
do personagem e, em seguida, enviar para outras etapas de processamento. Você também pode fazer tokens no nível da palavra ou um unigram. Então, neste exemplo, estamos pegando a mesma frase e dividi-la de uma maneira diferente. Então nós estamos dividindo isso no que é conhecido como unigramas, que são basicamente pode pensar como palavras. Então aqui estão nossas fichas, ela foi oferecida, assim por diante e assim por diante. Agora você também pode agrupar tokens em grupos de dois como poços. Em vez de quebrar as coisas por palavras, podemos juntar duas palavras. Então isso leva nossa sentença de ela ter sido oferecido o emprego 11 meses atrás para dividi-lo em duas palavras fichas, ela foi oferecido o emprego 11 meses atrás. Bigrams também são muito interessantes porque eles nos deram informações posicionais. Então nós podemos dizer, neste caso, nosso primeiro bigram, ela era nós podemos dizer que ela é a primeira palavra e foi é a segunda palavra. Isso seria diferente, por exemplo, de um bigram chamado era ela seria a primeira palavra ou o primeiro token e não e então ela seria o segundo token. Agora isso na indústria é realmente conhecido como n-gramas, e você pode fazer quantos agrupamentos quiser. Então bigrams seriam dois grupos de tokens juntos. Você pode fazer trigramas para três grupos de tokens juntos, assim por diante e assim por diante. Você também pode fazer esses tipos de tokens no nível do caractere também. Então poderíamos agrupar SH e EW como tokens. E quando entrarmos no código aqui vamos ver alguns exemplos de porque podemos querer usar unigramas versus bigrams. Mas os tokens são realmente a base do processamento de linguagem natural. Então, uma vez que temos todo o nosso texto em tokens, o que podemos fazer é agrupar os tokens juntos como documentos. Então você vai ouvir documentos aliados. E normalmente o que você pode pensar como um documento do Word ou um pedaço de papel ou algo assim. Mas realmente, quando estamos falando em processamento de linguagem natural, um documento é apenas um grupo de tokens. Então, um exemplo disso é aqui que temos o documento um. Foi oferecido o emprego a ela 11 meses atrás. Pashas para uma única frase, mas chamamos de documento aqui. E, em comparação com o documento, as duas meninas foram ao parque depois da escola, viram três esquilos e esquilos. Observe que isso é duas frases, mas ao todo que é agrupado como um documento. Agora você poderia fazer isso com mais do que apenas frases. Você pode fazer. Por exemplo, os parágrafos agrupam esses. Você também pode agrupar páginas ou documentos inteiros. De lá, subimos mais um passo. E quando agrupámos documentos, isso é conhecido como um corpus. Então você pode pensar em um corpus como todo o seu grupo de todos os documentos que você tem. E um exemplo disso, pegamos os dois documentos que acabamos de ver em nosso último exemplo e dizemos que os agrupámos juntos e que será nosso corpus. Então, no curso de hoje, vamos trabalhar com avaliações da Amazon. Todas as avaliações da Amazon serão nosso corpus de documentos. Então o próximo termo que você vai ouvir muitas vezes em processamento de linguagem
natural é chamado vocabulário. E o vocabulário é realmente apenas os tokens únicos que estão em seu corpus. Então é novamente um exemplo de um vocabulário que vamos
extrair do nosso exemplo que acabamos de ver um corpus. E tudo o que vamos fazer é obter as fichas únicas entre os dois documentos. Então eu listei todos aqueles abaixo e você notará, por exemplo, que aparece em ambos os documentos. Mas está listado como dois tokens individuais dentro do vocabulário aqui. Um com maiúsculas e outro com minúsculas. E isso será importante quando falarmos mais tarde sobre algumas de nossas técnicas de pré-processamento para que pudéssemos realmente minúsculas a frase. E então teríamos apenas uma instância disso.
9. Pré-processamento de dados de texto: Vamos falar sobre etapas de pré-processamento. Há uma grande variedade de etapas de pré-processamento que você pode fazer com seus dados. E dependendo da situação, você pode não usar todas essas etapas de pré-processamento sobre as quais
vou falar ou até mesmo fazê-las na mesma ordem. Depende totalmente do seu caso de uso e dos seus dados. Uma das etapas de pré-processamento mais básicas que você pode fazer é minúsculas seus dados. Isso realmente garante que o caso não afetará quaisquer frequências de termo são contagens de palavras que você está fazendo. Então vamos dar um exemplo de frase. Ofereceram-lhe o emprego há 11 meses. Isto é escrito da maneira que provavelmente escreveríamos com uma letra maiúscula no início da frase e, em seguida, um ponto no final. Então, o que faríamos esta frase como nosso primeiro stub pré-processamento potencialmente seria apenas para minúsculas tudo. Então, tudo o que estamos mudando aqui é apenas fazer esse maiúsculo como um s minúsculo. Assim, quando estamos identificando tokens, não
estamos contando ela com um S maiúsculo, SHE com um s minúsculo como dois tokens separados. Queremos que eles sejam reconhecidos como o mesmo símbolo. Agora você pode não querer coisas em minúsculas se você estiver potencialmente trabalhando com dados em
que são pessoas reais escrevendo e talvez elas estejam escrevendo em maiúsculas para expressar um certo sentimento. Nesse caso, você pode não querer abaixar tudo. Você pode querer extrair as palavras ou tokens que estão em maiúsculas. Por exemplo, a próxima etapa de pré-processamento que vou abordar é remover a pontuação. Isso é exatamente o que parece. Vamos remover caracteres como pontos, pontos de
exclamação, ponto de interrogação. Então, se realmente algum tipo de pontuação, a razão pela qual queremos fazer isso é apenas para limpar nossos dados um pouco que não estejamos contando essa pontuação como tokens. Realmente, provavelmente não nos importamos com isso. Nós realmente nos preocupamos com as próprias palavras dentro do texto. E muitas vezes vamos nos livrar daqueles em nosso pré-processamento. No entanto, você pode não querer remover a pontuação se você está tentando separar frases dentro de um documento, pode querer deixar essas frases para que você tenha uma maneira de dizer isso como uma frase, esta é uma segunda frase, assim por diante e assim por diante. Então, um exemplo de remoção de pontuação. Aqui temos a mesma frase. Temos um período no final para remover a pontuação vai fazer é se livrar disso. E você verá na próxima frase que não temos pontuação. E outra etapa para o pré-processamento que você pode fazer é remover quaisquer caracteres numéricos entre 0 e 9. Muitas vezes, quando você está lidando com dados de texto, você quer se livrar de números é porque eles não fornecem muito valor. Muitas vezes estamos interessados nas próprias palavras e não em números. Mas pode haver situações em que você quer manter números se você está lidando com texto que tem um monte de data. Então você pode querer deixar aqueles para ser capaz de identificar que este texto era deste estado. Aqui está um exemplo de tirar números. Vamos apenas remover 11 da frase com que estamos trabalhando aqui. Esta etapa de pré-processamento de texto é tudo sobre a remoção de palavras de parada. E se você não trabalhou em processamento de linguagem natural antes, você provavelmente não ouviu falar do que é uma palavra stop. Realmente o que se resume é apenas palavras sem importância como e para qualquer coisa que é curta e realmente não adiciona muito valor a uma frase, mas também acontece muito. Como pensar sobre o quanto a palavra que é usada na linguagem humana. Realmente, se vamos ver quais são as palavras mais populares em uma frase tentando descobrir que tipo de sentimento alguém está expressando. O provavelmente não vai adicionar muito valor. Por isso, muitas vezes removemos esses. Então você pode estar se perguntando, como você chegar a uma lista de palavras stop são, qual é a lista de palavras stop? Bibliotecas diferentes que usam listas diferentes. Portanto, você pode tentar uma biblioteca que usa uma determinada lista. Você pode tentar outro que usa outra lista e incluir algumas outras palavras que o outro beco sem saída. E você também pode criar sua própria lista de palavras de parada. Por exemplo, se você tem um conjunto de dados que é altamente específico para dizer em dados financeiros, e você não deseja incluir palavras como orçamento ou bang, coisas como essa provavelmente aparecem em muitos dados de texto financeiros. Você pode incluir um dicionário de todas essas palavras e , em seguida, dizer ao Python para removê-los bem e contá-los como suas palavras stop. Para este exemplo, as palavras stop que estou usando serão apenas as típicas que muitas bibliotecas usam. Então vamos acabar removendo ela estava. E assim a sentença que nos resta foi oferecida empregos meses atrás. A próxima etapa de pré-processamento que vou passar é o que é chamado de tokenização. No início deste curso, falamos sobre tokens e como você pode obter tokens que são palavras. Você pode fazer tokens que são caracteres. Você pode realmente criar qualquer tipo de tokens que você quiser. Mas basta pensar em tokenizar um documento como separar o texto em unidades menores ou tokens, como já falamos anteriormente. Agora, neste exemplo, estamos pegando nossa string ou uma sentença oferecida há meses, e então estamos dividindo isso no espaço em branco aqui. Estou dividindo para que sejam palavras. Então nós acabamos com oferecido um emprego meses atrás, tudo como unidades menores da string original. No processamento de linguagem natural, você provavelmente vai começar a ouvir sobre stemming e lemmatização. E essas são maneiras de pegar palavras e levá-las à sua forma original. Estas técnicas são bastante semelhantes com uma ligeira nuance. Ele deriva realmente apenas corta os últimos caracteres de uma palavra para chegar à palavra raiz. Enquanto a lemmatização realmente usa partes da
marcação de fala para ser capaz de converter uma palavra em sua rota para IMA. Agora existem diferentes casos de uso para o motivo pelo qual você pode usar stemming e lemmatização. Eu tendem a preferir usar a lemmatização porque converte as palavras em um formato mais legível. Com stemming, você pode ter uma palavra que apenas fora das últimas letras e você realmente não sabe o que era essa palavra. E assim mesmo que eu prefira lemmatização e stemming, vale a pena notar é realmente muito mais rápido porque ele está apenas cortando os últimos caracteres no token. Considerando que a lemmatização precisa passar por uma rodada de marcação de parte da fala, potencialmente alguma análise de dependência para ser capaz de obter o lema correto para o token. Então, um exemplo de stemming aqui é pegar a palavra problema e apenas tirar a última letra E para levá-la para baixo para sua forma raiz. Agora você pode pensar em problemas ou problemas antigos, tudo
isso seria transformado em problemas. O TRO. Agora, a lemmatização leva uma palavra
baseada em sua parte do discurso e a coloca em sua forma raiz. Então é um pouco mais legível. Aqui você pode ver que tomamos oferecido um se transformou em oferta a forma atual dele para empregos ficar os mesmos meses. Nós não tiramos o ácido só chega à sua raiz há um mês e não muda. Então, o resultado final, se você se lembra onde começamos nesta frase, ela foi oferecido o emprego 11 meses atrás. Nós realmente começamos a oferecer emprego mês atrás como nosso conjunto final de tokens. E isso ajuda a cortar muitas das palavras que não nos importamos e realmente chegar ao significado da frase. Começaremos pré-processando nossos dados. Você pode absolutamente escrever suas próprias funções para fazer todas essas etapas de pré-processamento, como minúsculas, ranhura e pontuação ou números, palavras de interrupção, tokenize e lemmatizado. Mas SPAC é realmente muito bom e faz tudo isso com base em atributos
token se eles têm um monte de atributos diferentes em seus tokens. E eu vou sair para este link aqui, onde na documentação você pode ver todos os atributos que eles têm. Assim, para cada token, você pode ver se há espaço em branco nele. Você pode ver que tipo de entidade é. Você pode ver a forma minúscula do token. Você pode ver a forma do token. Tenho todos esses atributos diferentes. Então Spacey tem um monte de atributos de token diferentes, mas os três que vamos estar interessados em fazer nosso pré-processamento nosso token. Esse lema, que nos dá o lema do
token, token dot é alfa, que remove pontuação e números do token. E então Token dot é stop, que remove quaisquer palavras stop neste texto aqui, eu estou apenas tomando este mesmo exemplo que eu fui sobre os slides. Então, ofereceram-lhe o emprego há 11 meses, aplicando o processamento de linguagem natural para salvá-lo como um documento. E então dizendo, vamos retornar o lema para cada token no documento, contanto que não seja um caractere numérico e também não seja uma palavra stop. E essa sintaxe, se você não estiver familiarizado, é chamada de compreensão de lista, o que nos traz de volta uma lista dos tokens limpos. Então vamos rodar isso e depois imprimir o documento. Como podem ver aqui, quando imprimimos nossa doca espacial, parece que nada aconteceu. Basicamente, está armazenando toda essa informação nos bastidores. Queremos realmente ver os textos limpos imprimirão textos limpos. E você pode ver aqui que o que nos resta é exatamente como tivemos em nosso exemplo de slides, só
ficamos com os seguintes tokens. Oferta de emprego há um mês. Então este é apenas um exemplo de brinquedo para ver como isso funciona. Mas o que realmente vamos querer fazer é tokenized e
limpar todas as nossas críticas que temos. Então hoje, eu escrevi uma função chamada texto pré-processado. Ele leva em uma janela SPAC e, em seguida, retorna uma string e eu dou um pouco de informação sobre o que esta função está fazendo. Esta é uma prática realmente boa que eu
sugiro que você tenha o hábito de fazer é escrever o que são chamados docstrings para ser capaz de tornar o seu código mais legível e permitir que outros para pegá-lo mais facilmente. E o que estamos fazendo aqui realmente é pré-processar um dock SPAC monetizando-o, removendo quaisquer palavras de parada e, em seguida, removendo caracteres não alfabéticos. E novamente, estamos pegando um Doc SPAC, que é uma seqüência de objetos de token e retornando ao texto limpo, o código real que estamos executando é o mesmo código que eu tinha acima, exceto o que eu estou fazendo é em vez de retornando uma lista, eu estou apenas juntando de volta todos os tokens juntos em uma única string. Isso faz com que seja um pouco mais fácil de ler. Então, primeiro vamos aplicar o modelo PNL a toda a coluna de texto de revisão. E eu estou fazendo isso via Pandas, aplicar com uma função Lambda. Se você não está familiarizado com o que é uma função lambda, é apenas uma função inline onde x é nossa variável aqui. Então eu estou aplicando isso a todos os dados dentro do texto de revisão. E eu digo isso fora como uma nova coluna chamada espaço. A razão pela qual queremos salvar isso porque é preciso um monte de recursos de computação para ser capaz executar o spacey, já que ele está fazendo tantas coisas nos bastidores que vamos fazer referência a isso uma e outra vez. Não queremos calculá-los várias vezes. Guarde isso numa nova coluna chamada Spacey Doc. E então, a partir daí, vamos trabalhar no doc SPAC e aplicar esta função que acabamos de escrever aqui chamada texto pré-processado. Vamos salvar isso neste novo texto de revisão para limpar a coluna. Então eu vou executar isso e ele vai se aplicar a essas colunas, fazer nossa nova coluna, e então vamos imprimir os resultados. Então vamos imprimir como Spacey Doc se parece. Estas são apenas as primeiras cinco linhas do nosso DataFrame. Então o que isso fez é tokenizado, feito algum Reconhecimento de Entidade Nomeada nos bastidores, análise de
dependência, um monte de coisas. E está apenas nos mostrando que esses tokens são separados por vírgulas e mesclagem. Se imprimirmos os textos de revisão limpos que chegamos aos nossos textos originais para este foi eu abri a caixa e para minha surpresa, com base em todos os nossos passos de pré-processamento, o que nos resta é caixa aberta, surpresa, colher, lidar, enviar o mais rápido possível. Mas você pode ver que estamos cortando muitas dessas palavras que provavelmente não nos importamos. Eles acontecem muito na língua inglesa e realmente se resumindo às palavras que estão fazendo a diferença. Ou fiz muito valor a esta frase. Então, isso é o quão fácil um espaço ele faz para pré-processar. Mas, como eu disse, dependendo do seu caso de uso e dos dados com os quais
você está trabalhando, você pode não usar todas essas etapas de pré-processamento ou pode realmente fazê-las em uma ordem diferente. Portanto, é muito importante pensar sobre os dados que você tem e que tipo de etapas você gostaria de aplicar aos dados para limpá-los.
10. Frequência de termo: Assim, uma definição formal de frequência de termo é o número de vezes que o token aparece no corpus. E o que isso significa muitas vezes é fazer um contador de palavras, que isso pode ser uma ótima maneira de resumir dados. Assim, por exemplo, em nossos dados temos centenas de milhares de revisões. Nós não temos tempo para sentar e ler cada um
deles para ter uma idéia sobre o que as pessoas estão falando. Poderíamos fazer frequência de termo para ver quais são as palavras ou termos mais populares que as pessoas estão falando. E isso poderia nos dar uma melhor compreensão dos dados em um período muito curto de tempo, em vez de gastar horas, potencialmente dias lendo cada revisão individual. Uma maneira muito popular de fazer frequência de termo é através do vetorizador de contagem Scikit-learn. Contagem vetorizer é muito bom porque ele faz todo o trabalho para você. Você não tem que passar por todas as suas tags,
loop através de cada token, armazenar conta para todos eles. Ele só vai fazer tudo em um para você. Existem vários parâmetros diferentes dentro do vetorizador de contagem que você pode ajustar. E eu encorajaria você a ir para a
documentação do scikit-learn e dar uma olhada neles por si mesmo. Mas porque eles impactam a forma como as palavras são contadas. Mas os dois que vamos nos concentrar hoje são e intervalo de engrama para
palavras de parada vetorizador de contagem. Você tem algumas opções diferentes. Você não pode usar quaisquer palavras de parada. Então você já pré-processa seus dados e retirou palavras de parada. Isso pode ser um caso em que você não usa palavras de ordem ou se você realmente deseja incluir palavras de ordem na sua conta. Então você poderia fazer isso também. Você pode usar suas palavras de parada em inglês embutidas, ou você pode passar em sua própria lista personalizada. E isso pode ser algo onde você tem dados específicos relacionados a um determinado setor e palavras aparecem que não são necessariamente comuns em todo o idioma Inglês, mas muito específicos para o seu conjunto de dados que você não se importa. Então você pode passar em uma lista daqueles para remover também. E a gama de gramas é um perímetro muito poderoso do vetorizador de contagem. Você pode passar em se você quer ver apenas unigramas, ele apenas bigrams, unigramas e bigrams, trigramas, realmente até qualquer intervalo de n que você quer. E isso é muito bom porque nos permite não apenas ver quais palavras são realmente populares, mas também começar a pegar em quais frases as pessoas estão usando. Então, a seguir, vamos entrar em alguma frequência de termo, ou você pode pensar nisso como um contador de palavras. Como eu disse anteriormente, temos no total neste conjunto de dados cerca de 0,5 milhões de comentários. E nós só provamos cerca de 500 desses. Então isso definitivamente faz com que seja mais amigável para ser capaz de ler através deles. Você pode potencialmente passar por todos os 500 se você quiser manualmente. Mas uma coisa realmente grande que podemos fazer aqui é começar a obter algumas parcelas de que tipos de palavras ou frases as pessoas estão falando nesses comentários. E para resumi-los mais rapidamente, em vez de nos fazer ler manualmente todas as avaliações que as pessoas deixaram. Para fazer isso, vamos usar o vetorizador de contagem do Scikit-learn. Contagem vetorizer tem uma grande variedade de parâmetros. Eu vou até este link e mostrar a vocês como isso se parece. Então esta é a documentação do scikit-learn sobre contagem vetorizer. E você pode ver que essas são todas as entradas que você pode dar. Então você pode dizer se você quer que as coisas em minúsculas, se você quiser, como você quer que ele tokenize, seja no nível de palavra ou personagem. Também pode incluir palavras de parada e um padrão de token. Há muitas opções diferentes aqui. Portanto, sinta-se livre para olhar através deles e brincar com algumas
dessas opções diferentes e ver como elas afetam os dados. Mas hoje nós vamos apenas estar focados realmente nos n-gramas e nas palavras stop. Então, a maneira que usamos o vetorizador de contagem do scikit-learn é que chamamos de vetorizador de contagem. E para nós, vou deixar todos os padrões exceto eu vou dizer, vamos usar as palavras de parada em inglês. E então vamos começar com um intervalo de engrama de 11. Então isso significa que só vou ver unigramas ou palavras simples. E então nós salvamos isso fora como este vetorizador de contagem de variáveis. E de lá em diante vetorizador nós fazer ajuste função transformada. E nós passamos em nossos textos de revisão limpo, guardamos isso fora como documentos. E podemos fazer ponto vetorizador obter nomes de feições. E isso nos dá as características. E isso é basicamente fazer nossas contas de palavras para nós nos bastidores. Agora, se quisermos traçar esses, podemos usar uma biblioteca chamada Scikit amarelo tijolo e visualizá-los facilmente. Então, do scikit amarelo break, vamos chamar este visualizador de distribuição de frequência. E vamos passar os recursos que acabamos de criar, bem
como o tamanho do enredo para então fazer um ajuste sobre isso e, finalmente, um show. Então vamos ver como isso se parece. Aqui podemos ver um gráfico
das distribuições de frequência
no top 50 tokens de nossas 500 avaliações que puxamos. A palavra superior é usada, o que provavelmente faz sentido se você estiver tendo um produto, você vai usá-lo. Então temos algumas palavras positivas como perna, bom, cinza para parecer bem positivo até agora. E temos algumas palavras como chávena de café aqui em baixo. E assim, conseguimos resumir as principais palavras que as pessoas estão usando em suas avaliações da Amazon para 500 avaliações. Agora digamos que essas palavras não são informações suficientes para nós. Bem, nós podemos realmente fazer é voltar para o nosso vetorizador e mudar o alcance do engrama de apenas unigramas para nós poderíamos apenas fazer bigrams ou duas palavras juntos. Então, se voltarmos a executar esta célula e, em seguida, refazer o
nosso enredo vai ver o que duas palavras as pessoas estão usando juntos muito. Então você pode ver que temos umtrabalho de aço inoxidável fácil e
limpo, trabalho de aço inoxidável fácil e
limpo, ótimo e fácil Hughes no antiaderente. E você pode passar por aqui e olhar para isso em muitos deles faz sentido porque o reino dos produtos da Amazon que estavam naquela casa e cozinha K. Então ferro fundido, aço inoxidável, tudo isso faz sentido. lavar louça, tábua de corte segura. Sim, é realmente interessante de ver e você pode meio começar a pensar sobre quais tipos de produtos as pessoas
estão revisando potencialmente desses conjuntos para bigrams? Agora, uma coisa que também podemos fazer é que você não tem que fazer apenas unigramas ou apenas bigrams. Podemos até fazer unigramas e bigrams juntos. Então, reexecutamos esse som, reexecutamos o enredo. Veremos os unigramas e bigramas juntos. Mas parece que para este caso, a frequência dos unigramas é realmente maior do que qualquer um dos bigrams. Então é por isso que só estamos vendo unigramas nesta trama. Mas definitivamente interessante de ver, e você também pode fazer trigramas. E vamos ver que frases de três palavras as pessoas estão usando. Então temos dispensador de sabonete sensor e revestimento antiaderente. Isso provavelmente funciona como um charme, mas o pré-processamento que fizemos mudou para funcionar. Como se você pudesse olhar por aqui e ver tipo do que as pessoas estão falando e potencialmente quais críticas as pessoas estão deixando também. Então, além de que tipos de palavras ou pessoas estão falando, nós também podemos querer descobrir quanto tempo é a avaliação média que as pessoas estão deixando. Então, para fazer isso, nós podemos realmente pegar nosso doc spacey e apenas fazer a função lambda para obter o comprimento disso, salvar que como todo o token conta,
e, em seguida, dar uma olhada no nosso texto de revisão limpo para ver quantos tokens , na verdade, caindo do texto original versus o texto limpo. Então, se executarmos isso, teremos duas novas colunas chamadas token count all, que seria a contagem de token, todos os tokens que, e então teremos um novo chamado token count clean, que é a contagem de token de os dados de texto pré-processados. A próxima coisa que eu vou fazer é apenas traçar isso obtendo as contagens de valor de lá e, em seguida, fazendo apenas um gráfico de barras com o que nossa contagem média de token é. Então você pode ver que temos uma grande variedade de links de tokens. Para deixar este gráfico ainda mais claro, você provavelmente poderia agrupar as coisas como um histograma, mas eu só estou fazendo as contagens exatas. Então, você pode ver que temos a maioria de nossas avaliações sendo em torno de um 100 tokens. E então nós temos alguns outliers aqui, este, e este grande aqui fora tem 739 tokens. Então eles devem ter sido realmente animado, estão realmente chateados com qualquer produto que eles tinham. Eu estou supondo definitivamente se você outliers aqui fora em revisões mais longas, mas eu diria que eles tendem a ser, parece que em torno do 30 para 40 gama de tokens, que na verdade muito curto para comentários. E, mas lembre-se que esta é a contagem de todos os tokens, pontuação parar palavras, it, Vamos ver o que acontece quando realmente fazemos a contagem de token na coluna limpa ou os dados pré-processados, você pode ver que a nossa contagem ou outliers drasticamente caiu de 700 e tokens para 271. Você pode ver o nosso número médio de tokens que temos em nossa análise é, na verdade, em torno de dez a 15 ou mais, que realmente não é tantos quanto eu pensaria para uma avaliação da Amazon. Agora, geralmente quando você está olhando para seus dados, você vai querer dar uma olhada em quaisquer outliers e ver como eles se parecem. Então eu vou apenas dar uma olhada nesta revisão que tem 271 tokens de pré-processo e eu vou imprimir o imposto de exibição original real. Então note que desde que eu estou imprimindo o texto de revisão, então isso vai realmente ser onde há 700 ou mais tokens. Mas você pode ver alguém que realmente tinha muito a dizer sobre seu moedor de rebarbas. E parece que eles voltaram várias vezes e atualizaram sua crítica. Então esta não foi apenas uma única revisão é realmente ao longo do tempo, o que é interessante. Você pode brincar e verificar quais você acha que são interessantes. Talvez você queira olhar para aqueles onde havia apenas 10 fichas no final, imprimi-los também.
11. Reconhecimento de entidades nomeadas: O reconhecimento de entidade nomeada é uma ferramenta extremamente poderosa dentro do processamento de linguagem natural que permite que um computador seja capaz de identificar objetos do mundo real dentro de mensagens de texto. Agora Spacey tem sua própria lista de coisas que reconhece. Qualquer coisa de nomes específicos de pessoas, nacionalidades, países, e realmente um monte de outras opções. E eu vou ligar você para o site deles para ser capaz de olhar através disso também. A forma como a Spacey reconhece entidades é através de um modelo pré-treinado. Então isso significa que alguém passou por um anotado são rotulados um monte de dados onde eles tomam frases ou parágrafos de texto. E para cada símbolo dentro desse texto, eles podem ter Jane Doe rotulada como uma pessoa ou Japão como um país. Então, com o uso de um modelo pré-treinado, é importante notar que ele não vai ser 100% preciso se o seu texto é muito diferente dos textos em que ele foi treinado, ele provavelmente vai reconhecer um monte de lixo. E veremos um pouco disso em nosso exemplo com o qual estamos trabalhando nas avaliações da Amazon. No geral, ele geralmente faz um trabalho muito bom em texto genérico. Um exemplo real de quando você pode usar reconhecimento de entidade
nomeada é mascarar quaisquer dados confidenciais, como nomes, números de segurança social ou números de telefone. Então, em seguida, vamos passar por um exemplo de reconhecimento de entidade nomeada. Basicamente torna este super fácil, o que é incrível e já tem um modelos pré-treinados. E podemos aplicar isso diretamente aos nossos dados. Então, apenas para dar um exemplo antes de aplicarmos isso a todos os conjuntos de dados, eu vou apenas pegar este índice aleatório de uma revisão e salvar isso fora e também imprimir isso. Então vamos ver como isso se parece. Então o que vamos fazer é imprimir todos eles Spacey reconhecer a partir dele, bem
como o personagem que começou no texto para que personagem terminou também. Podemos ver que este comentários falando sobre alguma habilidade que significa ler através de que se você quiser. Mas as coisas que a SPAC reconheceu fora daqui, somos valores numéricos, então 1 e 2, é
isso que o cardeal quer dizer. E reconheceu a Amazon como uma organização de 100 graus como uma quantidade e os seguradores de silicone como FAC. Não sei bem o que FAC significa, mas vamos para o espaço. Ele é documentação e ver todas as entidades que ele será capaz de reconhecer. E então podemos descobrir o que FAC significa. Fac parece que a partir do espaço Ele documentação é um edifício, aeroporto, rodovia ou ponte. Agora, se voltarmos aos nossos dados, veremos que os seguradores de silicone definitivamente não são a estrada ou a ponte. Parece que é o nome do produto ou o tipo de produto potencialmente. Então, é interessante que o espaço ele reconheceu isso, mas isso é o que você vai encontrar foi bases de
reconhecimento de entidades nomeadas como ele foi treinado em um conjunto específico de dados da web. E potencialmente por causa da forma como esta capitalização olha para
ele, ele pode estar pensando que é um edifício ou algo assim, mas aparentemente já viu algo nos dados antes que ele faz pensar que é um edifício. Reconheça que sempre que você estiver fazendo Reconhecimento de Entidade Nomeada, ele é baseado em modelo, então você não vai obter uma precisão de 100% que vai ser alguns erros. E notaremos isso um pouco quando começarmos a investigar os dados mais aqui e aplicarmos isso em todo o nosso espaço de conjunto de dados. Ele reconhece um monte de diferentes tipos de entidade é, na verdade, você pode geralmente pensar em entidade como um substantivo adequado, uma pessoa, lugar, ou coisa. Mas vamos dar uma olhada em todas as coisas que a espécie
reconhece para que possamos ver que eles reconhecem a pessoa. Eles te dão uma pequena descrição do que é isso? Pessoas reais e pessoas fictícias, bem como, que é interessante, Got nem bruxas, nacionalidades, grupos
religiosos ou políticos, um países GPE, cidades, estados, produtos, documentos feitos em leis. Você pode ver que há muito espaço aqui. Ele também tem uma visualização muito legal dessas entidades que ele reconhece. E eu vou te mostrar o que isso parece aqui. Basicamente, o que está fazendo é pegar esses textos que tínhamos imprimido anteriormente, o imposto total, bem como as entidades reconhecidas. E isso só está tornando mais fácil para nós lermos. É tomar sua revisão e, em seguida, destacar a entidade é que ele reconhece lá dentro. Isso pode ser útil se você estiver tentando criar algum tipo de site onde você está fazendo o Reconhecimento de Entidade Nomeada e deseja exibi-lo facilmente para o usuário. Isto é muito mais bonito do que esta impressão aqui em cima. Agora, partindo desse exemplo, queremos aplicar isso a todo o DataFrame. E a maneira que eu vou fazer isso é realmente criar um novo DataFrame apenas para porque pode
haver várias entidades que são reconhecidas dentro de uma única revisão. E quero separá-los dos outros DataFrame com os quais estamos trabalhando. Estou criando um DataFrame chamado df underscore entities. E eu tenho os seguintes índices colunas. Então isso vai coincidir se eu alguma vez quis mesclar meus resultados para o DataFrame original, pontos, qual seria a junção? Temos o doc SPAC, que essencialmente é a revisão tributada com a entidade enviada por SMS. Temos o rótulo da entidade, temos o início da entidade e a entidade. E o que eu vou fazer é percorrer meu DataFrame amostrado com o qual temos trabalhado até agora, fazendo essas tuplas internas, isso significa apenas passar por cada linha dentro do dataframe. E, em seguida, para cada linha, vamos estar olhando para o texto de revisão e
salvando todas as entidades que ele reconhece. Eu vou executar este código e, em seguida, vamos verificar as primeiras cinco ou mais linhas do DataFrame. Se você está trabalhando com um conjunto de dados muito grande, isso definitivamente vai levar algum tempo porque espaço ele tem que fazer um monte de coisas em segundo plano. Então vamos dar uma olhada em como esse DataFrame realmente se parece. Então estas são as primeiras cinco linhas. Temos o nosso texto aqui é Spacey Doc, então este tem sido um texto de revisão. Este está falando sobre comprar aquele termômetro. Então temos os textos que estão reconhecendo o que está reconhecendo como. E então, se precisássemos voltar e fazer alguma análise, ele tem o caractere inicial no texto, bem como onde esse caractere termina. E se você pode ver neste exemplo específico, pelo
menos para as cinco primeiras linhas, reconhecemos o fim de semana como um dia. Temos alguns valores numéricos como cardeais, o fim de semana novamente como um encontro. Então vamos dar uma olhada e ver quais são as entidades mais populares que você reconhece. Somos mais cardeais. Então isso são as pessoas falando sobre como 12 valores numéricos diferentes. Também temos muitas datas reconhecidas. Temos algumas organizações. Ele comprou uma obra de arte, então acho que provavelmente não são obras de arte. Então, vamos dar uma olhada em quais produtos são reconhecidos. Uma vez que estamos realmente olhando para avaliações de produtos, você poderia pensar que haveria muito. Então o que eu vou fazer é apenas subdefinir meu DataFrame ou
filtrá-lo para as linhas onde havia produtos reconhecidos. E então a autoimunidade aqui é apenas a contagem de valor para ver quantos de cada produto estamos vendo. Então vamos dar uma olhada. Temos todo o prato de sal marinho, cozinha, arte. E parece um monte de coisas que não fazem sentido. Como eu disse anteriormente, isso é baseado em modelo, então ele foi treinado em dados diferentes e não nessas revisões de produtos. Se tivéssemos dados suficientes que tínhamos anotado nós mesmos, poderíamos definitivamente treinar e modelar para potencialmente fazer um trabalho melhor em reconhecer entidades. Mas obter dados rotulados geralmente leva muito tempo ou você tem que gastar dinheiro para conseguir que alguém rotule os dados para você. Então às vezes você só tem que trabalhar com o que você
tem qualquer tipo de filtrar os resultados de lá. Então podemos mudar isso para olhar para outras entidades que ele reconheceu. Por exemplo, vamos dar uma olhada nas pessoas que eu reconheci. Eles vão estar interessados em comentários de pares estão chamando as pessoas realmente parece aqui. Mas não são pessoas que estão sendo reconhecidas. Muitas coisas que não fazem sentido aqui. Vou tentar aquela obra de arte só por diversão. Eu ficaria muito surpresa se houvesse obras de arte sendo mencionadas em avaliações de cozinha. Então é engraçado porque você pode ver onde Spacey pode ficar confuso aqui. Joy of Cooking e por Roma, bar e Becker em 1975, talvez isso seja um livro ou algo assim, mas eu sou, na verdade, eu não tenho certeza se isso é real ou não, mas você pode ver que alguns destes, como para fazer sentido onde possa ser uma obra de arte. Vamos dar uma olhada ou também e ver quais organizações foram mencionadas. Amazon, amazon.com. É definitivamente faz sentido, uma vez que estas são avaliações da Amazon que eu esperaria tamanho. Agora reparem com estes pontos, muitos destes estão a ser cortados. Então você definitivamente salvar este escritório e outros DataFrame e imprimir todo o DataFrame se você quiser obter todos os resultados aqui, sinta-se livre para passar por qualquer um de vocês e olhar através de entidades estão sendo reconhecidas e você pode ficar surpreso com o que está lá dentro.
12. Parte de tags, de fala e de análise de dependência: Parte da marcação de fala é uma maneira de identificar diferentes partes da fala para cada token. Agora, se você se lembra de volta na aula de Inglês talvez caloiro quando você teve que aprender todas as partes diferentes de frases de fala e diagrama, todas aquelas coisas divertidas que você provavelmente esqueceu de fazer. Vais ter de te lembrar quando começares a falar sobre marcação em parte do discurso. Agora, diferentes partes do discurso, básicas são como substantivos e verbos, advérbios, mas há uma tonelada de partes diferentes do discurso lá fora. E com base em onde um token está dentro de uma frase, você pode identificar qual parte do discurso é. Agora você pode estar se perguntando, por que eu precisaria saber que a parte do discurso, textos diferentes para,
bem, é muitas vezes usado nos bastidores para ser capaz de
lemmatizar tokens, bem como fazer reconhecimento de entidade nomeada. Mas um caso de uso legal é para uma tradução. Então, se pedirmos ao computador para traduzir a seguinte frase, o espanhol, você pode jogar este cânone no lixo ele. Nós provavelmente precisaríamos usar marcação de parte de fala para ser capaz de reconhecer
a primeira instância de CAN é um verbo para ser capaz de traduzir isso corretamente. E, em seguida, a segunda instância de CAN é um substantivo semelhante a parte da marcação de fala, análise de dependência. Se você vai estar fazendo isso e processamento de linguagem natural, você provavelmente vai precisar voltar para o primeiro ano de Inglês e ser capaz de lembrar quando você diagrama frases para identificar onde a raiz de uma frase é, o que o objeto substantivos é, o que o modificador é, todas essas coisas. Mas realmente o que a análise de dependência está fazendo aqui é apenas analisar a estrutura de uma frase baseada em como as palavras se relacionam umas com as outras são dependentes umas das outras. Isso é muitas vezes usado nos bastidores realmente
para a lemmatização e reconhecimento de entidades nomeadas, bem
como outras ferramentas para ser capaz de identificar as relações entre palavras ou tokens. Por último, mas não menos importante, estaremos tocando em parte da marcação de fala e análise de dependência da pessoa quando ela sair para este link que tem um monte de partes de discurso da Wikipédia. Se você precisa de uma atualização, sinta-se livre para vir aqui e dar uma olhada em Inglês, nossa língua ocidental, temos algumas dessas diferentes partes do discurso. Nome, verbo, particípio, artigo, pronome, preposição, advérbio, conjunção. Mas dependendo de qual idioma você está trabalhando, pode ser diferente para você. Então, como eu disse nos slides presentes, a marcação de
fala geralmente é usada para os bastidores para ser capaz de obter o reconhecimento de entidade nomeada para funcionar. Mas vou te dar um exemplo de onde podemos usar isso no mundo real. E primeiro, vamos ver como fazemos isso com o Spacey. Estou apenas tomando um desses exemplos de comentários com os quais trabalhamos até agora, este ID. E, em seguida, atribuindo isso à variável stock. Lá eu estou imprimindo o texto token, a parte token da fala, e a dependência Token. Então, isso também entra em análise de dependência ao mesmo tempo. E você pode ver que isso é meio difícil de ler. Estamos vendo que estes são rotulados como DET e ET. Temos coisas que são substantivos ou substantivos. Você pode percorrer toda a revisão e obter todos esses e é meio difícil de ler. Então, o espaço, ele tem uma maneira legal de visualizar sua análise de dependência e parte da marcação de fala. O que faz de nós pequena árvore, que definitivamente leva você de volta para quando você teve que diagramar frases e mostra como todos estes não-relacionados um com o outro. Então, um exemplo de onde podemos usar isso
no mundo real é contar quantos adjetivos e advérbios as pessoas estão usando em suas
avaliações da Amazon para ver como suas avaliações são descritivas. E então potencialmente podemos ver quais são
as revisões mais descritivas e quais são as menos descritivas. Então eu vou apenas pegar um documento de exemplo que temos usado ao longo deste curso e salvá-lo como DACA. E só para nos dar uma idéia de como isso pode parecer, eu só vou imprimir os tokens que são ADJ para adjetivo ou ADV para advérbio. Mas ele pode ver mais cedo se eu rolar de volta aqui, nós tínhamos uma tonelada de fichas, imprimi-lo aqui porque nós estávamos imprimindo literalmente todas as partes da fala e dependência, esse efeito espacial organizado aqui nós somos apenas limitados aos advérbios e adjetivos. Então, isso é apenas um exemplo para uma avaliação da Amazon. Mas se quiséssemos aplicar isso a todo o DataFrame, o que poderíamos fazer é apenas fazer uma função, eu estou chamando de contar advérbios, adjetivos. Ele leva em um doc SPAC, retorna um int ou a contagem dos advérbios e adjetivos. Desta forma, podemos ver quais são os textos mais descritivos. Então é como eu estou fazendo aqui é apenas configurar um contador que é igual a 0 e, em seguida, tomar esse código praticamente que nós escrevemos anteriormente, exceto em vez de imprimir, eu vou fazer é adicionar um ao contador se ele é um adjetivo ou um advérbio e, em seguida, retornar o número de adjetivos ou advérbios no texto. Então, uma vez que isso é executado, podemos usar uma função lambda como temos feito ao longo do curso para aplicar isso ao DataFrame, salvar isso fora como uma nova coluna chamada contagem adjetivos, advérbios. E então vamos realmente fazer um enredo para ver quantos adjetivos ou advérbios as pessoas geralmente estão usando em seu texto. Agora você pode ver que há, novamente, sempre haverá alguns outliers. Então, parece que o único outlier é um 125 adjetivos e advérbios. Portanto, devem ser textos realmente descritivos. E provavelmente é um texto muito longo e vamos dar uma olhada no que parece. A julgar por este gráfico, geralmente, as pessoas estão na faixa de um a 10 de adjetivos ou advérbios, que provavelmente faz sentido para o nosso conjunto de dados. E finalmente, o que podemos fazer aqui é dar uma olhada no que foi nosso outlier. Mas novamente, você poderia passar por qualquer um desses, substituir 125 diria 24, e ele vai trazer de volta todas as críticas onde havia 24 adjetivos ou advérbios, pode realmente ver que este que tinha um 125 adjetivos e advérbios era o mesmo exemplo que tínhamos anteriormente daquele que era um monte de tokens como 700 ou algo para a versão imlimpa e, em seguida, 200 para a zona de versão limpa. Geralmente, você provavelmente pensaria que à medida que o imposto fica mais longo, você teria mais e mais adjetivos e advérbios sendo usados e mais descrição do produto também. Mas você também pode testar essa hipótese sozinho. Então isso não era processamento de linguagem natural usando Python. Em poucas palavras, cobrimos algumas técnicas de pré-processamento, frequência de termo, marcação de
parte de fala com reconhecimento de entidade nomeada e análise de dependência, que era definitivamente muito para passar. E esta é apenas a ponta do iceberg para processamento de linguagem natural. Há um monte de coisas lá fora que nós realmente não cobri-lo hoje como assim, estar atento para um futuro vídeos. E esperamos que tenham gostado deste vídeo hoje. Muito obrigado por se juntar a nós e aprender sobre PNL.