Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Classificação de textos - Dev in Sampa - 28nov2009

2,431 views

Published on

José Valim talks in portuguese about Text Classification at Dev in Sampa 2009

Published in: Technology
  • Essa apresentação de slides me ajudou muito em um trabalho de inteligência artificial. Muito obrigada por dividir esse conhecimento na web.
    Tenho uma pergunta, no algoritmo de Naive Bayes, como se faz a escolha do valor inicial e do peso inicial? (slide 62).
    Desde já agradeço novamente,
    Sheila Genesine Dada
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Classificação de textos - Dev in Sampa - 28nov2009

  1. 1. Tópicos de machine learning Classificação de textos @josevalim http://blog.plataformatec.com.br
  2. 2. Quem sou eu?
  3. 3. Mestrado na Itália com tese em classificação de textos
  4. 4. Desenvolvedor Ruby a mais de 3 anos, contribuidor ativo do Rails Core
  5. 5. Motivação
  6. 6. Nas últimas décadas, a robótica desbravou a visão computacional. O que vêm em seguida?
  7. 7. Em 2006, o Google indexou mais de 25 bilhões de documentos
  8. 8. 95% de todos os e-mails enviados são spams
  9. 9. O que é classificação de texto?
  10. 10. É a assinalação de forma automática de um documento a um pré-definido grupo de classes baseada em seu conteúdo
  11. 11. Conteúdo • Pré-processamento • Classificadores • Medidas
  12. 12. Conteúdo • Pré-processamento - Remoção de stop words - Representação - Stemming - Pesagem • Classificadores • Medidas
  13. 13. Remoção de stop words
  14. 14. Stop words são palavras em um texto desprovidas de semântica
  15. 15. Assunto: Especificações do protocolo http Eu preciso das especificações, ou pelo menos, uma interpretação verbosa das especificações do protocolo http. Artigos técnicos ou referência a livros também seriam de grande ajuda.
  16. 16. Assunto: Especificações do protocolo http Eu preciso das especificações, ou pelo menos, uma interpretação verbosa das especificações do protocolo http. Artigos técnicos ou referência a livros também seriam de grande ajuda.
  17. 17. Assunto: Especificações do protocolo http especificações protocolo http Eu preciso das especificações, preciso especificações pelo ou pelo menos, uma menos interpretação verbosa interpretação verbosa das especificações protocolo http especificações do protocolo artigos técnicos referência http. Artigos técnicos ou livros também seriam grande referência a livros também ajuda seriam de grande ajuda.
  18. 18. Representação
  19. 19. A representação mais comum é em saco de palavras (bag of words)
  20. 20. especificações protocolo http preciso especificações pelo menos interpretação verbosa especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
  21. 21. especificações protocolo http Palavra Peso preciso especificações pelo menos interpretação verbosa especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
  22. 22. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
  23. 23. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http artigos técnicos referência livros também seriam grande ajuda
  24. 24. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http interpretação 1 artigos técnicos referência livros também seriam grande ajuda
  25. 25. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http interpretação 1 artigos técnicos referência artigos 1 livros também seriam grande ajuda
  26. 26. especificações protocolo http Palavra Peso preciso especificações pelo especificações 3 menos interpretação verbosa protocolo 2 especificações protocolo http interpretação 1 artigos técnicos referência artigos 1 livros também seriam grande ajuda ajuda 1
  27. 27. Stemming
  28. 28. Stemming mapeia cada termo de um documento para sua raiz (morfológica)
  29. 29. andei, andou, andamos
  30. 30. andei, andou, andamos => andar
  31. 31. Pesagem
  32. 32. Pesagem por frequência
  33. 33. Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
  34. 34. Pesagem por TF-IDF
  35. 35. Pesagem por TF-IDF
  36. 36. Pesagem por TF-IDF
  37. 37. Pesagem por TF-IDF Term frequency
  38. 38. Pesagem por TF-IDF Term frequency Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
  39. 39. Pesagem por TF-IDF Term frequency * Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
  40. 40. Pesagem por TF-IDF Term frequency * Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
  41. 41. Pesagem por TF-IDF Inverse document Term frequency * frequency Palavra Peso especificações 3 protocolo 2 interpretação 1 artigos 1 ajuda 1
  42. 42. Pesagem por TF-IDF Inverse document Term frequency * frequency Palavra Peso especificações 3 protocolo 2 idf(tk) = log |N / df(tk)| interpretação 1 artigos 1 ajuda 1
  43. 43. Conteúdo • Pré-processamento - Remoção de stop words - Representação - Stemming - Pesagem • Classificadores • Medidas
  44. 44. Conteúdo • Pré-processamento • Classificadores - Naive bayes - k nearest neighbors - Rocchio classifier - Support vector machines • Medidas
  45. 45. Naive Bayes
  46. 46. Modelo matématico simples
  47. 47. Baseado no Teorema de Bayes
  48. 48. P(ci|dj)
  49. 49. P(ci|dj) =
  50. 50. P(ci|dj) = P(ci)
  51. 51. P(ci|dj) = P(ci) *
  52. 52. P(ci|dj) = P(ci) * P(dj|ci)
  53. 53. P(ci|dj) = P(ci) * P(dj|ci) / P(dj)
  54. 54. Exemplo: duas classes, cinco documentos de exemplo
  55. 55. Document Class Ruby is a dynamic language Language Ruby has color between pink and red Gemstone Gems is a ruby packaging system Language Ruby is one of the four precious gems Gemstone The Ruby language was born in Japan Language
  56. 56. Document Class Ruby is a dynamic language Language Ruby has color between pink and red Gemstone Gems is a ruby packaging system Language Ruby is one of the four precious gems Gemstone The Ruby language was born in Japan Language
  57. 57. Term Language Gemstone ruby 3 2 gems 1 1 dynamic 1 0 language 2 0 color 0 1 pink 0 1 red 0 1 package 1 0 precious 0 1 japan 1 0
  58. 58. (valor inicial + ocorrencias de wk em ci) P(wk|ci) = (peso do valor inicial + numero de documentos em ci)
  59. 59. (0.5 + ocorrencias de wk em ci) P(wk|ci) = (1 + numero de documentos em ci)
  60. 60. Term Language Gemstone ruby (0.5+3) / (1+3) (0.5+2) / (1+2) gems (0.5+1) / (1+3) (0.5+1) / (1+2) dynamic (0.5+1) / (1+3) (0.5+0) / (1+2) language (0.5+2) / (1+3) (0.5+0) / (1+2) color (0.5+0) / (1+3) (0.5+1) / (1+2) pink (0.5+0) / (1+3) (0.5+1) / (1+2) red (0.5+0) / (1+3) (0.5+1) / (1+2) package (0.5+1) / (1+3) (0.5+0) / (1+2) precious (0.5+0) / (1+3) (0.5+1) / (1+2) japan (0.5+1) / (1+3) (0.5+0) / (1+2)
  61. 61. Term Language Gemstone ruby 0.88 0.83 gems 0.38 0.5 dynamic 0.38 0.17 language 0.62 0.17 color 0.12 0.5 pink 0.12 0.5 red 0.12 0.5 package 0.38 0.17 precious 0.12 0.5 japan 0.38 0.17
  62. 62. A qual classe pertence o documento: “My ruby gems arrived in a pink package”
  63. 63. A qual classe pertence o documento: “My ruby gems arrived in a pink package”
  64. 64. P(language|d) = P(ci) * P(d|ci) / P(d)
  65. 65. P(language|d) = P(ci) * P(d|ci) / P(d)
  66. 66. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6
  67. 67. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6
  68. 68. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6 P(ruby|language) * P(gems|language) * P(pink|language) * P(package|language)
  69. 69. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6 P(ruby|language) * P(gems|language) * P(pink|language) * P(package|language)
  70. 70. P(language|d) = P(ci) * P(d|ci) / P(d) documentos em language / total documentos = 0.6 P(ruby|language) * P(gems|language) * P(pink|language) * P(package|language) Não importa ...
  71. 71. P(gemstone|d) = P(ci) * P(d|ci) / P(d)
  72. 72. P(gemstone|d) = P(ci) * P(d|ci) / P(d)
  73. 73. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4
  74. 74. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4
  75. 75. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4 P(ruby|gemstone) * P(gems|gemstone) * P(pink|gemstone) * P(package|gemstone)
  76. 76. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4 P(ruby|gemstone) * P(gems|gemstone) * P(pink|gemstone) * P(package|gemstone)
  77. 77. P(gemstone|d) = P(ci) * P(d|ci) / P(d) documentos em gemstone / total documentos = 0.4 P(ruby|gemstone) * P(gems|gemstone) * P(pink|gemstone) * P(package|gemstone) Não importa ...
  78. 78. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d)
  79. 79. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d)
  80. 80. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d)
  81. 81. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d) P(gemstone|d) =0.014110 / P(d)
  82. 82. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d) P(gemstone|d) =0.014110 / P(d) P(gemstone|d) > P(language|d)
  83. 83. P(language|d) = 0.6 * 0.88 * 0.38 * 0.12 * 0.38 / P(d) P(gemstone|d) = 0.4 * 0.83 * 0.5 * 0.5 * 0.17 / P(d) P(language|d) = 0.009149 / P(d) P(gemstone|d) =0.014110 / P(d) P(gemstone|d) > P(language|d) d pertence à classe gemstone
  84. 84. Considera que as palavras em um documento são independentes
  85. 85. Simples e rápido
  86. 86. k-nearest neighbor (k-nn)
  87. 87. Representa documentos no espaço como um vetor em função dos seus pesos
  88. 88. Um documento é classificado ao analizar os k documentos mais próximos a ele
  89. 89. Document Class Ruby is a dynamic language Language Ruby has color between pink and red Gemstone Gems is a ruby packaging system Language Ruby is one of the four precious gems Gemstone The Ruby language was born in Japan Language
  90. 90. <ruby, language, dynamic, gems, color, pink, red, package, precious, japan> <1, 1, 1, 0, 0, 0, 0, 0, 0, 0> <1, 0, 0, 1, 1, 1, 1, 0, 0, 0> <1, 0, 0, 1, 0, 0, 0, 1, 0, 0> <1, 0, 0, 1, 0, 0, 0, 0, 1, 0> <1, 1, 0, 0, 0, 0, 0, 0, 0, 1>
  91. 91. A qual classe pertence o documento: “My ruby gems arrived in a pink package”
  92. 92. <ruby, language, dynamic, gems, color, pink, red, package, precious, japan> <1, 1, 1, 0, 0, 0, 0, 0, 0, 0> <1, 0, 0, 1, 1, 1, 1, 0, 0, 0> <1, 0, 0, 1, 0, 0, 0, 1, 0, 0> <1, 0, 0, 1, 0, 0, 0, 0, 1, 0> <1, 1, 0, 0, 0, 0, 0, 0, 0, 1> <1, 0, 0, 1, 0, 1, 0, 1, 0, 0>
  93. 93. Documents Distance Class <1, 1, 1, 0, 0, 0, 0, 0, 0, 0> 5 Language <1, 0, 0, 0, 1, 1, 1, 0, 0, 0> 4 Gemstone <1, 0, 0, 1, 0, 0, 0, 1, 0, 0> 1 Language <1, 0, 0, 1, 0, 0, 0, 0, 1, 0> 3 Gemstone <1, 1, 0, 0, 0, 0, 0, 0, 0, 1> 5 Language <1, 0, 0, 1, 0, 1, 0, 1, 0, 0>
  94. 94. 5 4 3 2 1 ? language gemstone
  95. 95. 5 4 3 2 1 ? language gemstone
  96. 96. 5 4 3 2 1 ? language gemstone
  97. 97. 5 4 3 2 1 ? language gemstone
  98. 98. 5 4 3 2 1 ? language gemstone
  99. 99. 5 4 3 2 1 ? language gemstone
  100. 100. Para k = 1
  101. 101. 5 4 3 2 1 ? language gemstone
  102. 102. Documento pertence a language
  103. 103. Para k = 3
  104. 104. 5 4 3 2 1 ? language gemstone
  105. 105. Documento pertence a gemstone
  106. 106. Porém, k-nn sempre precisa de todos os dados de treino
  107. 107. Classificador pesado e lento
  108. 108. Rocchio classifier
  109. 109. Similar ao k-nn, porém representa os documentos como uma média
  110. 110. 5 4 3 2 1 ? language gemstone
  111. 111. 5 4 3 2 1 ? language gemstone
  112. 112. 5 4 3 2 1 ? language gemstone
  113. 113. 5 4 3 2 1 ? language gemstone
  114. 114. 5 4 3 2 1 ? language gemstone
  115. 115. Para classificar um documento, calculamos a sua distância às médias
  116. 116. 3.5 5 4 3 2 1 ? 3.66 language gemstone
  117. 117. Documento pertence a gemstone
  118. 118. Rocchio é leve e rápido, porém possui um problema óbvio...
  119. 119. ?
  120. 120. ?
  121. 121. Support Vector Machines (SVM)
  122. 122. Teoria matemática complexa
  123. 123. Também representa os documentos no espaço
  124. 124. Acha um hiperplano que divide o espaço dos documentos em dois
  125. 125. 5 4 3 2 1 language gemstone
  126. 126. language gemstone
  127. 127. language gemstone
  128. 128. Calcular este hiperplano, geralmente exige muito processamento
  129. 129. Porém classificar um documento é rápido, basta determinar qual lado do hiperplano ele está
  130. 130. language gemstone
  131. 131. ? language gemstone
  132. 132. ? language gemstone
  133. 133. Conteúdo • Pré-processamento • Classificadores - Naive bayes - k nearest neighbors - Rocchio classifier - Support vector machines • Medidas
  134. 134. Conteúdo • Pré-processamento • Classificadores - Naive bayes - k nearest neighbors - Rocchio classifier - Support vector machines • Medidas
  135. 135. Medidas
  136. 136. Analisar um classificador por sua acurácia é errado
  137. 137. Classe real p n Verdadeiro Falso p Classe Positivo Positivo predita Falso Verdadeiro n Negativo Negativo
  138. 138. Acurácia = (VP + VN) / (VP + VN + FP + FN)
  139. 139. A acurácia esconde potenciais falso positivos ou falso negativos
  140. 140. Use precisão e revocação
  141. 141. Precisão = VP / (VP + FP)
  142. 142. Revocação = VP / (VP + FN)
  143. 143. Alta precisão significa poucos falso positivos, alta revocação equivale a poucos falso negativos
  144. 144. Alguns resultados...
  145. 145. Dataset da Reuters - RCV1-v2
  146. 146. Precisão Revocação 100% 94.5 93.4 92.2 92.3 87.5% 89.9 85.5 80.3 75% 75.7 62.5% 50% Naive Bayes k-NN Rocchio SVM
  147. 147. No geral, SVM possui os melhores resultados
  148. 148. Naive Bayes possui altíssima precisão, excelente para filtros anti-spam
  149. 149. Conteúdo • Pré-processamento • Classificadores • Medidas
  150. 150. ?! @josevalim http://blog.plataformatec.com.br

×