Resumos de aula: PLN - 2019


Nota: Arquivo gerado por um programa.

Nome Resumo
Mauro Mascarenhas de Araujo Aula de 15/07: "Semântica e similaridade de palavras: Parte IV". A aula iniciou-se com uma breve retomada a respeito do conceito de matriz (esparsa) termo-contexto: Cada palavra é representada por um vetor cumprido (linha da matriz), mas com muitos valores nulos (esparso). Um dos problemas gerados ao utilizar a própria matriz como estrutura de armazenamento é que ela cresce de forma quadrática, proporcionalmente ao tamanho do vocabulário |V|. Foram exibidas relações de tamanho de vocabulário e o espaço que a matriz termo- documento ocupa em memória (considerando 4 bytes para armazenar um inteiro): é possível nota que, embora para vocabulários pequenos, em torno de 1580 palavras, o custo de memória é relativamente baixo, aproximadamente 9,5 MB, para vocabulários um pouco maiores, em torno de 22784 palavras, o custo sobe para aproximadamente 1.9 GB (A estimativa de custo para a língua portuguesa, com o vocabulário de aproximadamente 400000 palavras é de 596 GB). Portanto, torna-se necessário compactar a matriz para que possa-se trabalhar com ela em memória, e é aí que entra a conversão de vetores esparços para vetores densos (estruturas mais fáceis de se trabalhar em algoritmos de aprendizado de máquina). Alguns métodos para gerar vetores pequenos, porém densos, são: Reduzir o vocabulário com o auxílio de especialistas da área (para remover palavras supostamente inexpressivas ao contexto); SVD - Redução de dimensionalidade via Singular Value Definition [Técnica de álgebra linear]; Skip-gram ou CBOW, que utiliza redes neurais ou ainda Brown clustering, que agrupa as palavras baseado na vizinhança. A ideia é utilizar um vetor de menor dimensão, mas que represente o vetor maior (mantenha boa parte das características do vetor original). Algumas técnicas podem ser usadas para identificar um conjunto menor de dimensões: PCA (Análise de componentes principais); FA (Análise de fatores) e o próprio SVD. A principal ideia do PCA é identificar e definir a dimensão que mais representa um conjunto de dados, evitando ao máximo a oclusão de dados (dependendo do conjunto de dados, a oclusão é inevitável). Logo a seguir, foi sugerido um artigo "Dez dicas para redução de dimensionalidade efetiva" (Ten tips for effective dimensionality reduction), que aborda boa parte do assunto da aula. Também foram apresentadas algumas implementações de algoritmos de redução de dimensionalidade disponíveis em R e Python, normalmente disponíveis nas bibliotecas scipy e sklearn. O algoritmo efetivamente apresentado na aula foi o SVD, que é a fatoração de uma matriz M = mxn grande em três matrizes U?V*, onde U é uma matriz uniária mxm, ? é uma matriz retangular diagonal mxn com números reais não negativos na diagonal (?[i,i] são valores singulares de M), e V* é a conjugada transposta de U, uma matriz unitária nxn. Foi apresentado a técnica aplicada a uma matriz g (disponível nos slides) e sua respectiva implementação em Python, e a aplicação em processamento de imagens, onde, primeiramente, considerou-se apenas 4 valores singulares, possibilitando recuperar boa parte das características da imagem original e, depois, considerou-se apenas 10% dos valores singulares, que também representou boa parte das características originais da imagem. A ideia do SVD é considerar k <m (os k primeiros valores singulares), sendo que o resultado será bem próximo à matriz original (como no exemplo usando imagens), sendo que a ideia também pode ser aplicada à matrizes PPMI. O processo dá-se da seguinte forma: Fatora-se a matriz de dimensão wxc, escolhe-se o valor de k (no contexto de PLN, normalmente k=300), trunca-se as matrizes para que as multiplicações possam ser feitas (U, ? e V* passam a ter dimensões wxk, kxk, e kxc, respectivamente), por fim, desconsidera-se as matrizes ? e V* (por métodos empíricos, obteve-se que a abordagem considerando W*S obteve-se um desempenho pior, para o caso de PLN, quando comparado apenas ao uso de W). Para aplicar às matrizes termo, o procedimento deve ser feito da mesma forma que para PPMI, porém, para matrizes termo-documento, deve-se tomar um certo cuidado, pois, apenas a similaridade entre palavras pode ser calculada, uma vez que as referências das colunas (documentos) é perdida no momento da redução. Por fim, foram feitas algumas considerações a respeito do SVD: SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo- termo, ou matriz termo-documento; O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil); Dimensões menores nas matrizes podem tornar outros algoritmos (e.g. aprendizado de máquina) mais “simples”; Deve-se avaliar se o custo computacional de decomposição da matriz vale a pena para os fins que será utilizada. A seguir, foram feitos testes de redução de dimensionalidade (algoritmo). Também foram reapresentadas formas de mensurar a similaridade de palavras por distância do cosseno utilizando esta nova representação: o produto interno dado por dot-product(v,w)=v*w=sum(v[i]*w[i]) -> u*v=|u|*|v|*cos(?), de forma que, um valor alto representaria maior proximidade entre palavras e um valor baixo representaria menor proximidade entre palavras e a distância do cosseno dada por cos(v,w)=(v*w)/(|v|*|w|)=sum(v[i]*w[i])/((sum(v[i]^2)*(sum(w[i]^2))), onde v[i] é o valor de PPMI da palavra v no contexto i e w[i] é o valor de PPMI da palavra w no contexto i. Caso o resultado dê -1, os vetores apontam para direções opostas, caso dê 0, são ortogonais e se der 1, apresentam a mesma direção (PPMI variará entre 0 e 1).
Jair Edipo Jeronimo Seguindo com o estudo de semântica e similaridade de palavras, havíamos visto que uma matriz termo-contexo possui tamanho |V|x|V|, onde V é o vocabulário. Ela representa a contagem de palavras próximas umas às outras, onde as linhas representam vetores de palavras e a matriz é considerada esparsa devido à grande quantidade de valores nulos. Entretanto, o tamanho da matriz, dependendo do corpus, pode ser inviável para o processamento (ou até mesmo impossível). Por exemplo, se considerarmos todas as obras de Machado de Assis, temos um vocabulário de 62.933 palavras, o que teria um tamanho de armazenamento próximo a 15 GB. Dessa forma, o objetivo é tornar um vetor esparso em um vetor denso, tornando a estrutura mais fácil de ser trabalhada e diminuindo o espaço de armazenamento. Existem diversos método que podem ser utilizados para gerar vetores com menores dimensões, como por exemplo redução de dimensionalidade via Singular Value Decomposition (SVD), métodos que utilizam redes neurais como Skip-gram ou CBOW ou, até mesmo, via Brown clustering que é o agrupamento baseado na vizinhança de palavras. A ideia é reduzir o tamanho do vetor, mas ainda sim representar o vetor que foi reduzido. Uma das formas de se fazer isso é via análise dos componentes principais (PCA), onde é realizado a mudança de dimensão de um vetor analisando seus dados e verificando quais seriam os vetores ortogonais que mais se adequam aos dados, após reformular os vetores, fazemos a projeção dos dados no vetor criado, assim o novo vetor abrangeria de melhor forma os dados e reduziria a dimensão. Existem diversos métodos e otimizações para reduzir a dimensão de vetores, muitos deles possuem a implementação em bibliotecas disponíveis para uso. Outro exemplo visto em aula, é utilizar a decomposição em valores singulares (SVD), que tem como intuito reescrever uma matriz M de tamanho mxn, como o produto de três matrizes M = U?V*, onde U é uma matriz mxm unitária, ? é uma matriz diagonal de tamanho mxn com números reais positivos na diagonal, a qual possui os valores singulares de M e a matriz V* é a conjugada transposta da matriz U, de tamanho nxn. A SVD é muito utilizada para analisar sistemas multivariados e possui uma biblioteca em python chamada numpy que auxilia no processo de decomposição das matrizes. Em aula, vimos um exemplo aplicado em uma imagem, onde levamos em consideração apenas os 4 primeiros termos da matriz de valores singulares e obtivemos uma boa aproximação da imagem original. Em outro exemplo, vimos que apenas utilizando 10% dos valores singulares da matriz para reconstruir a imagem, chegamos a uma boa aproximação da imagem original. Dessa forma, dada uma matriz mxn a qual queremos reduzir utilizando apenas k valores singulares, onde k <n, temos que a matriz U será reduzida de mxn para mxk, a matriz ? de nxn, para kxk e a matriz V* de nxn para kxn, o que ao realizar o produto, nos retorna uma matriz com o tamanho exatamente equivalente ao da matriz de entrada e com seus valores bem próximos. A SVD pode ser considerada na matriz PPMI, com o intuito de reduzir a dimensão após calcular o PPMI da matriz. Além disso, para o processamento de palavras, vimos que não é necessário considerar as três matrizes resultantes do SVD, uma vez que, se na matriz original dois vetores possuíam certa similaridade, então na matriz U que possui os vetores densos, eles irão possuir a mesma similaridade, ou seja, essa propriedade não é perdida mesmo considerando apenas esta matriz. Esse método pode ser aplicado também em outras matrizes que estudamos, como a termo-termo e a termo-documento. Um exemplo de aplicação visto em aula, utilizava SVD para realizar a decomposição de uma matriz de genes, na qual a aplicação deste método facilitou a identificação de semelhanças entre os genes. Dessa forma, o uso de SVD normalmente é preferível no lugar dos outros métodos em que a matriz utilizada possuí uma grande dimensão, além de que o ruído que era gerado na similaridade entre palavras (ou documento) devido aos vetores esparsos pode ser eliminado ao considerarmos os principais valores da matriz singular, o que facilita também o uso de algoritmos de aprendizado de máquina, por exemplo, devido a redução do tamanho da matriz. Entretanto, um defeito desse método é que há um custo caro para realizar a decomposição da matriz, além de que a semântica da matriz é perdida. Após isso, vimos a aplicação de um exemplo de uma matriz esparsa de tamanho 1600x1600, a qual foi reduzida para uma matriz de tamanho 1600x300, o que tornou o seu conteúdo bem mais denso. Por fim, vimos como mensurar a similaridade de palavras utilizando a distância de cosseno na matriz formada pelo SVD. Ao realizar o produto interno entre dois vetores que representam palavras, o valor resultante representa a proximidade entre elas. Podemos considerar a distância de cosseno no caso em que os vetores representam o valore de PPMI da palavra em um contexto, assim se o valor é próximo de 1, elas tendem a apontar em direções semelhantes e quanto mais próximo de 0, os vetores tendem a ser ortogonais.
Michelle Kaori Hamada Nesta aula de “Semântica e similaridade de palavras: Parte IV”, seguimos vendo a matriz (esparsa) de termo-contexto, sua dimensão é de |V|x|V|, onde cada linha é um vetor comprido que representa uma palavra mas que contém muitos valores nulos. Contudo, a melhor estrutura para se trabalhar nos algoritmos de aprendizado máquina são vetores densos (que podem ser gerados a partir de um vetor esparso). Entre as diversas abordagens existentes para gerar vetores de dimensão pequena mas densos estão: SVD (Redução de dimensionalidade via Singular Value Decomposition); Skip-gram/CBOW (usando redes neurais); e Brown clustering (Agrupamento baseado na vizinhança de palavras). A ideia do vetor denso é utilizar um vetor de menor dimensão mas que represente o vetor maior (vetor esparso). Para identificar um conjunto menor de dimensões podemos fazer por meio de PCA (Análise de componentes principais), FA (Análise de fatores), SVD e entre outros. A metodologia PCA traça uma reta que divide a dimensão dos dados no seu maior sentido (PCA dimension 1) e então define uma reta de forma ortogonal a esta (PCA dimension 2), dessa forma podemos obter uma dimensão menor sendo |PCA dimension 1| x |PCA dimension 2|. Já via SVD (Singular Value Decomposition - Decomposição em valores singulares) é por meio de uma fatoração de uma matriz (mxn) tal que M = U ? V*, sendo U uma matriz unitária mxm, ? uma matriz retangular diagonal mxn com números reais não-negativos na diagonal ?i, i são os valores singulares de M, e V* (a conjugada transposta de U) uma matriz unitária nxn. A metodologia SDV é muito utilizada para analisar sistemas multivariadas, podemos calculá-la facilmente pela biblioteca numpy do Python. Como exemplos de utilização podemos pegar uma imagem e reconstruí-la com SVD por meio de apenas 10% dos valores singulares contidos na matriz ?. As matrizes no SVD na matriz termo-contexto estão da seguinte forma: [X]=[Wk]*[?]*[C], sendo elas da seguinte dimensão -> [|V|xc]=[|V|xk]*[kxk]*[kxc], a ideia é considerar k <m (os k primeiros valores singulares contidos em ?). Para utilizarmos o SVD na matriz PPMI, no lugar de considerar os m valores singulares podemos usar os k( <m) primeiros valores singulares. O resultado a ser obtido é bem próximo à matriz original. Nas abordagens iniciais na matriz PPMI foi considerado W*S, então deveríamos usar apenas W ou usar W*S mesmo? Em PLN, a observação feita foi que W*S tem um desempenho pior quando comparado para o uso de apenas W. Já aplicando SVD nas matrizes termo-termo temos [X]=[W]*[?]*[C] de dimensão [|V|x|V|]=[|V|x|V|]*[|V|x|V|]*[|V|x|V|] podemos reduzir as matrizes para [|V|x|V|]=[|V|xk]*[kxk]*[kx|V|]. O mesmo pode ser feito para reduzir as matrizes termo-documento, e em outros contextos em que seja necessário a redução de matrizes, um exemplo é a aplicação do SVD numa matriz genética. De forma geral, a utilização de SVD é preferível no lugar das matrizes PPMI, matriz termo-termo ou matriz termo-documento. O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando se considerarmos apenas os valores singulares principais, de forma que a versão que trunca a matriz pode vir a possuir utilidade. A utilização de outros algoritmos, como os de aprendizado máquina, podem se tornar mais simples se empregarmos matrizes de dimensões menores. Contudo, apesar dessas vantagens o custo computacional para decompormos uma matriz é caro. Foi aplicado um Teste que calcula para cada palavra do vocabulário o PPMI e aplica o SVD e a saída é analisada por meio de imagem. Com essa nova representação podemos mensurar a similaridade por distância de cosseno, ao realizarmos um produto interno entre dois vetores. Um valor alto representa maior proximidade entre palavras e o contrário menor proximidade. Por exemplo, se -1: os vetores apontam em direções opostas; se 1: vetores apontam para a mesma direção e se 0: os vetores são ortogonais. O valor do PPMI será entre 0 e 1.
Rodrigo Hiroaki Ideyama O tema da aula onze foi “Semântica e similaridade de palavras: Parte IV”. No começo, ele foi revisar o que foi dado na parte III na aula passada sobre matriz esparsa que são matrizes que possuem na grande maioria dos seus elementos formados por zeros. Nelas, podemos economizar um espaço significativo de memória se apenas os termos diferentes de zero forem armazenados. Caso não armazenar as posições que têm zeros, as operações usuais sobre essas matrizes (somar, pivotar, inverter e multiplicar) também podem ser feitas em tempo muito menor. Jesús mostrou o tamanho da matriz (sem stopwords) para cada tipo de exemplo por meio do |V| (ufabc-bcc, notícias, quatro obras do Machado de Assis, todas as obras do Machado de Assis e português). Como próximo tópico, semântica com vetores densos, ele mostrou que existem três formas de gerar esse tipo de vetor: * SVD: Redução de dimensionalidade via Singular Value Decomposition. * Skip-gram ou CBOW: usando redes neurais. * Brown clustering: agrupamento baseado na vizinhança de palavras. No primeiro, a ideia de redução de dimensionalidade é retirar subconjuntos de atributos do conjunto original de atributos, a maioria da vezes de alta dimensão, que descrevem os objetos de banco de dados que têm como finalidade representar um conjunto de dados de dimensão E em outro espaço de dimensão menor que E, procurando manter as características do conjunto original. Para conseguir identificar esse subconjunto, existem três tipos de métodos: * PCA: análise de componentes principais * FA: análise de fatores * SVD: será explicado mais para a frente O PCA (Principal Component Analysis) é um processo que representa em uma nova projeção para os dados, reduzindo a dimensionalidade do espaço. A partir de características originais, que estão correlacionadas, obtém-se um novo conjunto de características descorrelacionadas. Pode ser chamada também de transformada de Hotelling ou expansão de Karhunen-Loève. Essa técnica é muito usada pela comunidade de reconhecimento de faces e reconhecimento de padrões porque permite encontrar padrões em uma base de dados, principalmente quando os dados possuem grandes dimensões e não é possível representá-los graficamente. Após encontrado esses padrões, é possível diminuir o número de dimensões sem perder muita informação. Primeiramente, já com os dados à disposição, retira-se a média de cada dimensão, depois faz-se o cálculo da matriz de covariância que com o resultado, calcula os autovalores e autovetores para conseguir o melhor entendimento do comportamento dos dados. Após isso, faz-se a escolha das componentes e formação do vetor de características com base no conceito do quanto maior o autovalor associado, maior é a importância do autovetor (componente). Por fim, forma-se o novo conjunto de dados através da multiplicação da transposta do vetor de características gerada no passo anterior pela transposta dos dados ajustados que foi obtida quando média foi subtraída. O SVD (Singular Value Decomposition), decomposição em valores singulares, é uma fatoração de uma matriz m x n: M = UV*. * U: é uma matriz unitária m x m * : é uma matriz retangular diagonal m x n com números reais não negativos na diagonal. i,i são os valores singulares de M * V* (a conjugada transposta de U) é uma matriz unitária n x n. Esse método é muito aplicada para analisar sistemas multivariadas. No Python, na biblioteca numpy, temos como aplicá-la com ajuda do pacote da álgebra linear linalg. O professor mostrou para cada tipo de matriz (termo-contexto, PPMI, termo- termo, termo-documento, etc.) como se aplica essa técnica. SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento. O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil). Dimensões menores nas matrizes podem tornar outros algoritmos (e.g. aprendizado de máquina) mais “simples”. Porém, o custo computacional para decompor uma matriz é caro. Avalie se o custo vale a pena. Para finalizar a aula, ele falou sobre a medição de similaridade por distância cosseno usando uma nova representação, dizendo que podemos utilizar a expressão do produto interno entre dois vetores para realizar a medida de similaridade. Por meio do resultado disso, conseguimos concluir que quando o valor é alto representa maior a proximidade entre palavras e quando o valor é baixo representa menor a proximidade entre palavras. Na fórmula dela tem-se o cosseno, por isso se chama distância cosseno, que diz que uma grande similaridade é quando o cosseno é próximo de um, enquanto que cosseno próximo de menos um indica que os vetores não tem boa similaridade.
Igor Neres Trindade Na aula de hoje, 15/07/2019, continuamos a estudar sobre semântica e similaridade de palavras. Vimos, nas aulas anteriores, diferentes abordagens para determinar essa similaridade: usando um tesauro, usando uma matriz termo- documento e, por último, usando uma matriz termo-contexto. Passamos da representação como um índice do vocabulário para a representação da palavra como vetor. Tal representação nos fornece mais informação sobre a palavras, mas possui a desvantagem da má utilização dos recursos alocados, uma vez que essas matrizes podem ser esparsas. Hoje, aprendemos um pouco mais sobre como atacar esse problema. Uma otimização na construção de nossas matrizes é fundamental. Uma matriz termo-contexto, por exemplo, cresce de forma quadrática em relação ao tamanho do vocabulário. Mesmo sem stopwords, torna-se custoso a análise de algumas corpora, como é o caso de todas as obras de Machado de Assis, que necessitaria uma memória de 15 GB. A?em de remover stopwords, poderíamos filtrar as palavras por frequência. Para isso, seria necessário sempre consultar um especialista para os termos apropriados que devemos filtrar, o que diminui a independência do algoritmo e aumenta a necessidade de atualização. Ora, a linguagem muda muito com o tempo! Uma alternativa muda boa é a redução da dimensão da matriz, obtendo-se um vetor denso. E existem muitos métodos para isso, seja usando redes neurais (Skip-gram), fazendo um agrupamento baseado em vizinhança de palavras (Brown Clustering) ou fazendo uma série de operações de álgebra linear, que é a ideia por trás da redução de dimensionalidade via Singular Value Decomposition (SVD): decompõe-se nossa matriz, que é muito grande, em uma multiplicação de matrizes e utiliza-se a parte mais importante dessa multiplicação. Mais especificamente reduz-se uma matriz M de tamanho m x n à multiplicação de três matrizes, sendo a primeira uma matriz unitária de tamanho m x m, a segunda uma matriz retangular diagonal de tamanho m x n, com número reais não- negativos na diagonal, e a terceira uma matriz que é a conjugada transposta da primeira e, consequentemente, unitária. Essa segunda matriz possui uma característica interessante. Ela é uma matriz diagonal, cujos elementos na diagonal são os valores singulares ordenados de maior para menor. Se utilizarmos o SVD para analisar uma foto em tons de cinza, pixel por pixel, atribuindo 0 para ausência de cor e 1 para cor branca, teremos como valores singulares um gradiente ordenado! Mudaria muita coisa se desconsiderássemos algumas dessas cores? Poderíamos utilizar uma parte dessa matriz e economizar um pouco de memória, talvez? De fato, é isso que ocorre e pode ser utilizado para compressão de fotos. Uma imagem pode ser reconstruída com apenas 10% dos valores singulares. Naturalmente, perde-se qualidade, mas é uma aproximação muito boa. Formalizemos melhor, então, esse conceito. Lembremos que essa segunda matriz e é uma matriz m x m. Ao considerar somente os k primeiros valores singulares, seja k <m, e obter uma uma matriz r x r, precisamos truncar as outras duas matrizes: a primeira, de tamanho m x m, possui as k últimas colunas desconsideradas, ficando com tamanho m x r, e a segunda, de tamanho n x n, possui as últimas k linhas desconsideradas, ficando com tamanho r x n. É necessário truncar todas as matrizes, pois queremos saber o resultado da multiplicação, que será um valor aproximado! Podemos usar isso na matriz PPMI, termo-documento ou termo-contexto e, por consequência, muito daquele espaço ocupado por valores nulos é reduzido. Mas tudo tem seu lado negativo e infelizmente, o custo computacional para fazer todo esse procedimento é alto e devemos avaliar se o custo vale a pena. Por fim, devemos lembrar que esse processo só faz uma redução e que, posteriormente, devemos aplicar medidas de similaridades. Entre algumas medidas, há a distância cosseno e o produto interno entre dois vetores
Pedro Ricardo Bronze Se o vocabulário é pequeno as ferramentas apresentada até agora é suficiente. Entretanto em se tratando de maiores vocabulários e escopos maiores estas ferramentas já começam a apresentar limitações. Uma forma de mitigar este problema é realizar uma redução de vetor esparso para um vetor denso. Uma forma já conhecida de fazer isso é via decomposição matricial, exemplos de métodos são SVD, Skip-gram ou CBOW e Brown clustering. O método de Principal Component Analysis (PCA) grosso modo tenta definir vetores ortonormais de acordo com o eixo cuja variabilidade é maior. Uma outra forma de entender é que, no geral, a redução de dimensionalidade é tentar diminuir a 'conflituosidade', enquanto se cria representações de menor dimensionalidade. Já existem diversas implementações de métodos de redução de dimensionalidade tanto para Python (numpy,scipy e sklearn) quanto para R em diversas bibliotecas. Highlight para uma das implementações em R que tem o nome 'vegan::Procrustes' que faria uma alusão a uma dieta vegana, com o mínimo necessário para se manter um ser humano de acordo com os autores e o Problema ortogonal de Procrustes que por sua vez se remete ao bandido da mitologia grega que ao oferecer a cama a um visitante desavisado submetia-o a ser esticado ou amputado para que se dimensionasse ao tamanho da cama (alerta par ao fato que este sociopata caprichoso tinha duas camas de tamanhos diferentes então nunca era o caso de alguém caber na cama que ele oferecia). Voltando a NLP: Em SVD a ideia é decompor uma matriz em uma produtória de 3 matrizes de características específicas, a primeira uma matriz unitária, a segunda é uma matriz retangular diagonal de números reais não negativos, a terceira é a conjugada da transposta de U que é uma matriz unitária. Podemos reduzir a dimensão das matrizes preservando suas características de forma aproximada. Inclusive é assim que podemos reduzir o tamanho de imagens mantendo o mínimo necessário para o fim que definirmos. Empiricamente, chegou-se a conclusão que após realizar a decomposição considerar a primeira das três matrizes geradas (W) era melhor do que usar as duas primeiras (W*S). Sendo assim uma das formas mais compactas para medir distância entre palavras, o trade-off entretanto seria a perda de semântica. Dito isso, é importante ressaltas que o custo computacional da decomposição de matrizes é elevado e isso deve ser considerado quando se formula um projeto. A similaridade entre cossenos é outra forma de medir distância entre palavras em diferentes contextos. Um claro exemplo é dado em se tratando dos contextos dados por "data" e "large"; as palavras 'information' e 'digital' no exemplo considerado em sala tem considerável componente no contexto de "data", ou seja, estão presentes geralmente neste contexto. Embora se fôssemos calcular distância ponto a ponto ao adicionar a palavra 'apricot', a palavra 'digital' estaria mais próxima dela. Porém quando analisamos o cosseno entre cada um dos vetores 'information' e 'digital' estão claramente mais próximos com um ângulo mais agudo entre si.
Eracton Ferreira Ramalho Nesta aula 11 entramos na parte quatro do tema semântica e similaridade de palavras. Mais especificamente vamos falar de semântica com vetores densos. Para iniciar vimos uma pequena revisão das matrizes esparsas e vimos à representação de uma palavra por um vetor com vários valores nulos. Tinha uma matriz onde podíamos ver a relação do vocabulário com o tamanho necessário (usando 4 bytes para armazenar um inteiro) para armazenar. Analise com as matérias do BCC na ufabc, obras do Machado, noticias e todo o idioma português. Podemos transformar um vetor esparso em um vetor denso, que como o próprio nome sugere deixa ele mais compacto, reduzido. Isso é útil para trabalhar com um pouco mais de facilidade com os algoritmos de aprendizagem de maquina. Existem alguns métodos ou abordagens para gerar vetores de dimensão pequena mas denso. Que são: SVD, Skip-gram ou CBOW e Brown clustering. O primeiro é uma redução de dimensionalidade via Singular Value Decomposition, o segundo usando redes neurais e o terceiro, utilizando agrupamento baseado na vizinhança de palavras. A ideia para fazer esses vetores ficarem densos é pegar a menor dimensão que represente o vetor maior. Agora, como identificar um conjunto menor de dimensões? Com PCA (analise de componentes principais), FA (analise de fatores) e SVD (decomposição em valores singulares). O PCA funciona com traçar duas retas que possam indicar onde estão todos os pontos com valores e depois disso, eles são colocados na mesma direção, o ultimo passo seria agrupa-los. Isso pode ser muito bem visto graficamente olhando o slide 9. Já o SVD é uma fatoração de uma matriz (mxn): m=U?V*. Sendo U uma matriz unitária mxm. O ? é uma matriz retangular diagonal m×n com números reais não negativos na diagonal. ?i,i são os valores singulares de M. Por fim, V* (a conjugada transposta de U) e uma matriz unitária n×n. Essa forma é muito utilizada para analisar sistemas multivariadas. O slide 16 mostra uma implementação importante que deve ser observada. O SVD pode ser usado na matriz PPMI e também nas matrizes termo-termo. O SVD geralmente e preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento. O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil). Por fim, quanto maiores as dimensões nas matrizes, mais complexo e custoso computacionalmente é o processo. No slide 34 pode ser vista uma implementação que é útil para o aprendizado e precisa ser testada. O ultimo assunto foi mensurar a similaridade por distância cosseno usando essa nova representação. O produto interno entre dois vetores pode ser considerado uma medida de similaridade. Sendo que um valor alto representaria maior proximidade entre palavras, e um valor baixo, o contrário. Os últimos três slides mostram bem o que precisa ser assimilado sobre o que foi dito acima da distância do cosseno.
Leonardo Nascimento Uma matriz termo-contexto costuma ser esparsa porque cada palavra é representada por um vetor comprido composto por muitos valores nulos, e o problema com essa abordagem é justamente o tamanho da matriz. Com um corpus pequeno, como o de um conjunto de disciplinas do Bacharelado em Ciência da Computação da UFABC, os 0.035 MB ocupados pela matriz é irrisório para os computadores de hoje. Todavia, para corpora maiores, como o de todas as obras de Machado de Assis e todo o idioma Português incluindo as formas verbais, o tamanho da matriz termo-contexto é por volta de 15 GB e 596 GB, respectivamente. Assim, é necessário o uso de métodos para reduzir a dimensionalidade da matriz, com o benefício de que vetores densos são estruturas mais adequadas para os algoritmos de aprendizado de máquina. Existem várias abordagens para gerar vetores densos e de dimensão pequena, como a Singular Value Decomposition (SVD), Skip-gram ou CBOW, que fazem uso de redes neurais, e Brown clustering, onde se faz o agrupamento na vizinhança de palavras. A ideia é utilizar um vetor de menor dimensão que representa o vetor maior, e a identificação de um conjunto menor de dimensões pode ser feito a partir da Análise de Componentes Principais (PCA), Análise de Fatores (FA) ou SVD. Foram apresentados alguns scripts usando o método SVD, uma técnica muito utilizada para analisar sistemas multivariados, onde o método nada mais é do que a fatoração M = U?V* de uma matriz m×n, onde U é uma matriz unitária m×m, ? é uma matriz retangular diagonal m×n com números reais não-negativos na diagonal, e V*, a conjugada transposta de U, é uma matriz unitária n×n. Essa técnica possui resultados excelentes em processamento de imagem, onde a compressão com perdas não é um problema, e uma imagem pode ser reconstruída com apenas 10% dos valores singulares. Usando SVD na matriz PPMI, em vez de considerar uma matriz m×m, com os m valores singulares, podemos usar os k primeiros valores singulares, onde k < m, e o resultado seria bem próximo ao da matriz original. Uma curiosidade é que nas abordagens iniciais foi considerado o produto das matrizes U e ?, mas foi observado que o desempenho é pior para o caso de Processamento de Linguagem Natural se comparado com o uso apenas da matriz U. Geralmente é preferível SVD no lugar das matrizes PPMI, pois o que podemos chamar de ruído de similaridade entre palavras pode ser reduzido quando consideramos apenas os principais valores singulares, e dimensões menores nas matrizes podem tornar outros algoritmos, como os de aprendizado de máquina, mais fáceis de serem aplicados. Porém, o custo computacional para decompor uma matriz é alto, e isso deve ser avaliado em cada caso. Mensurando a similaridade por distância de cosseno usando essa nova representação também pode ser feita. Nesta medida, um valor alto representaria maior proximidade entre palavras e um valor baixo o contrário.
Renato de Avila Lopes Resumo 11 Semântica e similaridade entre palavras Parte 4 Matriz esparsa termo contexto Cada palavra é representada por um vetor com muitos valores nulos Tamanho da matriz sem stopwords supondo 4 bytes para armazenar um inteiro Ementas UFABC BCC 96 palavras 0.035MB Todas obras de Machado 62 933 palavras ~ 15 GB Idioma português ~400 000 palavras ~ 596 GB Semântica com vetores densos Vetor denso é uma estrutura mais fácil de trabalhar nos algoritmos de aprendizado de máquina Abordagens para gerar vetores densos com dimensão pequena SVD Redução da dimensionalidade via Singular Value Decomposition Skip-gram ou CBOW Utiliza redes neurais Brown clustering Agrupamento baseado na vizinhança de palavras Vetor de menor dimensão que representa o vetor maior Identificar conjunto menor de dimensões PCA (Análise de componentes principais) FA Análise de fatores SVD Semântica com vetores densos (Singular Value Decomposition) Fatoração de uma matriz M x N - M = U ? V* U matriz unitária M x M ? matriz retangular diagonal M x N com números reais não negativos na diagonal ?i, i são valores singulares de M V* (conjugada transposta de U) matriz unitária N x N Muito utilizada para analisar sistemas multivariados Com a biblioteca numpy do python é possível calcular o SVD com o comando numpy.linalg.svg(g) onde g é uma matriz Como exemplo foi utilizada uma imagem reconstruída utilizando apenas 10% dos valores singulares SVD no matriz termo contexto As colunas são ortogonais A ideia é considerar os k primeiros valores singulares (maiores) O resultado seria bem próximo à matriz original, como foi visto na aproximação com imagens SVD na matriz PPMI Mesma ideia pode ser considerada Usar apenas W? Ou W * S? Nas abordagens iniciais foi considerado W * S Mas observou-se um desempenho pior para PLN Pode se utilizar SVD também nas matrizes termo termo e termo documento Em outros contextos como analisar genes SVD geralmente é preferível no lugar de matrizes PPMI ou termo termo, ou termo documento Pode se eliminar o ruído de similaridade de palavras quando se considera apenas os valores singulares (versão que trunca pode ser útil) Dimensões menores - algoritmos mais simples Porém, custo computacional para decompor uma matriz é caro Teste Foi utilizado um programa em python para demonstrar a utilização do SVD Como resultado tivemos uma matriz esparsa (onde a cor preta indicava valores nulos) e sua transformação em uma matriz densa de dimensão menor (com poucos valores nulos) Mensurando similaridade por distância de Cosseno usando essa nova representação dot-product (v, w) = v . w = Somatória viwi = v1w1 + v2w2 + ... + vnwn Produto interno entre dois vetores pode ser considerado medida de similaridade desta forma: valor alto maior proximidade, valor baixo menor proximidade entre palavras Vetores apontam em direções opostas -1 Vetores apontam na mesma direção +1 Vetores ortogonais 0 PPMI terá valores entre 0 e +1 Exemplo ângulos apricot large 2 data 0 digital large 0 data 1 information large 1 data 6
Amanda Cruz Francesconi Semântica e similaridade de palavras (parte IV). Das últimas aulas: matriz esparsa ou termo-contexto funciona bem para um vocabulário até determinado tamanho, para escopos muitos grandes, como por exemplo todas as obras do escritor Machado de Assis, é necessária outra abordagem uma vez que o espaço que essa matriz ocupa em gigabites é demasiado para um processador convencional. Uma alternativa é utilizar a semântica de vetores densos, a ideia é reduzir o vocabulário analisado através de métodos como SVD (singular value decomposition), Skip-gram (ou CBOW), Borwn cluestering, PCA. Esse último busca uma projeção em uma dimensão dos dados com a menor oclusão possível. Em 20 de junho foi publicado um artigo com dez dicas efetivas para redução de dimensionalidade mostrando que é um assunto ainda em discussão. O SVD consiste em decompor a matriz, utilizando álgebra linear, representando-a através de uma multiplicação de três matrizes, por sua vez essas matrizes tem características essenciais: sendo a amtriz A mxn, a primeira (U - mxm) deve ser uma matriz unitária , a segunda (sigma - mxn) é uma matriz retangular diagonal com números reais não negativos na diagonal e a terceira (V - nxn) é a conjugada transposta de U, ou seja, também uma matriz unitária. O pacote numpy em phyton já realiza esse procedimento com o comando "linalg.svd(g)", sendo g a matriz e retorna a decomposição da matriz em U, sigma e V. Para reduzir a dimensionalidade basta considerar menos valores singulares, assim obtem-se uma matriz bem próxima a original, utilizado principalmente em processamento de imagens. Um ponto importante é que uma vez feito esse processo de reduzir a dimensionalidade não é possível retornar ao original, fazendo esse método não ser possível de ser utilizado com dados por exemplo, em que não é viável perder informação. Entretanto para o contexto de similaridade de palavras é viável considerar somente os k primeiros termos da matriz. Após estudos foi concluído que utilizando a técnica de embedding é obtido o melhor desempenho, ou seja, utilizar somente os k primeiros termos da matriz U e desconsiderar sigma e V em comparação com a técnica de truncation que consiste em utilizar os k primeiros termos de V e multiplicar com a matriz sigma com k elementos. Uma das grandes vantagens de realizar a fatoração é a retirada de ruído, assim a versão truncada por ser mais útil que a matriz original. Entretando é preciso considerar o grande custo computacional para decompor uma matriz, mesmo que isso sendo executado somente uma vez. Isso torna o SDV uma técnica preferível no lugar das matrizes PPMI ou matriz termo- termo. Um dos exemplos de utilização dessa técnica é para identificação de similaridade entre genes. Mensurando similaridade por distância utilizando coseno entre dois vetores, um valor alto representa maior similaridade entre as palavras e um valor baixo menor similaridade entre elas podendo variar entre -1 e 1.
Matheus de Araujo Vargas Na aula de Processamento de Linguagem Natural do dia 15 de Julho do professor Jesus P. Mena foram aprofundados os conceitos de semântica e similaridade de palavras. As matrizes termo-contexto, apresentadas na aula passada, podem algumas vezes ser esparsas. Em uma matriz esparsa, cada palavra é representada por um longo vetor, mas com muitos valores nulos. Porém, utilizar vetores muito longos pode tornar o processo mais difícil. Sendo assim, foram apresentadas técnicas para transformar um vetor esparso em um vetor mais denso, que é uma estrutura mais “fácil” de trabalhar nos algoritmos. A ideia principal é utilizar um vetor de menor dimensão, mas que represente o vetor maior. Podemos identificar, dentro de um vetor, vetores de menores dimensões através de algumas técnicas. Existem vários métodos (abordagens) para gerar vetores de dimensão pequena (mas densos). Dentre elas, podemos citar: \- SVD: redução de dimensionalidade via Singular Value Decomposition; - Skip-gram ou CBOW: usando redes neurais; \- Brown clustering: agrupamento baseado na vizinhança de palavras; \- PCA: análise de componentes principais; \- FA: análise de fatores. O PCA (Principal Component Analysis) considera as componentes (dimensões) que contém mais informação em um vetor e desconsidera o restante, reduzindo a dimensionalidade desse vetor. O SVD (Singular Value Decomposition) realiza uma decomposição em valores singulares. É uma fatoração de uma matriz (mxn): M = U?V*, onde U é uma matriz unitária m×m, ? é uma matriz retangular diagonal m×n (com números reais não- negativos na diagonal) e V* (a conjugada transposta de U) é uma matriz unitária n×n. O SVD é muito utilizado para analisar sistemas multivariados. Para se utilizar o SVD em matrizes termo-contexto, a ideia é considerar um k <m, onde k são os primeiros valores singulares. No lugar de considerar os m valores singulares podemos usar os k ( <m) primeiros valores singulares. O resultado seria bem próximo à matriz original. A mesma ideia pode ser considerada na matriz PPMI. O SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento. O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil). Dimensões menores nas matrizes podem tornar outros algoritmos (e.g. aprendizado de máquina) mais “simples”. Porém, o custo computacional para decompor uma matriz é caro. Uma outra medida de similaridade apresentada foi o produto interno entre dois vetores. Esta medida pode ser considerado como medida de similaridade, onde um valor alto representaria maior proximidade entre palavras e um valor baixo representaria menor proximidade entre palavras. A distância cosseno também pode ser usada como medida de similaridade entre vetores, utilizando o amgulo entre esses vetores para definir a medida. Diversos exemplos de aplicação foram apresentados na linguagemde programação Python.
Ricardo Gomes Nesta aula foi abordada a quarta parte sobre similaridade de palavras. A matriz (esparsa) termo-contexto é uma forma de armazenar palavras em uma matriz quadrada do vocabulário, onde cada palavra é um vetor nessa matriz, composto em sua maioria por valores nulos. É notável que o vetor possui poucas informações relevantes perto de seu tamanho, que também implica em um armazenamento maior. O armazenamento necessário para guardar uma matriz desse tipo cresce para quase 600GB em vocabulários com 400 mil palavras. A fim de resolver ambos os problemas, armazenando informações relevantes em um vetor mais denso, é necessário uma redução na dimensionalidade do vetor esparso. Alguns métodos para gerar esse vetor denso são o SVD (Single Value Decomposition), o Skip-gram, ou CBOW, que utilizam redes neurais nesse processo, e Brown clustering, que realiza um agrupamento baseado na vizinhança. Algumas técnicas para reduzir a dimensionalidade e gerar um vetor menor que represente o maior incluem a PCA (Análise de Componentes Principais), a FA (Análise de Fatores) e o SVD. No caso da PCA, esta técnica reduz a dimensão dos dados através de uma normalização que resulte em um uma dimensão menor onde a menor quantidade de dados se sobreponha. Já no caso do SVD, essa é uma técnica baseada em fatoração de matrizes. A matriz original M de tamanho mxn será igual a multiplicação entre uma matriz unitária U mxm, uma matriz retangular diagonal mxn com números reais não negativos em sua diagonal, onde os valores na diagonal são valores singulares de M, e uma matriz unitária V nxn, que é a conjugada transposta de U. Essa técnica é bastante utilizada para analisar sistemas multivariados. Em um exemplo utilizando o SVD em imagens, é possível perceber a reconstrução destas apenas com 10\% dos valores singulares. No caso da matriz termo-contexto, a matriz U possuiria |V|xm, onde |V| é o vocabulário e m é o rank das palavras (número de linhas independentes). Com isso, é possível aplicar esta técnica com a matriz PPMI e considerar apenas os k primeiros valores singulares. Todo o processo seria a aplicação da SVD, em seguida o truncamento das matrizes pela PPMI e por fim a consideração apenas da matriz U. O resultado seria bem próximo à matriz original. A utilização apenas da matriz U oferece também o melhor desempenho. O SVD é preferível no lugar das matrizes PPMI ou matriz termo- termo, ou matriz termo-documento, onde resultado tende a ser melhor já que este processo consegue remover ruídos ao considerar apenas os principais valores singulares. O menor tamanho do vetor também ajuda a tornar algoritmos mais simples de serem executados, porém sua obtenção (decomposição de matriz) pode ser muito complexa.
Matheus Tulio Pereira da Cruz Matriz esparsa : termo-contexto Contexto é o número de palavras ao redor que serão analisadas. Cada palavras é representado por um vetor mas com muitos valores nulos. Quanto maior o valor do contexto, menor o número de elementos não nulos na matriz. O problema das matrizes esparsas é que elas ocupam muito espaço de memória. Quanto maior a matriz, maior é o espaço ocupado. Isso se dá pelas muitos elementos nulos na matriz, o que não nos são muito úteis, isso acaba fazendo com que essa técnica não seja muito eficiente sem ser combinada com outras técnicas. Existem muitos métodos para gerar vetores se dimensão pequena mas densos. \- SVD: Redução de dimensionalidade via Singularidade Value Decomposition \- Skip-gram: usando redes neurais \- Brown clustering: agrupamento baseado na vizinhança de palavras A ideia é utilizar um vetor de menor dimensão que represente o vetor maior. Para identificar um vetor de menor dimensão temos técnicas como PCA, FA e SVD. PCA ( Análise de componentes principais ): tenta definir vetores ortogonais, ou seja, tenta definir uma nova base onde os pontos ficam os mais espalhados possíveis, onde a variabilidade do conjunto de dados fica maior. SVD é uma fatoração, se uma matriz (mxn): M = U£V* \- U é uma matriz unitária mxm \- É uma matriz retangular diagonal mxn com números reais não negativais na diagonal \- V* (a conjugada transposta de U) é uma matriz unitária n x n. SVD é muito utilizada para analisar sistemas multivariadas. SVD utiliza só uma pequena porcentagem dos valores singulares e com isso uma matriz de |V| x |V| acaba virando algo muito menor como |V| x 4 ou algo do tipo. No lugar de considerar os m valores singulares, a ideia é considerar k <m (os k primeiros valores singulares) O resultado seria bem próximo a matriz original. A matriz PPMI não consegue voltar a sua a sua palavra original. A fatoração de matrizes grandes é muito caro, entretanto, ela é feita só uma vez. Nas abordagens iniciais foi considerado W*S, mas foi observado que tem um desempenho pior, para o caso de PLN, quando comparado para o uso de apenas W. SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo O ruído de similaridade entre palavras (ou documentos) pode ser eliminado quando consideramos apenas os principais valores singulares.( assim, a versão que trunca a matriz pode ser útil) Dimensões menores nas matrizes podem tornar outros algoritmos mais simples. Porém, o custo computacional para decompor uma matriz é caro. É necessário avaliar se o custo vale a pena. Distância do cosseno. -1: vetores apontam em direções opostas +1: vetores apontam na mesma direção 0: vetores ortogonais PPMI terá valores entre 0 e +1
Tamiris Gabriele da Silva Lira A décima primeira aula de Processamento de Linguagem Natural teve como tema a Semântica e similaridade de palavras (parte IV) e começou, como de costume, com uma breve retomada de conceitos da aula anterior que seriam importantes para a atual. Sendo assim, as matrizes termo-contexto, isto é, matrizes que representam o número de vezes que uma palavra (linha) ocorre em conjunto com outra palavra (coluna), foram novamente exploradas, dessa vez com foco no espaço que essas matrizes ocupam. Por considerarem todas as palavras do documento, têm dimensão |V| x |V| e são esparsas, ou seja, possuem muitos valores nulos, pois muitas palavras não ocorrem em conjunto com outras. Uma matriz termo-contexto considerando todas as obras de Machado de Assis, por exemplo, ocuparia cerca de 15GB. Por isso, é necessário o uso de mecanismos que transformem vetores esparsos em vetores densos, isto é, que desconsiderem os valores nulos de forma que um vetor de menor dimensão possa representar o vetor maior. Existem diversas abordagens para a diminuição da dimensão dos vetores: SVD, Skip-gram ou CBOW, Brown clustering, PCA, etc.. Na aula foram abordadas duas com maior profundidade: PCA e SVD. A abordagem PCA usa de análise dos componentes principais para identificar um conjunto de dimensões menor. Assim, após os dados serem plotados em um gráfico de duas dimensões, uma dimensão fixa é determinada e os pontos são projetados de forma a ocuparem apenas uma dimensão. A abordagem SVD, Singular Value Decomposition, por sua vez, faz uma fatoração de uma matriz (mxn) para diminuir a dimensão do vetor. Assim, a matriz termo- contexto M é fatorada em outras três, de forma que M=U?V*, onde U representa uma matriz unitária mxm, V* é a conjugada transposta de U e tem dimensão nxn e ? é uma "é uma matriz retangular diagonal m×n com números reais não-negativos na diagonal". Essa abordagem está disponível para uso através do pacote numpy, e é muito utilizada para compressão de imagens. Ao utilizar SVD na matriz termo-contexto, consideramos os k( <m) primeiros valores singulares e o resultado é próximo à matriz original, além de eliminar o ruído de similaridade entre palavras. Apesar da fatoração das matrizes economizar o espaço necessário para armazenamento da matriz original e permitir, pela dimensão menor da matriz, que os algoritmos usados para seu processamento se tornem mais eficientes, o processo de fatoração é computacionalmente caro, o que indica que deve existir uma avaliação para determinar se ele vale a pena. O professor ilustrou essa explicação através de um programa em python e, após isso, deu uma breve explicação de como medir a similaridade por distância de Cossenos usando essa representação.
Giselle Silva de Santana Nesta décima primeira aula, do dia 15/07, abordando o tema “Semântica e similaridade de palavras: Parte IV: Semântica e vetores densos”, com exposição de alguns códigos ao longo da aula. Iniciou-se a aula com uma breve revisão do assunto da aula anterior, relembrando o conceito de matriz esparsa (termo- contexto), onde cada palavra é representada por um vetor comprido mas com muitos valores nulos. A partir disso, introduziu-se o assunto sobre vetores densos. A ideia é utilizar um vetor de menor dimensão, mas que represente o vetor maior. Existem diversos métodos para se gerar vetores de dimensão pequena, porém densa. Os principais métodos são: SVD, que reduz a dimensionalidade via Singular Value Decomposition; Skip-gram ou CBOW, que utiliza redes neurais e Brown Clustering, que realiza o agrupamento baseado na vizinhança de palavras. Além disso, existem técnicas que auxiliam a identificação de um conjunto menor de dimensões, como: PCA que realiza a análise de componentes principais; FA, que é a análise de fatores e SVD. SVD significa Singular Value Decomposition (Decomposição em valores singulares). É uma fatoração de uma matriz mxn: M = UEV*, onde U é a matriz unitária mxm, E é uma matriz retangular diagonal mxn com números reais não-negativos na diagonal e V* (a conjugada transposta de U) é uma matriz unitária nxn e é muito utilizada para analisar sistemas multivariados. Foi dado o exemplo do uso de SDV na reconstrução de uma imagem, onde a imagem foi reconstruída com apenas 10% dos valores singulares. Pode-se utilizar SVD na matriz PPMI, pois invés de se considerar os m valores singulares pode-se usar os k ( <m) primeiros valores singulares, assim o resultado seria bem mais próximo à matriz original. SVD é geralmente preferível no lugar das matrizes PPMI, matriz termo-termo ou matriz termo-documento. O ruído de similaridade entre palavras (ou documentos) pode ser eliminado quando apenas os principais valores singulares sejam considerados. Utilizar dimensões mais simples podem tornar outros algoritmos, como por exemplo, aprendizado de máquina, mais simples, porém o custo computacional para se decompor uma matriz é bastante caro, portanto deve-se avaliar se o custo vale a pena. Por fim, vimos um pouco sobre mensuração de similaridade por distância cosseno usando essa nova representação apresentada. Pode-se utilizar produto interno entre dois vetores, onde um valor alto representaria maior proximidade entre palavras e um valor baixo representaria menor proximidade entre palavras; Distância cosseno, onde -1 significa que os vetores apontam em direções opostas, +1 significa que os vetores apontam para a mesma direção e 0 significa que os vetores são ortogonais, sendo assim, PPMI terá valores entre 0 e +1.
Vinicius Narciso da Silva Foi revisto o conceito de Matriz (esparsa) de termo contexto. É uma boa abordagem, porém, para casos em que o vocabulário é muito extenso, torna-se inviável seu uso, devido a complexidade de processamento e espaço. Podemos tirar como exemplo os texto de bcc da UFABC que possui 96 palavras no vocabulário. Uma matriz esparsa para este tamanho de vocabulário ocupa menos de 1MB. Porém, se o contexto for das palavras da língua portuguesa (aproximadamente 400 mil palavras), precisaríamos de quase 600 GB para armazenar a matriz esparsa correspondente. Um dos pontos que gera essa quantidade absurda de armazenamento, é o tamanho da matriz, que é |V| x |V| (onde |V| é o tamanho do vocabulário). Mas é possível otimizar, pois a maior parte dos valores de cada linha da tabela é 0. Podemos aplicar técnicas para gerar vetores mais densos e assim diminuir o espaço de procura (e consequentemente, o tamanho ocupado pela matriz). Algumas técnicas são o SVD (redução de dimensão), CBOW (utilizando redes neurais) e Brown clustering (agrupamento baseado na vizinhança das palavras). A ideia é reduzir a dimensão da matriz, mantendo-se propriedades que ainda nos ajudem a chegar às conclusões necessárias (olhar para parte que realmente importa). Além de SVD, PCA (análise de componentes principais) é uma outra técnica, pertencente à álgebra linear, que nos permite reduzir dimensões de um determinado conjunto de dados, utilizando-se de projeções vetoriais para cada ponto. A ideia do SVD é baseada em decomposição matricial, onde são geradas 2 matrizes unitárias (uma matriz, digamos U, e outra conjugada transposta de U) e uma matriz diagonal com os valores singulares da matriz. Respeitando as regras de multiplicação de matrizes, podemos reduzir, por exemplo, a quantidade de valores singulares desejados na análise e com isso reduzimos a quantidade de colunas da matriz original, ao final das operações. Hoje existem bibliotecas em python que nos auxiliam à fazer estas operações. Alguns exemplos nos foram mostrados e em alguns casos, utilizando apenas 10% dos valores singulares, foram encontrados resultados que descreviam muito bem a base do objeto operado. Ao considerar apenas os valores singulares principais, podemos eliminar o "ruído" de similaridade de palavras, e com isso trazer resultados mais refinados. Outra vantagem é a simplificação de algoritmos. Porém, fazer a decomposição é um processo caro e deve ser avaliado sua aplicabilidade. Por fim, utilizando esta nova representação, vimos o uso da distância cosseno para mensurar a similaridade de itens (que são diretamente proporcionais). É vantajoso utilizar esse método pois ele está contido num intervalo baixo [-1; 1] e podem ser utilizados ângulos para a análise.
Joao Victor Fontinelle Consonni A décima primeira aula de PLN deu continuidade ao tema de semântica e similaridade de palavras e recapitulou o conceito de matriz termo-contexto, uma matriz esparssa na qual cada palavra é representada por um vetor cumprido, mas com muitos valores nulos. O espaço em disco necessário para armazenar tais matrizes foi estimado para vocabulários de diferentes tamanhos, de forma a evidenciar que a implementação de uma matriz termo-contexto sem a utilização de qualquer estrutura de dados mais adequada, não é escalável e fica praticamente inviável para vocabulários muito grandes. Apresentada esta problemática, fomos introduzidos à diferentes abordagens para gerar vetores densos e de dimensão pequena que representem suficientemente bem uma matriz esparsa termo-contexto. Entre eles vimos o Skip-gram e o CBOW, que utilizam redes neurais, e o Brown clustering, que faz um agrupamento baseado na vizinhança de palavras. Entretanto, o foco da aula foi o método SVD, acrônimo de Singular Value Decomposition, que consiste em fatorar uma matriz M(mxn) em uma matriz unitária U(mxm), uma matriz retangular diagonal ?(mxn) composta por números reais não negativos, e uma matriz unitária V*(nxn), que é a conjugada transposta de U. Desta forma, temos M = U?V*. Os valores da diagonal da matriz ? são chamados valores singulares de M. Esses valores são ordenados do maior pro menor, de forma que o valores da parte superior da diagonal são mais "significativos" no produto U?V* para a recuperação dos valores de M. Na maioria dos casos, considerar apenas 10% dos valores singulares mais siginificativos é suficiente para recuperar M com um certo grau de precisão. Assim, no lugar de considerar os m valores singulares, podemos considerar apenas os k( <m) primeiros valores singulares. Após aplicar o método SVD na matriz PPMI, podemos truncar as matrizes U, ? e V* para considerar apenas k valores singulares e, em seguida, utilizamos apenas o que restou de U após o truncamento para representar a matriz termo-contexto. Foi observado, empiricamente que essa aproximação tem um bom desempenho e suficiente precisão, podendo chegar a eliminar ruídos em alguns casos. A utilização do SVD é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento, por reduzir o espaço necessário para armazenar a matriz. Além disso, dimensões menores nas matrizes podem tornar outros algoritmos mais simples. Porém, o custo computacional para decompor uma matriz é caro e, portanto, a relação custo-benefício deve ser avaliada. No final da aula vimos como mensurar similaridade por distância Cosseno usando essa nova representação, assim como alguns exemplos desta aplicação.
Thiago Henrique Gomes Panini A décima primeira aula de Processamento de Linguagem Natural foi iniciada a partir da explicação do conceito de matriz esparsa, onde cada palavra é representada por um longo vetor com muitos valores nulos. A partir da apresentação de uma tabela com os tamanhos da matriz (sem stopwords), é possível notar o valor obtido com alguns dos exemplos clássicos utilizados pelo professor ao longo do curso: obras de Machado de Assis, matriz curricular do Bacharelado em Ciência e Tecnologia, entre outros exemplos. Logo em seguida, trabalhamos no conceito de Vetor esparso e vetor denso no sentido de facilitar o trabalho nos algoritmos de aprendizado de máquina. Um método extremamente conhecido para gerar vetores de dimensão pequena, porém densos, é o SVD que, por sua vez, trata da redução de dimensionalidade via Singular Value Decomposition (ou Decomposição de Valor Singular). Existem outros métodos e abordagens como Skip-gram ou CBOW (utilizando redes neurais) e Brown clustering (agrupamento baseado na vizinhança de palavras). O conceito de Redução de Dimensionalidade é extremamente importante em diversos meios. A ideia é utilizar um vetor de menor dimensão, mas que represente o vetor maior. Porém, como identificar um conjunto menor de dimensões? Existem técnicas específicas e bibliotecas prontas para realizar esse procedimento dentro do próprio sklearn do Python. Uma delas, talvez a mais conhecida é a PCA (Principal Componente Analysis) que aplica a redução de dimensionalidade baseada na análise de um componente principal. Existem técnicas e motivos para as melhores escolhas do algoritmo voltadas a estatística, como por exemplo, a escolha do sub-espaço amostral que mantém a maior variância do conjunto de dados originais quando projetados, entre outros. Uma comparação com diversos métodos de redução de dimensionalidade foi mostrada pelo professor onde foi possível observar o modo de entrada dos dados, o tipo de algoritmo, linearidade e complexidade. Em uma segunda tabela, o professor mostrou os respectivos métodos, em R e Python, para trabalhar com os algoritmos de redução de dimensionalidade. Continuando com o tema, entramos em maiores detalhes sobre o SVD (Singular Value Decomposition) e nos foi mostrado o “output” dessa decomposição. Em primeiro lugar, temos uma matriz U como sendo uma matriz unitária m x m. Temos também uma matriz sigma, sendo definida como uma matriz retangular diagonal m x n com números reais não-negativos na diagonal. Por fim, temos a matriz V* como sendo a conjugada transpostas de U unitária de dimensões n x n. O conceito de SVD é muito utilizado para analisar sistemas multivariados. Exemplos foram mostrados em aula mostrando matrizes reais e imagens reconstruídas.
Lucas Ferraz Nicolau Dando continuidade às aulas anteriores, prosseguiu-se com o tema de semântica e similaridade de palavras. Analisando a matriz termo-contexto já apresentada anteriormente, percebe-se que, como muitas palavras não estão presentes em vários documentos, o vetor relativo ao termo irá apresentar muitos valores nulos e, portanto, esta matriz será esparsa. Este é um problema pois, durante o processamento destes dados, teremos pouca informação real ocupando muito espaço em memória, o que pode tornar o uso de matrizes com vocabulários maiores inviável na prática. Para contornar este problema, podemos reduzir os vetores esparsos sa matriz para vetores densos. Um exemplo de método para isto seria a utilização de especialistas para eleger as palavras mais importantes dentro de um contexto. Nos focando em abordagens mais computacionais temos SVD, skip-gram (ou CBOW) e brown clustering. A ideia geral de representar um vetor por um vetor de dimensão menor, por sua vez, pode ser feito através de PCA, FA ou SVD. O método mais comum de PCA se trata trata da análise de componentes principais dos dados, assimilando os dados, através de métodos da álgebra linear, em seus eixos de maior variância. A aula então se focou no método de decomposição em valores singulares (SVD) que se baseia em fatorar uma matriz M (m*n) em três matrizes USV* onde: U é uma matriz unitária m*m, S é uma matriz retangular diagonal m*n com números reais não negativos na diagonal e V* é a conjugada transposta de U, sendo uma matriz unitária n*n. Com estas novas matrizes pode-se considerar apenas as k primeiras colunas de U, os k valores singulares da diagonal de S ou as k primeiras linhas de V* para recuperar a informação em uma matriz de dimensão menor, havendo pouca perda de informação que será inversamente proporcional a k. Empiricamente, sabe-se que é suficiente manter a matriz U para que a informação recuperada ainda seja interessante no contexto de PLN e, no âmbito de comparação de similaridade de palavras, este truncamento de informação pode eliminar o “ruído” de similaridade entre palavras ou documentos, selecionando os objetos mais importantes para análise. Para cálculo das distâncias, utiliza-se normalmente a distância de cossenos. Apesar deste método ser fortemente utilizado para processamento de imagens e na bioinformática fornecendo uma análise bem mais eficiente, deve-se avaliar seu custo devido o fato de que a fatoração da matriz é um processo computacionalmente caro. Vale notar que existem diversos pacotes em python para fácil implementação destas técnicas como scipy e sklearn.
Laura Cestavo Borges Dos Santos Esta aula foi a parte 4 do assunto “Semântica e similaridade de palavras”. Como vimos anteriormente, a matriz termo-contexto, onde cada palavra é representada por um vetor comprido, é uma matriz esparsa pois cada um desses vetores tem vários valores nulos. Mesmo removendo as stopwords, quanto maior o vocabulário, maior o tamanho da matriz, o que é não é viável. Para conseguir resolver esse problema de armazenamento, é preciso transformar os vetores esparsos dentro da matriz em vetores densos, eliminando os valores nulos. Existem diversas técnicas para gerar vetores de pequena dimensão e densos, algumas são SDV, onde se reduz a dimensão via Singular Value Decomposition, Skip-gram ou CBOW, onde se usa redes neurais, e Brown clustering, onde há o agrupamento baseado na vizinhança de palavras. Ao diminuir a dimensão, queremos um vetor com a dimensão menor mas ele deve representar o vetor maior. Para identificar o conjunto menor de dimensões há algumas técnicas como PCA (análise de componentes principais), FA (análise de fatores) e SVD. Na aula focamos em semântica com vetores densos via SVD. SVD significa decomposição em valores singulares. Basicamente é uma fatoração de uma matriz (mxn). Essa matriz M é dada pelo produto entre três matrizes: uma matriz unitária mxm, uma matriz retangular diagonal mxn com números reais não-negativos na diagonal e os valores na diagonal são os valores singulares de M e, por fim, a matriz conjugada transposta de U que é uma matriz unitária nxn. Essa técnica é muito utilizada para analisar sistemas multivariadas. Vemos em aula o exemplo de uma imagem e ao aplicar o SVD e só considerar os primeiros 4 valores singulares já conseguimos uma representação muito próxima da realidade. Para as matrizes termo-contexto, a ideia é considerar os k primeiros valores singulares, o resultado é bem próximo à matriz original. A mesma ideia pode ser considerada na matriz PPMI. O SVD é geralmente preferível no lugar das matrizes PPMI ou matriz termo-termo ou matriz termo-documento. Em SVD, o “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando consideramos apenas os principais valores singulares. A vantagem do SVD é que diminuir as dimensões das matrizes pode tornar outros algoritmos mais simples, porém o custo computacional para decompor uma matriz é caro, é preciso avaliar se vale a pena. Por fim, vimos sobre como mensurar similaridade por distancia cosseno, usando essa nova representação vista. Essa medida pode ser considerada uma medida de similaridade e um valor alto representa maior proximidade entre palavras e o baixo menor proximidade.
Marcelo Schirbel Gomes Aula 11 Matriz esparsa é aquela que possui poucos valores nulos. E vimos que quanto maior o tamanho do contexto, menos elementos teremos nessa matriz bidimensional. E quando limitamos o vocabulário num ambiente controlado temos uma facilidade exacerbada. Mas no mundo real, temos que tratar problemas como as stopwords, por exemplo. Isso incorre numa limitação, quando temos diversas similaridades no comparativo dos textos e principalmente, na quantidade de pessoas escrevendo documentos. Isso aumenta exponencialmente o tamanho de nossa matriz, e logo, o tempo de processamento do algoritmo. Uma das formas de tratar isso, é cultivando uma especialidade para indicar quais os termos mais apropriados a serem usados nas comparações. Mas quando mais áreas surgem, não podemos contar com diversas pessoas assim, teremos que ter uma nova abordagem. Semântica com vetores densos Cada linha na estrutura da matriz é um vetor que indica quantas vezes uma palavra aparece no contexto, e ele tem muitos valores nulos. Para rezirmos, podemos tirar os valores nulos e podemos deixar o cálculo menor. Para fazer isso, podemos usar o PCA, que é reduzir a dimensionalidade usando duas outras em produto. Nessa técnica, tentamos encontrar o eixo associada a primeira componente principal que da a maior variabilidade. E fazemos o mesmo para algum vetor ortogonal ao primeiro encontrado. Semântica com SVD SVD é uma técnica similar ao PCA. Mas na Singular Value Decomposition temos uma fatoração de uma matriz M qualquer(de preferência grande demais) em uma multiplicação de três matrizes, A, B e C. A sendo a matriz unitária (m x m) B sendo a matriz matriz retangular diagonal (m x n) com números reais não negativos na diagonal C sendo a matriz unitária (n x n) É uma técnica utilizada para analisar sistemas multivariadas. E não considerar todos os valores, mas alguns poucos que são o suficiente para trazer uma boa aproximação do valor real. E assim podemos ter uma ótima intenção da semântica e das correlações dos textos. E deve ser dito que podemos considerar somente a primeira matriz, pois o desempenho de similaridade semântica é maior que quando consideramos as duas primeiras. E uma das vantagens de fazer essa fatoração, é retirar os ruídos dos textos, pois consideramos os principais valores singulares. Mas isso vem com um custo computacional, que é o de decompor uma matriz. Distância de Cossenos Podemos calcular a diferença do cosseno entre palavras para descobrir a similaridade entre elas. Um valor alto representa uma maior proximidade e um valor baixo é a menor proximidade.
Rafael Augusto Zanatta Na aula de numero onze, vimos o tema de Semântica e similaridade de palavras: Parte IV. Matriz (esparsa): termo-contexto aqui temos que cada palavra é representada por um vetor cumprido, mas com muitos valores nulos. Temos que para vetor esparso os vetores também são densos e existem vários métodos (abordagens) para gerar vetores de dimensão pequena, mas densos. Um dos métodos utilizados é o SVD no qual fazemos redução de dimensionalidade via Singular Value Decomposition, outro método também utilizado é o método Skip- gram ou CBOW usando redes neurais ou o Brown clustering que nada mais é que um agrupamento baseado na vizinhança de palavras. A ideia é utilizar um vetor de menor dimensão, mas que represente o vetor maior. Para identificar um conjunto de menor dimensão podemos aplicar as técnicas de PCA (análise dos componentes principais) FA (análise de fatores) ou SVD. A semântica com vetores densos - via SVD. O Singular Value Decomposition (SVD) é a decomposição em valores singulares, ou seja, uma fatoração de uma matriz (mxn): M = U?V* Onde: U: é uma matriz unitária m×m ?: é uma matriz retangular diagonal m×n com números reais não-negativos na diagonal ?i,i são os valores singulares de M. V* (a conjugada transposta de U) é uma matriz unitária n×n Esse método é muito utilizado para analisar sistemas multivariados. SVD na matriz termo-contexto para isso podemos considerar k <m (os k primeiros valores singulares). Aplicando o SVD na matriz PPMI temos que no lugar de considerar os m valores singulares podemos usar os k ( <m) primeiros valores singulares com isso teríamos que o resultado seria bem próximo a matriz original como podemos ver no exemplo de aproximação utilizando as imagens. O método SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento, pois o “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil), em dimensões menores nas matrizes podem tornar outros algoritmos (e.g. aprendizado de máquina) mais “simples”, porém, o custo computacional para decompor uma matriz é caro, por isso é necessário avaliar se esse custo computacional vale a pena. Podemos também mensurar essa similaridade por distância Cosseno usando essa nova representação no qual um valor alto representaria maior proximidade entre palavras e um valor baixo representaria menor proximidade entre palavras, essa seria uma outra forma de analise para verificar.
Marcela Akemi Yamashita Por vezes a utilização de uma matrix esparsa de termo-contexto pode não ser adequada uma vez que consome muito espaço. Ex: todas as obras de Machado de Assis ocupariam cerca de 15GB. Solução: transformar vetores esparsos em vetores densos, uma estrutura mais fácil de trabalhar nos algoritmos de aprendizado de máquina. Há diferentes métodos para gerar vetores de dimensão pequena, porém densos. SVD: redução de dimensionalidade via Singular Value Decomposition. Skip-gram ow CBOW: usando redes neurais. Brown clustering: agrupamento baseado na vizinhança de palavras.A ideia é utilizar vetor de menor dimensão, mas que represente o maior vetor. Técnicas de redução de dimensionalidade: PCA - Análise de componentes principais (projeção em dimensão inferior através de projeção). FA - Análise de fatores e SVD. Há outros diversos tipos de técnicas cuja implementação é feita em pacotes em Python. SVD: fatoração da matriz (mxn) em M= U?V*. U: matriz unitária mxm. ?: matriz retangular diagonal mxn com números reais não negativos na diagonal. ?i,i são valores singulares de M. V*: conjugada transposta de U, matriz unitária nxn. Exemplos de implementação em Python e código. Sugestão: estudar álgebra linear computacional. A idéia é considerar apenas os k <m (os k primeiros valores singulares). SVD na matriz PPMI: 1) SVD: word-word PPMI Matrix (X) (dimensão wxc) = W(wxm) *?(mxm)*C(mx). 2) Truncação = W(wxk)*?(kxk)*c(kxc) (comumente k=~300). Embedding: embedding para palavra i: W(wxk). Usar apenas W ou W*S? W*S possui um desempenho pior para o caso de PLN, quando comparado com uso de apenas W. SVD geralmente é preferível no lugar das matrizes PPMI ou termo-documento. Ruído de similaridade entre palavras ou docs pode ser eliminado considerando apenas os valores singulares principais (versão que trunca matriz mais útil). Dimensões matriciais menores podem tornar outros algoritmos (como aprendizado de máquina) mais “simples”, porém custo computacional para decompor uma matriz é caro. Cada caso deve ser avaliado. Codigo de implementação em Python e aplicação. Mensurando similaridade por distância (cosseno): produto interno entre dois vetores. Medida pode ser considerada como medida de similaridade: valor alto representaria maior proximidade entre palavras e vice-versa. Distância cosseno, onde vi é o PMMI da palavra no contexto i e wi é o PPMI da palavra no contexto i. A distância é representada por um gráfico do cosseno, onde vetores -1 apontam em direções opostas e +1 apontam na mesma direção. 0 são ortogonais. PPMI terá valores entre 0 e +1.
Caique de Camargo Aula 11. Quarta parte sobre Semântica e Similaridade de palavras. Abordando o tema de matriz-contexto. que são normalmente esparsas, e seu tamanho pode ser extremamente grande quando analisados em corpus muito grandes, fazendo com que seja inviável seu uso nesses contextos, pois não vale o custo de processá-los, isso ainda quando possível. Dessa forma, são utilizados métodos que podem gerar vetores menores, mas densos, a partir de vetores esparsos. Existem diversas técnicas, como o SVD (Singular Value Decomposition), Skip-Gram ou CBOW que utilizam redes neurais e o Brown Clustering que agrupa por vizinhança. A ideia é utilizar um vetor de menor dimensão mas que represente o vetor maior. Mas como identificar um conjunto de dimensão menor? PCA - análise de componentes principais, FA - análise de fatores e SVD. Em aula foi abordado o SVD, que realiza a decomposição de vetores singulares. Em suma uma matriz é decomposta em três outras matrizes UEV, tal que a multiplicação dessas matrizes é a própria matriz de entrada, onde U é uma matriz unitária m x m, E é uma matriz retangular diagonal m×n com números reais não-negativos na diagonal (onde, na diagonal, estão os valores singulares da matriz de entrada) e V é a matriz conjugada transposta de U, também unitária e de tamanho n x n. SVD é muito utilizado para analisar sistemas multivariados, como análise de similaridade em PLN, Processamento de Imagens. Na matriz termo contexto, a ideia é utilizar os k ( <m) primeiros valores singulares, tendo um resultado bem próximo ao da matriz original. Esta mesma ideia pode ser utilizada na matriz PPMI, onde são utilizadas a primeiras k colunas de U e são descartadas as matrizes E e V. Mas porque U? Porque foi observado empiricamente que ela traz resultados melhores em comparação as outras. Também nesses testes foi descoberto que 300 é um número ótimo para k, trazendo consigo praticamente todo contexto de similaridade do corpus. Outra vantagem do SVD é que retira o ruído presente na matriz PPMI e torna alguns algoritmos mais simples. Mas o custo computacional para se decompor uma matriz pode ser caro, mas é realizado apenas uma vez. Usando essa nova representação (SVD em PPMI) podemos analisar também a distância pelo cosseno para avaliar a similaridade das palavras, sendo palavras mais similares quando mais próximas de 1, e o inverso quando mais próximas de -1.
Arthur Veloso Kamienski Matrizes termo-contexto têm dimensões iguais ao tamanho do vocabulário do corpora utilizado. Dado que o número de palavras utilizadas pode ser muito grande, matrizes deste tipo tendem a ser grandes. Por outro lado, muitas dessas palavras não ocorrem no mesmo contexto, principalmente se esse contexto é pequeno. Por consequência, matrizes termo-contexto são geralmente muito esparsas, tendo muitos valores nulos para cada palavra, com apenas alguns valores diferentes de zero. Essas matrizes têm tamanho em espaço de armazenamento proporcional ao tamanho do vocabulário, que também cresce de acordo com o tamanho do corpora. Sendo assim, matrizes podem ocupar dezenas de gigabytes de armazenamento, sendo este também um problema que deve ser considerado ao serem utilizadas. Podemos, para resolver esse problema, converter uma matriz esparsa em uma matriz densa (removendo os valores nulos e mantendo apenas os mais relevantes). Para isso existem diversas técnicas, como SVD, que reduz a dimensionalidade de matrizes, Skip-gram, que utiliza redes neurais, e Brown clustering, uma técnica de agrupamento. Para identificar o menor conjunto de dimensões que represente a maior quantidade de informações, podemos utilizar a técnica de Principal Component Analysis. Essa técnica reduz as dimensões ao fazer projeções dessas naquelas mais informativas. Outra técnica é o Singular Value Decomposition. Nesta técnica a matriz é fatorada em três matrizes seguindo M = UEV, em que M é a matriz original mxn, U é uma matriz quadrada de dimensão mxm, E é uma matriz retangular mxn com valores reais não-negativos na diagonal e V é a conjugada transposta de U, nxm. Ao alterar os S menores valores de da matriz E para 0 (estes são os valores menos importantes), podemos reduzir também a dimensionalidade de U e V, obtendo uma matriz (m-s)x(n-s) que é similar à matriz original, porém com uma perda de informação proporcional à importância dos S menores valores. Vale notar que utilizando uma pequena quantidade de valores da matriz E já é possível se obter uma matriz com pequena perda de informação. Assim, podemos tornar o processo de aprendizado em PLN mais simples ao utilizar matrizes menores. No entanto, o SVD tem o problema de ser custoso ao decompor matrizes. Por fim, a distância entre palavras sob essa nova representação pode ser feita através da distância de cossenos, que mensura a similaridade através dos ângulos dos vetores obtidos pela matriz.
Renan Baisso Dando continuidade nos estudos relacionados a Processamento de Linguagem Natural (PLN), a medida em que a análise de similaridade textual se torna maior e mais complexa, a necessidade de otimização de algoritmos e processamento para gerar um resultado, faz com que novas técnicas sejam aplicadas no processo. Uma técnica amplamente utilizada, não só na análise de documentos, é redução de dimensionalidade do dataset obtido, pois auxilia na consideração de informações relevantes para a desenvolver os resultados procurados em tempo hábil. No caso de textos/documentos, essas técnicas ajudam a alcançar melhor aproveitamento da estrutura de matrizes, pois nas análises de similaridade, seja de palavras ou de documentos, o dataset bruto é uma matriz esparsa, entretanto o que buscamos são conjuntos de vetores densos e concisos. Podemos citar algumas técnicas computacionais que já tem resultados validados, são elas SVD, PCA, FA, Skip-gram e Brown Clustering, sendo as duas últimas mais complexas por que as três primeiras, por utilizar redes neurais e contexto, respectivamente. A ideia por trás destas ferramentas é buscar um vetor de menor dimensão que representa o vetor maior inicial. Nesta aula, foram explicados apenas as técnicas de PCA e a de SVD. A primeira utiliza uma análise de tentativas que busca vetores ortogonais que descrevem as componentes que geram maior variação no espaço dos dados, estes perpendiculares são então projetados num número menor de vetores de maneira que haja a menor superposição entre os pontos do espaço vetorial, por isso o nome Principal Component Analysis. Já a segunda metodología, utiliza de fundamentos de álgebra linear para decompor a matriz inicial em uma multiplicação de matrizes, que neste caso são três, a primeira é a matriz esquerda da diagonal (U), a qual é uma matriz unitária, a matriz diagonal (S), que tem valores apenas na diagonal principal, e a matriz direita da diagonal (Ut*), a qual é a matriz transposta conjugada de U. Dado que a matriz inicial do dataset tinha dimensão wxc, as dimensões resultante da decomposição são wxm, mxm e mxc, com m menor ou igual a w e a c, para U, S e Ut* respectivamente. Mas apenas esta técnica de algelin não diminui o tamanho com relação a matriz esparsa, por isso, ainda há mais um passo, o qual fará o truncamento nas estruturas resultantes da decomposição na dimensão m, substituindo por um k
Felipe Rigo Yoshimura A última aula continuou abordando sobre o tema de semântica e similaridade entre palavras. Como foi visto anteriormente, a matriz termo-contexto tende a ser muito esparsa, contendo muitos valores nulos devido a grande quantidade de colunas. O tamanho ocupado é proporcional ao tamanho do vocabulário utilizado. O grande desafio dessa aula é como converter vetores esparsos em vetores densos, os quais seriam muito melhores de se trabalhar utilizando técnicas de aprendizado de máquina. Existem várias abordagens para gerar vetores mais densos como: SVD que usa redução de dimensionalidade, Skim-gram ou CBOW que usam redes neurais e brown clustering que agrupa palavras baseadas na sua vizinhança. Na estratégia de diminuir a dimensão do vetor utiliza-se um vetor de dimensão menor que represente o vetor maior. Alguns métodos de redução de dimensionalidade são: Análise de Componentes Principais (PCA), Análise de Fatores (FA) e Singular Value Composition (SVD). O PCA realiza transformações lineares de tal forma que os componentes principais não sejam correlacionados e os primeiros componentes armazenam a maior parte da informação. Após isso, basta fazer a projeção dos dados em uma quantidade reduzida de componentes principais, mantendo a maior parte da informação e diminuindo a dimensionalidade. O SVD é um algoritmo de fatoração de matrizes que gera: uma matriz unitária m por m (U), uma retangular m por n com números não negativos na diagonal (?) e uma conjugada da transposta de U (V*). A aplicação do SVD na matriz termo-contexto utiliza apenas os k primeiros valores singulares, os quais gerariam uma matriz com perda de informação, porém próxima da original e com uma menor dimensão. Empiricamente foi testado algumas variações, e o padrão a se utilizar é a primeira matriz parcial com dimensões m por k. O SVD geralmente é preferível no lugar das matrizes PPMI, termo-termo ou termo documento, pois o ruído de similaridade entre palavras ou documentos pode ser eliminado quando consideramos apenas os valores singulares. Essa redução de dimensionalidade pode tornar os algoritmos de aprendizado de máquina mais simples, porém computacionalmente é bem custoso esse cálculo. Mas por outro lado, ele só é realizado uma única vez. O cosseno de dois vetores pode ser utilizado como métrica de distância de similaridade, um valor alto representa uma maior proximidade entre as palavras e um valor baixo uma maior distância.
Marcelo de Souza Pena O assunto da aula 11 de PLN foi a parte 4 de semântica e similaridade de palavras. Novamente uma pequena revisão do que vimos até agora, matriz termo- contexto, vetor com cada elemento simbolizando quantos casos das outras palavras aparecem perto da palavra da linha. A matriz é esparsa (muitos zeros) e conforme o vocabulário cresce (mesmo retirando stopwords) o tamanho necessário também cresce astronomicamente, tornando inviável o uso desse tipo de matriz. Para transformar vetor esparso em um vetor denso e mais fácil de trabalhar em algoritmos de aprendizado de máquina existem várias técnicas: SVD (reduzindo a dimensão por decomposição), Skip-gram ou CBOW (usando redes neurais) e Brown Clustering (agrupamento baseado nas palavras vizinhas), todas elas com o objetivo de representar o vetor maior em um vetor de menor dimensão. Ainda existem o FA (que analisa fatores) e o PCA (analisa componentes principais), que define uma nova base considerando os pontos da forma mais espalhada possível, rotaciona em seu eixo e então projeta todos os pontos em cima dessa nova base, com o menor número de oclusões possível, de forma que dados representados em duas dimensões acabem sendo representados em uma única dimensão. Um artigo recente elencou dez dicas rápidas para uma redução dimensional efetiva, com avaliação das diferentes técnicas e pacotes disponíveis em Python para elas (usar adjetivos como “rápidas” ou “efetivas” ajuda a aumentar a visibilidade do artigo. SVD significa decomposição em valores singulares, cria outras três matrizes usando álgebra linear. Exemplo de código que pega uma imagem e faz o SVD, mostrando os resultados que ficam bastante parecidos com a original, mesmo tendo apenas 10% dos valores singulares. Ainda é possível usar apenas os k primeiros valores singulares de forma que a matriz fica ainda menor e mesmo assim bem próxima da matriz original. Também funciona para matriz PPMI. Um exemplo de aplicação é em análises de genes. O SVD é preferível no lugar de PPMI, termo-termo ou termo- documento, podendo ainda eliminar o ruído de similaridade entre palavras considerando apenas os k principais valores singulares, porém o custo computacional de decompor uma matriz é caro. Exemplo de algoritmo que reduz uma matriz PPMI de mais de 1500 colunas para apenas 300, tornando-a muito mais densa. Nesse caso usa-se distância entre cossenos para medir a similaridade.
Paula Keiko Miyashita A aula 11 tratou da parte 4 de semântica e similaridade de palavras. Como de costume, durante a primeira parte da aula foi realizada uma revisão de parte do conteúdo visto na aula anterior, neste caso foi a matriz esparsa e o espaço necessário para seu armazenamento dependendo do tamanho do vocabulário. Em matrizes esparsas, a maior parte deste espaço não contém informação, logo é desperdiçado. Começamos a ver como economizar espaço de vetores esparsos, tornando-os vetores densos. Foram citados alguns métodos para gerar os vetores de menor dimensão (mais densos): SVD (Singular Value Decomposition), Skip- gram/CBOW (usando redes neurais) e Brown Clustering (agrupamento baseado na vizinhança de palavras). Para identificar um conjunto de menor dimensão podemos utilizar PCA (Análise de componentes principais), FA (análise de fatores) e SVD. PCA busca diminuir uma dimensão dos dados por meio de projeção, escolhe-se um novo vetor base de maneira que os dados fiquem o mais espalhado possível ao serem projetados sobre este. SVD é uma decomposição de valores singulares, a fatoração de uma matriz mxn em uma matriz unitária mxm, uma mátria retangular diagonal mxn com números reais não-negativos na diagonal e a conjugada transposta da primeira matriz, com tamanho nxn. Foram apresentados exemplos da aplicação de SVD para uma matriz numérica e uma imagem em escalas de cinza, um exemplo de código em python e um exemplo de utilização de valores singulares, que introduziu a aplicação seguinte. Ao utilizar SVD, podemos cortar a segunda matriz de maneira que mantemos apenas os valores singulares, desta maneira diminuímos o espaço necessário para armazenamento mas perdemos informação. A SVD é geralmente preferível no lugar de matrizes PPMI, matrizes termo-termo e matrizes termo-documento; o ruído de similaridade entre palavras/documentos pode ser eliminado ao consideremos somente os principais valores singulares; a utilização de matrizes menores pode tornar algoritmos mais como aprendizado de máquina mais simples. Estas vantagens da utilização de SVD devem ser ponderadas com o alto custo da operação de decomposição da matriz. Para finalizar a aula, foi introduzida uma maneira de calcular similaridade por distância Cosseno ao utilizar esta nova representação. Ao calcular o produto interno entre os dois vetores, obter um valor alto indica proximidade entre palavras e um valor baixo representa menor proximidade entre palavras.
Murilo Bolzan Dionisio Semântica IV Matriz (esparsa): termo-contexto Sejam dois números m e n, naturais e não nulos, chama-se de matriz {\displaystyle m\times n}![](https://wikimedia.org/api/rest_v1/media/math/render/svg/12b23d207d23dd430b93320539abbb0bde84870d), toda tabela A, formada por números reais distribuídos em m linhas e n colunas. Os termos individuais da Matriz {\displaystyle A}![](https://wikimedia.org/api/rest_v1/media/math/render/svg/7daff47fa58cdfd29dc333def748ff5fa4c923e3) geralmente denotados por {\displaystyle A_{ij}}![](https://wikimedia.org/api/rest_v1/media/math/render/svg/8272b28f5aae6dbb8d6f829d58bab353b21bde20) onde {\displaystyle max[i]=m}![](https://wikimedia.org/api/rest_v1/media/math/render/svg/d67a3bb83e0f89f134a8489732b73766882e0dab) e {\displaystyle max[j]=n}![](https://wikimedia.org/api/rest_v1/media/math/render/svg/805bfab2b8c5242498aa7566a7156c28e557a0e7) são as entradas da matriz. Quando as matrizes têm o mesmo tamanho, ou seja, têm o mesmo número de linhas e colunas que a outra, então essas duas matrizes podem ter seus elementos somados e subtraídos 1 a 1. Para multiplicar, no entanto, deve-se prestar atenção se o número de colunas da primeira matriz é igual ao número de linhas da segunda matriz. Dessa forma, percebe-se que as matrizes não comutam, logo ({\displaystyle A*B\neq B*A}![](https://wikimedia.org/api/rest_v1/media/math/render/svg/9df19aff60aed0c2c73c11f37129bec57485dfc5)). Toda matriz pode ser multiplicada por um escalar, novamente elemento por elemento. A mais importante aplicação de matrizes é para representar transformações lineares. Uma matriz onde os valores de Aij corresponde a quantidade vezes que a palavra j aparece na vizinhança de j. Vizinhas podem alterar de tamanho, por exemplo k=3, k=7 O tamanho da vizinhança deve variar de acordo com o contexto dos textos analisados. Trabalhar com vetores densos: Como temos matrizes muito grandes com muitas células zeradas, seria mais eficiente "enxugar" os zeros mantendo a parte de maior importância da estrutura. PCA: a ideia do PCA é reduzir as dimensões para melhor análise. Para isso, podemos rotacionar os pontos de forma que uma das dimensões se torne mais visível. SVD: Decomposição em valores singulares É a fatoração de uma matriz(mxn): U€V* Basicamente é a multiplicação de A, B e C A é uma matriz unaria (m x m) B é uma matriz retangular (m x n) com números reais não negativos na diagonal C sendo a matriz unaria (n x n).
Eduardo Haberler Cardoso A décima primeira aula de PLN, ministrada no dia 15 de Julho foi a quarta e última parte do tema de semântica e similaridade de palavras. Conforme havíamos definido em aulas anteriores, numa matriz termo-contexto, cada palavra é representada por um vetor que representa uma palavra e cada elemento do vetor é a quantidade de vezes que uma outra palavra é encontrada em uma distância k/2 da palavra representada elo vetor. É trivial percebermos duas propriedades: A primeira é que esta matriz terá a característica de ser esparsa e a segunda é que quanto menor o valor de k, mais esparsa ela será. Quando nos aproximamos de aplicações reais, como por exemplo a análise de todas as obras de um auto relevante, como o Machado de Assis por exemplo, a quantidade de memória necessária para a análise desta similaridade, ultrapassa a capacidade de computadores comuns, na ordem de 15 GB. Como estas matrizes são esparsas, temos uma oportunidade de torna-las densas e aumentarmos a sua eficiência. Existem vários métodos de tornar matrizes mais densas, dentre elas, temos o Skip-Gram ou CBOW, o Brown clustering e o SVD. Com o objetivo de tornar mais prático o estudo, fizemos um aprofundamento neste último. O SVD, abreviação para singular value decomposition (Decomposição em valores singulares), é uma fatoração de uma matriz M (mxn) = U?V*, onde U é uma matriz unitária mxm; ? é uma matriz retangular diagonal mxn cmo números reais não- negativos na diagonal (?ii, são os valores singulares de M); e V* é a conjugada transposta de U, uma matriz unitária nxn. O ganho desta técnica é utilizar os valores singulares mais significativos contidos na matriz ? para obter o resultado que seja suficientemente satisfatório. em alguns casos, inclusive exemplificados em aula e disponíveis no material no site, com 10% dos valores singulares já é possível obter resultados bastantes próximos do real. Apesar do ganho de efetividade ao trabalharmos com matrizes menores, temos que levar em consideração o custo computacional para decompor uma matriz, que em geral, é alto. Pra finalizar o conteúdo de similaridade, o professor apresentou a medida de similaridade através do cosseno, onde um valor mais alto representa um maior proximidade entre palavras e um valor mais baixo representa uma menor proximidade.
Yago Sorrilha Aula 11 Matriz (esparsa): termo-contexto Em uma matriz esparsa cada palavra é representada por um vetor cumprido mas que contém muitos valores nulos. Desta forma, o tamanho da matriz, sem stopwords) acaba ficando muito grande em tamanho, que aumenta conforme o aumento do vocabulário. Semântica com vetores densos: são estruturas mais fáceis de trabalhar nos algoritmos de aprendizado de máquina e são mais reduzidos, densos, do que vetores esparsos. Existem vários métodos para gerar vetores de dimensão pequena mas densos: SVD: redução de dimensionalidade via Singular Value Decomposition Skip-gram ou CBOW: utilizando redes neurais Brown clustering: agrupamento baseado na vizinhança de palavras Como diminuir a dimensão? A ideia é utilizar um vetor de menor dimensão, mas que represente um vetor maior. Como identificar um conjunto menor de dimensões? PCA: análise de componentes principais FA: análise de fatores SVD SVD - Decomposição em valores singulares É uma fatoração de uma matriz mxn, utilizando uma matriz unitária, uma matriz retangular diagonal com números reais não-negativos na diagonal e a matriz conjugada, ou transposta da matriz unitária, nxn. Essa técnica é muito utilizada para analisar sistemas multivariados. Foi demonstrado alguns exemplos da aplicação dessa técnica, utilizando a biblioteca numpy do python para as operações com matrizes. Uma boa forma de exemplificar essa técnica é utilizando-se imagens, considerando os valores singulares. Ao demonstrar um exemplo de uma imagem original versus sua imagem reconstruída com apenas 10% dos valores singulares, conseguimos identificar que a imagem continua muito parecida, apenas com uma perda mínima de informação, nesse exemplo, na qualidade dos contornos da imagem. Além disso, foi demonstrado diversos exemplos de aplicação nas matrizes de texto, como matrizes termo contexto, termo termo e termo documento. SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento. O "ruído" de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil) Dimensões menores nas matrizes podem tornar outros algoritmos mais simples Porém, o custo computacional para decompor uma matriz é caro Mensurando similaridade por distância cosseno usando essa nova representação Demonstração de como funciona a distância cosseno de similaridade entre os vetores
Lucas Kenzo Kurokawa Matriz esparsa: Cada palavra é representada por um vetor cumprido, mas com muitos valores nulos. Uma matriz de vocabulário de tamanho 96 palavras exige um espaço de 0,035MB, já um com 400.000 palavras é necessário espaço de 596GBs. Vetores densos: estrutura mais “fácil” de trabalhar nos algoritmos de aprendizado de máquina. Para gerarmos estes vetores, existem 3 métodos: 1) SVD: Redução de dimensionalidade via Singular Value Decomposition. 2) Skip- gram ou CBOW: Usando redes neurais. 3) Brown clustering: Agrupamento baseado na vizinhança de palavras. A ideia por trás disso é usarmos vetores de menor dimensão para representar vetores de dimensões maiores. Para acharmos um conjunto menor de vetores, existem 3 meios: PCA (análise de componentes principais), FA (análise de fatores) e SVD. Singular Value Decomposition (SVD) é a decomposição em valores singulares, ou seja, é uma fatoração de matriz (MxN). É dado pela equação M = U.?V’ (sendo U uma matriz unitária MxM, ? uma matriz retangular diagonal MxN com números reais não-negativos na diagonal principal e V’ uma matriz unitária NxN (conjugada transposta de U). É muito utilizada para tarefas de processamento de imagens. Na matriz PPMI, que vimos na aula passada, ao em vez de considerarmos os M valores, podemos usar os K <m primeiros valores singulares, desta forma chegaríamos a uma matriz bem próxima à original. Nas abordagens iniciais de PPMI, considerávamos W.S, mas foi observado que é pior em comparação com apenas W. Enfim, o SVD é preferível do que matrizes PPMI, matriz termo-termo ou matriz termo-documento. Quando consideramos apenas os principais valores singulares, acabamos por consequência, reduzindo o ruído de similaridade entre as palavras. Apesar desses pontos, em matriz com menor dimensões, recomenda-se o uso de outra matriz, pois o custo computacional para decompor uma matriz é muito mais alto se comparado com algoritmos simples de aprendizado de máquina. Ao fim da aula, vimos também outro meio de mensurar similaridade por distância de cossenos. Um valor alto significa que existe uma maior proximidade entre palavras, e um menor, significaria uma menor similaridade entre as palavras. O PPMI com distância de cossenos está no intervalo entre 0 e 1. Também vimos alguns algoritmos dos tópicos citados.
Rodrigo Akiyama Abrantes Resumo Aula 11 de Processamento de Linguagem Natural Em um matriz esparsa de termo-contexto, cada palavra é representada por um vetor comprido, mas com muitos valores nulos. Em PLN, é mais vantajoso trabalhar com vetores menores e mais densos, já que sua estrutura é mais fácil de trabalhar nos algoritmos de aprendizado de máquina. Existem diversas abordagens para a geração de vetores densos e pequenos, que representem um vetor maior. Entre eles podemos destacar: O SVD, redução de dimensionalidade via Singular Value Decomposition; o Skip-gram ou CBOW, usando redes neurais e o Brown clustering, agrupamento baseado na vizinhança de palavras. O SVD nada mais é que uma fatoração de uma matrix mxn tal que M = U? V*, onde U é a matriz unitária mxn, ? é uma matriz retangular diagonal mxn com números reais não-negativos na diagonal; V* é a conjugada transposta de U. O SVD é muito utilizado para analisar sistemas de múltiplas variáveis. Desta forma, é possível que o seu resultado seja bem próximo à matriz de valores original. Prefere-se usar o SVD ao invés das matrizes PPMI, termo-termo ou termo- documento. Isto porque o ruído de similaridade entre palavras (ou documentos) pode ser eliminado ao se considerar apenas os principais valores singulares. Desta forma, a versão truncadora da matriz é útil. Matrizes com menor dimensão tornam outros algoritmos de machine learning mais “simples”. O grande problema disto é que a decomposição de uma matriz é muito custoso computacionalmente. Por vezes pode não valer a pena a decomposição de uma matriz extremamente grande, já que o tempo computacional e valores de processamentos seriam elevados demais quando comparado a outras abordagens como as citadas anteriormente. Utilizando cossenos, é possível realizar a medida de similaridade por distância. O produto interno entre dois vetores fornece um resultado que pode ser considerado como medida de similaridade. Um valor elevado representa maior proximidade entre palavras. Um valor baixo representa o oposto. Desta forma, para +1 (limite superior) os vetores apontam para a mesma direção e para -1(limite inferior) os vetores apontam em direções opostas. Para 0 os vetores são ortogonais. Em PPMI, os valores do conjunto universo variam de 0 a +1.
Jairo da Silva Freitas Junior Na aula “Semântica e similaridade de palavras: Parte IV” estudamos redução de dimensionalidade em processamento de linguagem natural. A aula iniciou-se relembrando o conceito de matriz esparsa (matriz com predominância de zeros ou nulos). Dada a alta dimensionalidade dessas matrizes, todas as obras de Machado de Assis, que formam um vocabulário com 63 mil palavras, ocupariam 15GB de memória. Analisando todo o português chegaríamos a 400 mil palavras e 596GB, o que é impraticável para o processamento. Desta forma, faz-se mais que desejável, mas necessário, reduzir a dimensionalidade das matrizes termo- contexto. Para isso desejamos converter os vetores esparsos desta matriz para vetores densos. Uma abordagem clássica para redução de dimensionalidade é a Análise de Componentes Principais (PCA), que consiste em aplicar transformações lineares nos vetores do espaço original dos dados de forma a gerar novos vetores ortogonais que maximizem a variância dos dados. Ao vetor resultante que tiver maior variância chama-se Dimensão 1 do PCA, sucessivamente. Dessa forma é possível escolher k dimensões, com k ≤ número de dimensões originais da base sem grande perda do poder de representação das amostras. Em processamento de linguagem natural também existem vários métodos que permitem alcançar este objetivo, porém o enfatizada em aula foi o Singular Value Decomposition (SVD). Esta abordagem consiste em decompor a matriz esparsa dos dados (M) em um produto de três matrizes, M=U _?_ _V, onde U (vetores singulares à esquerda) e V (vetores singulares à direita) são os autovetores de MM* e M*M, respectivamente, e ? é um vetor sigular não-nulo (ao longo da diagonal) cujos valores são as raízes dos autovalores não nulos de U e V ordenados. Para utilizar SVD para reduzir a dimensionalidade da matriz termo-documento podemos cortar ? com o tamanho k x k, onde k é o número de componentes principais que desejamos. Segundo o professor, geralmente este k gira em torno de 300. Segundo a literatura, melhor que cortar ? é cortar U em tamanho n x k (onde n é o número de linhas que o U possuía). Podemos aplicar PPMI sobre a matriz resultante e calcular métricas de distância (ex: distância de cosseno) normalmente no dado reduzido._
Gustavo Murayama A matriz esparsa de termo-contexto é representado por um vetor comprido, mas com muitos valores nulos. Há um crescimento muito grande do vetor a medida que o vocabulário aumenta. Há vários métodos para gerar um vetor de dimensão pequena, porém densa: SVD, que consiste na redução de dimensionalidade via Singular Value Decomposition, Skip-gram ou CBOW, que usa redes neurais, Brown clustering, que agrupa baseado na vizinhança de palavras, entre outros. Consiste em utilizar um vetor de menor dimensão (mais fácil de trabalhar) que represente o vetor maior. Podemos identificar um conjunto menor de dimensões através de análises de componentes principais (PCA), análise de fatores (FA) ou por SVD. Por PCA, são testados várias direções que o vetor pode apontar e comparamos para saber qual a principal componente. Quando tratamos de semântica utilizando o método de Decomposição em Valores Singulares (SVD), realizamos uma fatoração de matriz de tamanho m por n, que resulta em uma matriz unitária m x m, uma matriz retangular diagonal m x n com números reais não negativos na diagonal e a conjugada transposta de U, que é uma matriz unitária de n x n. É usualmente utilizada para analisar sistemas multivariadas. Na matriz termo-contexto, ao usar SVD, a ideia é considerar k < m (os k primeiros valores singulares). Já na matriz PPMI, ao invés de considerar os m valores singulares, podemos usar os k <m primeiros valores singulares. O resultado seria bem próximo à matriz original. No caso de PLN, quando consideramos as matrizes W*S, o desempenho foi pior do que apenas usar a matriz W. SVD é preferível no lugar de matrizes PPMI ou matriz termo-termo (ou termo-documento), pois o “ruído” de similaridade entre as palavras (ou documentos) podem ser eliminados quando consideramos os principais valores singulares. Dimensões menores nas matrizes tornam mais simples outros algoritmos, porém, em contrapartida, tem um custo computacional elevado, pois é necessário decompor uma matriz. É possível mensurar similaridade por distância Cosseno realizando o produto interno entre dois vetores. Um valor alto representaria maior proximidade entre palavras e um valor baixo representaria menor proximidade entre as palavras.
Matheus Fama Machado de Sousa Semântica e similaridade de palavras: Matriz(esparsa) termo-contexto : Cada palavra é representada por um vetor cumprido mas com muitos valores nulos. Semântica com valores densos: Transformar vetores esparsos em vetores densos, sendo assim, mais fácil de trabalhar nos algoritmos de aprendizado de máquina. Existem vários métodos (abordagens) para gerar vetores de dimensão pequena mas densos: SVD:Redução de dimensionalidade via Singular Value Decomposition. Skip-gram ou CBOW:Usando redes neurais. Brown clustering: Agrupamento baseado na vizinhança de palavras. A ideia é utilizar um vetor de menor dimensão, mas que represente o vetor maior. SVD: Singular Value Decomposition (SVD) - Decomposição em valores singulares. É uma fatoração de uma matriz (mxn): M = U?V* U: é uma matriz unitária m×m. ?: é uma matriz retangular diagonal m×n com números reais não-negativos na diagonal. ?i,i são os valores singulares de M. V* (a conjugada transposta de U) é uma matriz unitária n×n. Muito utilizada para analisar sistemas multivariadas. SVD na matriz termo-contexto: A ideia é considerar k <m (os k primeiros valores singulares) SVD na matriz PPMI No lugar de considerar os m valores singulares podemos usar os k ( <m) primeiros valores singulares.O resultado seria bem próximo à matriz original. Resumindo: SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento. O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil). Dimensões menores nas matrizes podem tornar outros algoritmos (e.g. aprendizado de máquina) mais “simples”. Porém, o custo computacional para decompor uma matriz é caro. Avalie se o custo vale a pena. Mensurando similaridade por distância Cosseno usando essa nova representação Produto interno entre dois vetores: Esta medida pode ser considerado como medida de similaridade:Um valor alto representaria maior proximidade entre palavras. Um valor baixo representaria menor proximidade entre palavras. Distância cosseno como medida de similaridade -1: Vetores apontam em direções opostas. +1: Vetores apontam à mesma direção. 0: Vetores ortogonais. PPMI terá valores entre 0 e +1.
Willian Teruya Kimura No dia 15/07, foi dada a aula cujo tema foi: “Semântica e similaridade de palavras: Parte IV”, sendo uma continuação do conteúdo passado nas últimas 3 aulas. Foi revisado o conceito referente a matriz termo-contexto, e em seguida foi apresentado o conceito de semântica com vetores densos. O vetor denso se apresenta como uma estrutura mais “simples” de se trabalhar em algoritmos de Machine Learning. Para gerar tal vetor, existem diversas maneiras de se realizar tal função, como o SVD (Redução de dimensionalidade via Singular Value Decomposition), o Skip-Gram (uso de redes neurais), ou o Brown Clustering (agrupamento com base na vizinhança de palavras.) A ideia do vetor denso tem como base reduzir o tamanho dela, porém representando o vetor maior. Para se identificar um conjunto menor de dimensões, é utilizado por meio de PCA, FA e SVD. Para SVD, ou Singular Value Decomposition, é uma fatoração de uma matriz (MxN), ou seja, M = UEV*, onde: U - é uma matriz unitária MxM E – é uma matriz retangular diagonal m×n com números reais não-negativos na diagonal V* - é uma matriz unitária n×n Ela é muito utilizada para analisar sistemas multivariados. Para exemplo prático, foi apresentado um script para checar o funcionamento do vetor SVD e suas aplicações, como o IM, onde, com base em 4 valores singulares, conseguiu gerar uma imagem com menos informação, porém com similaridade relativamente alta comparado a imagem original pretendida. Foi apresentado como o SVD é implementado no python, script a ser utilizado e estudado posteriormente, e apresentou um outro resultado de uma imagem gerada a partir de 10% dos valores singulares. Ao usar SVD na matriz PPMI, ao invés de considerar os m valores singulares, pode-se usar m valores singulares, é possível utilizar os k primeiros valores, sendo k <m, sendo seu resultado bem próximo à matriz original. Para usar o SVD, foi realizados alguns questionamentos: qual a melhor abordagem, usar apenas W, ou usar W*S? Para W*S foi observado um desempenho pior em relação ao uso de W.
Lucas Zanoni de Oliveira A aula 11 do dia 15/07 se iniciou com o conceito de matriz esparsa, ainda no termo-contexto visto na aula anterior, onde cada palavra é representada por um vetor extenso com muitos valores iguais a 0 (nulos). Posteriormente, foi apresentado o conceito de vetor denso, que traçando um comparativo ao antes citado “vetor esparso”, é uma estrutura muito mais simples de se trabalhar em relação aos algoritmos de machine learning, visto que não possui toda aquela extensão do vetor provindo de uma grande quantidade de elementos nulos, sendo composta apenas por aqueles valores não-nulos. Nessa linha, existem diversas abordagens quanto à geração de vetores de dimensões pequenas e densas, sendo: SVD (redução de dimensionalidade via Singular Value Decomposition, por meio da fatoração de uma matriz), skip- gram/CBOW (uso de redes neurais) e brown clustering (agrupamento com base nas palavras vizinhas); tendo como objetivo reduzir a dimensão de um vetor. Por outro lado, para que identifiquemos um conjunto de menor dimensões, utilizamos o já citado SVD, FA (análise de fatores) e PCA (análise de componentes principais). Feito isso, foi mostrado um exemplo gráfico de funcionamento do SVD. Outra aplicação do SVD é na matriz de PPMI (visto na aula 10), onde ao invés de considerarmos os “m” valores singulares, utilizados os k ( <m) primeiros valores singulares, fazendo com que o resultado seja bem mais próximo à matriz original. O SVD é comumente preferido a ser utilizado no lugar de matrizes PPMI ou matriz term-termo/termo-documento, sabendo que seu ruído de similaridade pode ser extinto por meio da consideração de apenas os principais valores singulares, porém tem como desvantagem que o custo computacional para decompor a matriz é alto. O último tópico apresentado foi o de mensuração da similaridade por distância cosseno, onde essa medida pode ser considerada como uma de similaridade onde um valor alto representa maior proximidade entre palavras e um valor baixo uma maior distância entre as palavras.
Rodrigo San Martin Ignacio Gomes Semântica e similaridade de palavras. Uma matriz esparsa termo-contexto indica o número de palavras observadas ao lado da matriz próxima, podendo considerar distância ou até mesmo o parágrafo. Cada termo é representado por um vetor comprido que contém muitos valores nulos. Assim, para contextos pequenos, como um texto com 96 palavras, o tamanho da matriz ocupa em torno de 0,035MB. Para as 4 obras mais conhecidas de Machado de assis, que contém 22784 palavras, a matrix ocupa aproximadamento 1.9 GB. Para a obra completa, com 62933 palavras, ocupa 15 GB. Já para todas formas verbais do português, que contém 400000 palavras, o tamanho é de 596 GB. Uma solução para esse problema é a utilização de vetores densos. Existem vários métodos ou abordagens para gerar vetores densos de dimensão pequena, como o SVD, que realiza redução de dimensionalidade via Singular Value Decomposition, ski-gram ou CBOW que utiliza redes neurais, o Brown clustering que realiza agrupamentos baseados em vizinhança de palavras. A ideia gerar um vetor de menor dimensão que represente o vetor maior. Um exemplo é a utilização de PCA, que considerando um gráfico de duas dimensões, detecta dimensões novas traçando vetores ortonormais e logo após reduz a dimensão de menor variância. Outro método é Single Value Decomposition, ou SVD, que realiza a fatoração da matrix mxN: M = UEV*, onde U é uma matriz unitária mxn, E é uma matriz retangular diagona mxn com números reais não-negativos na diagonal e V* é a conjugada transposta de U, uma matriz unitária nxn. Após esse calculo, os valores de E são ranqueados por ordem de importância ou maior valor e essa matriz é cortada em um determinado ponto. Assim, com a seleção dos valores de E mais importantes, são removidos os ruídos, além da própria redução de dimensionalidade. Como outro resultado, essas menores dimensões das matrizes podem tornar outros algoritmos como os de aprendizado de máquina mais simples.
Henrique Augusto Santos Batista Existem várias abordagens para gerar vetores de dimensão pequena mas densos SDV: Redução de Dimensionalidade via Singular Value Decomposition Skip-gram ou CBOW: Utiliza redes neurais para redimensionar os vetores Brown Clustering: Esse método utiliza o agrupamento baseado na vizinhança de palavras para a redução dos vetores A ideia desses métodos é utilizar um vetor de menos dimensão porem que ainda represente o vetor maior. Algumas formas de identificar um conjunto menor de dimensões são: PCA – Análise de componentes principais A Análise de Componentes Principais é um procedimento matemático que utiliza uma transformação ortogonal para converter um conjunto de observações de variáveis possivelmente correlacionadas num conjunto de valores de variáveis linearmente não correlacionadas chamadas de componentes principais. O número de componentes principais é sempre menor ou igual ao número de variáveis originais. O PCA é matematicamente definido como uma transformação linear ortogonal que transforma os dados para um novo sistema de coordenadas de forma que a maior variância por qualquer projeção dos dados fica ao longo da primeira coordenada, a segunda maior variância fica ao longo da segunda coordenada, e assim por diante. SVD - Singular Value Decomposition ou Decomposição em valores singulares SVD é uma fatoração de uma matriz MxN : M=U?V* Onde U é uma matriz unitária mxm ? é uma matriz retangular diagonal mxn com números reais não-negativos na diagonal, ?i,i são valores singulares de M V* (a conjugada transposta de U) é uma matriz unitária nxn É muito utilizado para analisar sistemas multivariados SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-documento. O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil). Dimensões menores nas matrizes podem tornar outros algoritmos (e.g. aprendizado de máquina) mais “simples”. Porém, o custo computacional para decompor uma matriz é caro.
Ramon Neres Teixeira Jardim No início da aula, foi revisado o conceito de matriz esparsa, que é uma matriz na qual a maior parte de suas células são nulas. A maior parte das matrizes de co-ocorrência são esparsas, principalmente quando o valor de k é baixo, ou seja, a área do contexto é pequena. O problema das matrizes esparsas é a quantidade de espaço em memória gasto para armazenar as células nulas, para exemplificar, para armazenar uma matriz termo-contexto com as obras de Machado de Assis, seriam necessários 15 GB de memória RAM. Para reduzir o uso de memória, são utilizadas algumas estratégias para diminuir a dimensão das matrizes, ou seja, transformar um vetor esparso em um vetor denso. Uma dessas estratégias é o SVD, que divide a matriz original na multiplicação de três matrizes, USV, sendo U uma matriz unitária mxm, S a matriz de valores singulares da matriz original e V a conjugada transposta de U. De fato não há um uma perda no uso de memória devido ao uso de três outras matrizes, portanto é feito um corte na matriz de valores singulares de forma a se manter um número k de elementos na diagonal (comumente 300) e obrigando que um corte seja feito também nas outras duas matrizes, perdendo parte da informação contida na matriz original, mas reduzindo drasticamente o uso de memória e mantendo consideravelmente a semântica da matriz original. A estratégia SVD também pode ser utilizada matriz PPMI, sendo possível obter um resultado muito próximo ao da matriz original. O SVD é preferível em relação as matrizes PPMI, termo-documento e ou termo- termo e ao utilizar a estratégia de truncar a matriz de valores singulares, utilizando apenas os principais valores, acaba eliminando o “ruído” de similaridade entre palavras. O uso de matrizes de dimensões menores facilita o uso de outros algoritmos, embora o processamento da decomposição das matrizes seja custoso.
Thiago Bruini Cardoso Silva A décima primeira aula da disciplina teve como foco a ampliação do tema "Semântica e similaridade de palavras" que foi explorado também nas aulas passadas. Inicialmente, foi revisado o conceito de matriz termo-contexto. Trata-se de uma matriz que associa cada palavra de um documento às palavras que localizam- se próximas a elas no texto. Chamamos essas k palavras mais próximas à frente e atrás de contexto. O problema que surge dessa abordagem é a grande quantidade de valores nulos presentes na matriz, o que leva a matrizes muito grandes e a consequente necessidade de muito espaço para armazenar essa estrutura, tornando a ideia impraticável para documentos muito grandes. Para resolver o problema de matrizes densas (ou esparsas) foram introduzidas técnicas de redução de dimensionalidade, que propõe a redução da representação de palavras de um vetor com tamanho V para um menor que V. Três exemplos de técnicas desse tipo foram citadas: Brown clustering, CBOW e SVD (que foi a explorada em aula). A técnica de SVD (Singular Value Decomposition) visa a redução de dimensionalidade pela decomposição da matriz termo-contexto em outras matrizes que são: U - Matriz unitária m X m ? - matriz retangular diagonal m X n com números reais não negativos na diagonal (valores singulares) V* - Matriz unitária n X n A ideia por trás da técnica é a utilização não de todos os valores singulares da matriz ?, mas somente dos k primeiro, de modo que a representação da matriz termo-contexto continue fazendo sentido, porém, a dimensão seja menor. Usando exemplo de aproximação de imagens, foi possível confirmar que a utilização dos primeiro valores da matriz intermediária é o suficiente para gerar outra matriz próxima da matriz termo-contexto. A utilização dessa técnica tem diversas vantagens como facilitar a aplicação de técnicas de aprendizado de máquina pela presença de matriz com menor dimensão e eliminação de ruído de similaridade de palavras.
Elsio Antunes Junior 15/07; Semântica e similaridade de palavras - Parte IV; Relembrando matriz esparsa de termo-contexto; Uma matriz de dimensão |V| x |V|, onde |V| é o tamanho do vocabulário de um dado corpus, para buscar similaridade entre palavras; nesta matriz, cada célula registra o número de co-ocorrências em um determinado contexto; Semântica com vetores densos; Existem vários métodos para gerar vetores de dimensão pequena, mais densos; SVD: Redução de dimensionalidade via Singular Value Decomposition; Skip-gram ou CBOW: Usando redes neurais; Brown clustering: Agrupamento baseado na vizinhança de palavras; A ideia é utilizar um vetor de menor dimensão, mas que represente o vetor maior; Como identificar um conjunto menor de dimensões? PCA – Principal Component Analysis; é um procedimento que utiliza ortogonalização de vetores para converter um conjunto de observações de variáveis possivelmente correlacionadas num conjunto de valores de variáveis linearmente não correlacionadas chamadas de componentes principais; FA – Análise de fatores; SVD - Decomposição em valores singulares; é uma fatoração de uma matriz mxn em três outras, a saber: a matriz unitária mxm, a retangular diagonal com numeros reais não-negativos na diagonal e a conjugada transposta da matriz unitária nxn; SVD na matriz termo-contexto; Muitos gráficos que eu não sei descrever em palavras; A ideia é considerar k <m (os k primeiros valores singulares); SVD na matriz PPMI; No lugar de considerar os m valores singulares podemos usar os k ( <m) primeiros valores singulares; O resultado seria bem próximo à matriz original (ver exemplo de aproximação usando imagens); Nas abordagens iniciais foi considerado W*S, mas foi observado que tem um desempenho pior, para o caso de PLN, quando comparado para o uso de apenas W; Mensurando similaridade por distância Cosseno usando essa nova representação; Esta medida pode ser considerado como medida de similaridade: Um valor alto representaria maior proximidade entre palavras, Um valor baixo representaria menor proximidade entre palavras;
Anderson Chaves Faria Foi apresentado o conceito de matrizes esparsas onde cada coluna representa uma palavra e cada linha um texto e temos a comparação de quantas vezes essa palavra está presente nesse texto. O grande problema é que ficam muitos "nulos" dentro dessa matriz então é melhor fazer uma transformação de um vetor esparso para um vetor denso. Dentro desse contexto foi discutida algumas estratégias para gerar tais vetores densos, entre eles o Single Value Decomposition (SVD) que apenas reduz a dimensionalidade e o brown clustering que aplica um agrupamento baseado na vizinhança de palavras. Uma das formas de fazer isso, também foi apresentada na disciplina de aprendizado de máquina que é justamente o uso do PCA para reduzir a dimensão do problema. Com ele o nosso vetor de menor dimensão representa o de maior usando a análise das componentes principais. O grande problema do PCA que foi apresentado na disciplina de aprendizado de máquina foi justamente que você perde interpretabilidade quando faz a redução de dimensão. Não lembro se isso foi mencionado em sala mas eu gostaria depois de pesquisar como essa redução de dimensão poderia afetar a interpretabilidade de um algoritmo sobre as palavras, e qual o impacto prático para a clusterização baseada em similaridade. Após isso, foi apresentado detalhes do método SVD e seu funcionamento na matriz palavra-contexto e principalmente na utilização da matriz PPMI, utilizando somente um numero k de truncamento para considerar somente as palavras mais relevantes na análise (singulares). Aumentando os termos observados das palavras para palavras * contexto, é observado que piora o desempenho. Decompor matrizes é muito custoso e tudo que fizermos para tentar truncar o tamanho dela mesmo que sacrificando um pouco de análise, pode se tornar mais útil.
Paulo Alexander Simoes O tema da aula passada foi Semântica e similaridade de palavras: Parte IV. Uma das formas de avaliar a similaridade de palavras, seria usando matrizes esparsas facilitando a correlação entre palavras, onde cada palavra é representada por vetores cumpridos mas com muitos valores nulos. Para resolver esse problema foram criados diversos métodos, tais como: SVD redução de dimensionalidade via Singular Value Decomposition; Ski-gram, Cbow usando redes neurais, e/ou brown clustering, agrupamento baseado na vizinhança de palavras. A ideia é sempre usar um vetor de menor dimensão, mas que represente o valor do maior vetor. Como identificar um conjunto menor de dimensões? PCA – Análise de componentes principais; FA – Análise de fatores; SVD(Singular Value Decomposition). Semântica com vetores densos - SVD: Decomposição em valores singulares, é uma fatoração de uma matriz M x N. Muito utilizada para estudar sistemas multivariadas. No lugar de considerar os M valores singulares podemos usar os k ( <m) primeiros valores singulares. O resultado seria bem próximo à matriz original (ver exemplo de aproximação usando imagens). Em abordagens iniciais foi considerado W*S, mas foi observado que tem um desempenho pior, para o caso de PLN, quando comparado para o uso de apenas W. O SVD é um método mais utilizado do que matrizes PPMI ou matriz termo- temro, ou matriz termo-documento. Porém o ruíudo de similaridade entre palavras(ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares( assim, a versão que trunca a matriz pode ser útil). Dimensões menores nas matrizes podem tornar outros algoritmos como de aprendizado de máquina mais "simples". Conseguimos também extrair o produto interno entre dois vetores, um valor alto representaria maior proximidade entre palavras e um valor baixo uma menor representatividade.
Mayza Cristina da Silva Semântica e similaridade de palavras: Parte IV PLN: Vetor esparso -> Vetor denso Existem vários métodos (abordagens) para gerar vetores de dimensão pequena mas densos: SVD: Redução de dimensionalidade via Singular Value Decomposition. Skip-gram ou CBOW: Usando redes neurais. Brown clustering: Agrupamento baseado na vizinhança de palavras. Sinônimos O contexto poderia ser o documento: Cada célula representa o número de vezes que duas palavras estão presentes no documento Matriz termo-contexto por que não usar um contexto menor? Por exemplo: parágrafos. Por exemplo: usar 4 palavras antes e depois de uma determinada palavra. Obras similares estão “geralmente” próximas. Palavras que estão em contextos similares, tendem a ser semantica Exemplo de contexto local de palavras: O carro é rápido? Sim, ele é muito veloz! O manuscrito é longo. SVD Singular Value Decomposition (SVD) - Decomposição em valores singulares É uma fatoração de uma matriz (mxn): U: é uma matriz unitária m×m ?: é uma matriz retangular diagonal m×n com números reais não-negativos na diagonal ?i,i são os valores singulares de M. V* (a conjugada transposta de U) é uma matriz unitária n×n SVD na matriz PPMI No lugar de considerar os m valores singulares podemos usar os k ( <m) primeiros valores singulares. O resultado seria bem próximo à matriz original (ver exemplo de aproximação usando imagens) Distância cosseno vi é o valor de PPMI da palavra v no contexto i. wi é o valor de PPMI da palavra w no contexto i. Distância cosseno como medida de similaridade -1: Vetores apontam em direções opostas. +1: Vetores apontam à mesma direção. 0: Vetores ortogonais PPMI terá valores entre 0 e +1
Denildo Veloso Braga Aula 11: semântica e similaridade de palavras (parte 4). Em uma matriz termo termo-documento esparsa, cada palavra é representada como um vetor com muitos valores nulos, considerando o armazenamento, temos o problema de alocar recurso para valores não utilizados. Já um vetor denso (com poucos valores nulos) é mais fácil de trabalhar nos algoritmos de aprendizagem de máquina. Existem alguns métodos para transformar um vetor esparso em um vetor denso, incluindo SVD (redução de dimensionalidade por singular value decomposition), skip-gram ou CNOW (usa redes neurais) ou brown clustering (agrupamento baseado na vizinhança de palavras). A ideia de diminuir a dimensão é criar um vetor menor que represente o maior. Para identificar um conjunto menor de dimensões podemos utilizar técnicas como PCA (análise dos componentes principais), FA (análise dos fatores) ou SVD. Existem implementações dessas e de outras técnicas prontas para linguagens populares em manipulação de dados, como python e R. SVD consegue gerar um resultado bem próximo da matriz termo- contexto original. SVD geralmente é preferível ao PPMI para a matriz termo- termo ou matriz termo-documento. O ruído de similaridade entre palavras, ou documentos, pode ser eliminado quando consideramos apenas os principais valores singulares. Dimensões menores nas matrizes podem tornar outros algoritmos mais simples, entretanto, decompor a matriz é computacionalmente caro, portanto, uma análise do custo é importante para avaliar a aplicação do SVD. SVD também pode ser usado em outros contextos, como compreensão de imagens, identificação de similaridade entre genes. Distância do cosseno como medida de similaridade: valores altos representam maior similaridade entre palavras ou documentos, valores baixos representam menor proximidade entre palavras ou documentos.
Rafael Pauwels de Macedo Na aula 11 entramos na quarta aula sobre semântica e similaridade de palavras e continuamos vendo um pouco sobre a matriz esparsa de termo-contexto, especificamente sobre o problema de densidade de dados, sendo um problema o tamanho de grandes bases mesmo após a remoção de stopwords. Impossibilitando ou dificultando muito a análise dessas bases maiores que a memória. As primeiras abordagens que vimos para gerar vetores pequenos (em dimensão) mas densos foram o SVD via redução de dimensionalidade via Singular Value Decomposition, Skip-gram/CBOW usando redes neurais e Brown clustering usando agrupamento baseado na vizinhaça de palavras. Devemos levar em consideração algumas técnicas diferentes quando pensamos em diminuir a dimensão de um vetor. Como o PCA, o FA e o SVD. Vimos que a maior parte dessas técnicas já estão implementadas em funções R e funções Python. Entrando mais no detalhe da SVD vimos que essa técnica é basicamente uma fatoração de uma matriz (mxn) M = UEV*, sendo U uma matriz unitária. E uma matriz retangular diagonal com números reais não-negativos na diagonal e V* a conjugada transposta de U. Sendo esse o método geralmente preferível no lugar de matrizes PPMI ou matriz termo-termo / termo-documento. Porém apesar de diminuir o ruído de similaridade entre palavras singulares e facilitar o uso de matrizes em outros algoritmos como aprendizado de máquina, o custo comutacional de decompor uma matriz é extremamente caro. É essencial avaliar o custo desse processo e ponderar se o processamento da base raw vale mais. No decorrer da aula vimos exemplos práticos em Python, usando decomposição de imagens, matrizes, matrizes usando PPMI, etc.
Tiago Suzukayama Revisando conceitos da aula anterior, uma matriz é dita esparsa quando possui uma grande quantidade de elementos que valem zero. Na matriz termo-contexto, cada palavra é representada por um vetor cumprido mas com muitos valores nulos. Existem vários métodos ou abordagens para gerar vetores de dimensão pequena mas densos, como: SVD, que é a redução de dimensionalidade via Singular Value Decomposition; Skip-gram ou CBWO, usando redes neurais; brown clustering, por agrupamento baseado na vizinhança de palavras. A ideia é sempre utilizar um vetor de menor dimensão, mas que represente o vetor maior. Mas como é possível identificar um conjunto de dados com menor dimensão? É possível através de três técnicas: PCA (análise de componentes principais), FA (análise de fatores) e SVD. O SVD (Singular Value Decomposition), é uma fatoração de uma matriz (mxn) onde M = U SOMATORIA V*, onde U é uma matriz unitária, SOMATORIA é uma matriz retangular diagonal mxn com números reais não-negativos na diagonal, e V* é uma matriz unitária nxn, e a conjugada transposta de U. Esta técnica é muito utilizada para analisar sistemas multivariados. Para utilizar o SVD na matriz PPMI, no lugar de considerar os m valores singulares podemos usar os k ( <m) primeiros valores singulares. O resultado seria bem próximo à matriz original. Esta técnica é geralmente preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo-docummento. O ruído de similaridade entre palavras pode ser eliminado quando considerarmos apenas os principais valores singulares. Dimensões menores nas matrizes podem tornar outros algoritmos mais simples, porém o custo computacional para decompor uma matriz é caro.
Matheus Dos Santos Pereira Resumo da aula 11 sobre Semântica e similaridade de palavras: Parte IV, foi mostrado uma pequena revisão sobre matriz (esparsa), a distinção entre vetor esparso e vetor denso, algoritmos densos são mais fáceis de trabalhar nos algoritmos de aprendizado de máquina. Existem vários métodos (abordagens) para gerar vetores de dimensão pequena, mas densos como, por exemplo, SVD: Redução de dimensionalidade via Singular Value Decomposition, Skip-gram ou CBOW: Usando redes neurais e o Brown clustering: Agrupamento baseado na vizinhança de palavras. A ideia é utilizar um vetor de menor dimensão, mas que represente o vetor maior. Podemos identificar usando PCA – Análise de componentes principais, ou FA – Análise de fatores, ou SVD. Foi explicado e mostrado tanto em gráficos, quando em vetores/matriz e em gráficos como funciona o SVD. Foi apresentado SVD com matriz termo contexto e com PPMI (visto na aula passada). SVD geralmente é preferível no lugar das matrizes PPMI ou matriz termo-termo, ou matriz termo documento. O “ruído” de similaridade entre palavras (ou documentos) pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versão que trunca a matriz pode ser útil). Dimensões menores nas matrizes podem tornar outros algoritmos (e.g. aprendizado de máquina) mais “simples”. Porém, o custo computacional para decompor uma matriz é caro. Depois disso foi visto que o a similaridade pode ser representada usando o produto interno entre dois vetores, que pode ser considerado como medida de similaridade, um valor alto representaria maior proximidade entre palavras e um valor baixo representaria menor proximidade entre palavras. Também pode se optar por usar o cosseno.
Estevao Crippa da Veiga As matrizes esparsas, por conterem muito elementos nulos, ocupam muito espaço. Assim é necessário utilizar outras estruturas para armazenar tais informações, como as matrizes densas, por exemplo, que são estruturas mais fáceis de trabalhar nos algoritmos de aprendizado de máquina. Existem algumas técnicas pra fazer essa transformação, como, por exemplo, SVD, Skip-Gram e Brown Clustering. Para diminuir a dimensão, podemos utilizar o PCA, que faz análise de componentes principais. A ideia consiste em pegar a maior e a menor dimensão dos dados e sobrepor os dados do menor vetor no maior a partir da sua projeção, o que diminui a dimensão dos dados. Já a SVD (Decomposição em Valores Singulares) é uma técnica que decompõe uma matriz mxn em um produto de três matrizes, U, Sigma e V*, em que U é matriz unitária mxm, é uma matriz retangular diagonal mxn com números reais não- negativos na diagonal e V* é a conjugada transposta de U, ou seja, nxn. Na matriz termo-contexto, devemos considerar apenas os k primeiros valores singulares. Já na PPMI, podemos também utilizar os k primeiros valores singular e considerar apenas algumas da matrizes resultantes da decomposição. O “ruído” de similaridade entre palavras pode ser eliminado quando considerarmos apenas os principais valores singulares, mas é importante ressaltar que o custo para decompor uma matriz é alto. Assim avaliar o custo é de extrema importância. Outra medida que pode ser utilizada para verificar similaridade de palavras é a distância Cosseno, em que um valor alto representaria maior proximidade entre palavras, enquanto um valor baixo representaria menor proximidade entre palavras
Marcio Jose de Carvalho Quando usamos matriz termo-contexto, temos vetores que representam a co- ocorrência das palavras nos contextos, o que gera vetores muito grandes e cheios de zeros, chamados esparsos. Esses vetores ocupam memória e são mais complexos de utilizar em sistemas de aprendizado de máquina, além de serem menos sensíveis em análise de similaridade, por tratar cada palavra como um vetor. Assim, é comum utilizar estratégias de adensamento, transformando esses vetores em versões menores. Vimos três métodos comuns, a saber: redução de dimensão com SVD - Single Value Decomposition; skip-grams ou CBOW, usando modelos de linguagem baseados em redes neurais; clusterização Brown, que usa vizinhança de palavras. Podemos realizar redução de dimensões com outras técnicas além de SVD, como PCA (principal component analysis) e FA(factor analysis); existem muitos outros, com diferentes sensibilidade e limitações de desempenho. SVD é muito utilizado em sistemas com múltiplas variáveis, como amplificação de sinais e reconstituição de imagens. SVD geralmente é utilizado independente das outras técnicas estudadas, como PPMI, matriz termo-termo ou termo-documento. Ao utilizarmos apenas os k primeiros termos únicos, conseguimos um resultado equivalente à matriz original, com menor custo computacional. Mesmo reduzir a matriz esparsa para uma matriz densa pode ser mais custoso e não compensar, mesmo que essas dimensões menores facilitem a utilização de algoritmos de aprendizado de máquina. Vimos ainda como mensurar similaridade por produto vetorial dos termos, usando o cosseno para normalizar, a similaridade é diretamente proporcional ao cosseno do produto vetorial dos vetores PPMI de duas palavras. A distância cosseno vai ficar então entre +1 e -1.
Iasmin de Haro Pracchias A aula do dia 11/07 também tratou de similaridade e semântica de palavras, vimos os conceitos de vetor esparso e vetor denso, sendo que o vetor esparso, assim como a matriz esparsa, é um vetor com muitos elementos zeros, enquanto que o vetor denso é o contrário disso, sendo uma estrutura mais simples de trabalhar e tratar nos algoritmos. Em PLN existem alguns métodos para transformar um vetor esparso em um vetor denso, como o SVD (Singular Value Decomposition), que é um conceito originado de Álgebra Linear e que permite fazer a redução de dimensionalidade via singular value decomposition, Skip- gram ou CBOW, que utiliza redes neurais, e Brown clustering que faz agrupamentos baseados na vizinhança das palavras. Para identificar um vetor de menor dimensão que represente um vetor maior, também podemos utilizar métodos como PCA que faz a análise das componentes principais, FA, que faz análise dos fatores principais e o próprio SVD, já comentado. Vimos alguns exemplos de algoritmos escritos em python que implementam SVD e algumas aplicações de SVD na resolução de imagens. Utilizar matrizes menores em algoritmos pode fazer com que o algoritmo fique mais simples, porém o custo computacional pode se tornar mais caro, é necessário avalar se o custo vale a pena para cada caso. Ainda vimos como mensurar similaridade por distância cosseno, que é calculada pela soma dos produtos internos dos vetores (representações das palavras), um valor alto constitui maior proximidade entre as palavras e um valor baixo constitui menor proximidade entre as palavras.
Brian Alves Andreossi Aula 10 Uma matriz esparsa é aquela que tem poucos valores relevantes (diferentes de 0). A quantidade de dados começa a ser impeditivo para a viabilidade da análise dos vocabulários dos cursos. Algumas soluções: \- Usar as palavras mais úteis: para isso é necessário que haja uma análise prévia dos termos mais apropriados. \- Redução de dimensionalidade. Uso de técnicas de Álgebra Linear Existem vários métodos (abordagens) para gerar vetores de dimensão pequena mas densos. \- SVD: Redução de dimensionalidade via Singular Value Decomposition. \- Skip-gram ou CBOW: redes neurais. \- Brown Clustering: Agrupamento baseado na vizinhança de palavras. SVD SVD permite fatorar uma matriz, representando ela em uma multiplicação de 3 outras. M = UEV\\* onde U é uma matriz unitária mxm E (Epsilon) é uma matriz retangular diagonal mxn com números reais não- negativos na diagonal V* (a conjugada transposta de U) é uma matriz unitária nxn Existe a decomposição SVD dentro do pacote numpy. É utilizado para analisar sistemas multivariados e não precisar considerar literalmente todos os valores, mas os realmente relevantes para se obter um valor interessante. Usando a primeira matriz somente o desempenho da similaridade semântica é maior que quando considerado um conjunto das outras. Geralmente é preferível em relação a PPMI ou matriz termo-termo ou matriz termo-documento. O ruído de similaridade entre palavras ou documentos pode ser eliminado quando considerarmos apenas os principais valores singulares (assim, a versçao que trunca a matriz pode ser útil). Obs: o custo computacional para decompor uma matriz é caro. Avalie a necessidade
Rodolfo Azevedo Dos Santos Semântica e similaridade de palavras (parte IV) Matriz esparsa : termo contexto linhas: vocabulário coluna: vocabulário Célula: quantidade dado um contexto (intervalo) Contexto (k): quanto maiot k mais elementis não nulos estarão na matriz |V| x |V| Corpus maiores: matrizes muito grandes (aproximadamente da ordem de gigas) Ex: Todos textos do português totalizam aproximadamente 400 mil palavras (cerca de 596 gbs) Inviável para computadores atuais Ou seja, é um problema de dimensão. Como contornar? 1) Utilizar palavras mais utilizadas (mas precisa de um especialista na área para indicar quais palavras) Problema: Precisa sempre de um especialista na área analisada Foi muito utilizado no passado Semântica com vetores densos: Vetor grande com muitos zeros, o intuito é reduzir. Para reduzir: Aplicação de álgebra linear (decomposição da matriz em multiplicação de matrizes) SVD: Decomposição por vetores singulares Existem outras: Skip Gram (utiliza Redes Neurais) e Brown-Clustering (utiliza o Corpus Brown) PCA: Define o eixo cuja a variabilidade é maior em relação a um conjunto de pontos Define um nova base. Resultado é projeção que resulta em menor conflito entre os pontos. Semântica com vetores densos: Via SVD Decomposição em vetores singulares Fatora uma matriz de matrizes M = U? V* U = Matriz unitária m x m ? = Matriz retangular diagonal m x n com números não negativos na diagonal V * = Conjugado transposta de U é a matriz unitária n x n Muito utilizado para sistemas multivariados Aplicação: Numpy.linalgsvd(g) (svd dentro de numpy) Passa a matriz que quiser seja quadrada ou não SVD na matriz termo-contexto SVD na matriz PPMI: No lugar de considerar m valores considera (k <m) Calcula SVD da matriz, trunca e utiliza os k primeiros (geralmente k=300) Fica apenas com W Sobre SVD: O “ruído” de similaridade entre palavras ou documentos pode ser eliminado quando consideramos apenas os principais valores secundários. Dimensões menores de matrizes podem tornar outros algoritmos mais simples (ex: aprendizado de máquina). O custo de decompor é caro. Utilizado usualmente como preparação de dados. Escuro representa zero e claro diferente de zero (aplicação gráfica) Produto interno entre dois vetores? Alto: maior similaridade Baixo: menor similaridade Distância de cosseno: -1 : Vetores apontam em direções opostas +1: Vetores apontam na mesma direção 0: Vetores ortogonais PPMI terá valores de 0 a +1 (saturação)


Número de resumos processados: 56.

Observação:


Arquivo gerado por um programa.