-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquali-tassia.tex
2433 lines (2124 loc) · 121 KB
/
quali-tassia.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass{quali}
%FIXME [Definir titulo]
%\title{Recomendação de Componentes de Software}
%\title{AppRecommender:\\um Recomendador de\\aplicativos GNU/Linux}
\title{Aplicação de Estratégias de \\
Recomendação ao Domínio de \\
Componentes de Software}
\author{Tássia Camões Araújo \inst{1} }
\address{Instituto de Matemática e Estatística \\
Universidade de São Paulo (USP)}
\begin{document}
\maketitle
\vspace{1mm}
\begin{center}
EXAME DE QUALIFICAÇÃO DE MESTRADO\\
Programa: Ciência da Computação\\
Orientador: Prof. Dr. Arnaldo Mandel
\end{center}
\begin{resumo}
A crescente expansão na oferta de serviços na rede mundial de computadores
vem expondo cada vez mais seus usuários a inúmeras possibilidades de escolha.
Esta visível pluralidade, somada à infinidade de interesses dos indivíduos
envolvidos, acaba por demandar uma organização das informações de forma que
seja possível aproximar destes usuários aquilo que supõe-se ser o que
verdadeiramente necessitam. Tal suposição é auxiliada por sistemas
computacionais de recomendação, que em geral utilizam o próprio comportamento
do usuário como componente fundamental para decidir o que lhe deve ser
apresentado como opções mais suscetíveis a aceitação. O presente trabalho
propõe o desenvolvimento de um sistema que auxilia a recomendação de
componentes de software. Vê-se em especial no universo dos softwares de
código aberto uma enorme diversidade de opções que, pelo seu caráter
majoritariamente não comercial, são apresentadas de forma menos ostensiva aos
seus potenciais usuários. A distribuição Debian GNU/Linux reúne
milhares de componentes de software nestas circunstâncias sob uma sólida
infraestrutura, oferendo assim a este trabalho uma série de benefícios
técnicos para os experimentos. Esta distribuição será portanto utilizada,
onde propõe-se a implementação e posterior análise comparativa das técnicas
abordadas de recomendação, que por fim será objeto de uma consulta pública
aos usuários acerca da sua eficácia, a ser também compilada e comentada na
finalização do trabalho.
\end{resumo}
\newpage
\section{Introdução} \label{sec:intro}
A popularização de recursos computacionais e do acesso à Internet nas
últimas décadas proporcionou um aumento expressivo na diversidade de serviços e
conteúdo à disposição dos usuários. Um dos fatores para este aumento é que
os usuários, que anteriormente eram considerados meros consumidores,
apresentam-se atualmente como produtores de conteúdo. \cite{Castells:06} analisa
este fenômeno e afirma que a maioria da população acredita que pode influenciar
outras pessoas atuando no mundo através da sua força de vontade e
utilizando seus próprios meios. Isto pode ser observado no surgimento e
proliferação de serviços criados e mantidos pelos usuários: blogs, enciclopédias
colaborativas, como a Wikipedia\footnote{\url{http://wikipedia.org}},
repositórios para compartilhamento de fotografia e vídeo, como Flickr
\footnote{\url{http://flickr.com}} e Youtube\footnote{\url{http://youtube.com}},
entre outros. Considerando a produção em termos de software, observa-se o
exemplo das comunidades de software livre e/ou de código aberto
(FOSS\footnote{Termo consolidado no idioma inglês, acrônimo para
\textit{Free/Open-Source Software}, que diz respeito aos programas licenciados
livremente para garantir aos usuários o direito de uso, estudo e modificação,
por meio da disponibilidade do seu código-fonte.}), que propiciam a construção
coletiva de uma ampla gama de softwares de qualidade em constante atualização
e evolução, organizados na forma de um rossio \cite{Simon:08}.
A grande diversidade de opções disponíveis nestes ambientes, apesar de positiva,
representa uma sobrecarga de informações que pode confundir o usuário final.
\cite{Yyengar:10} afirma que ``mais é menos'', no sentindo de que quanto maior
for a disponibilidade de escolhas, menor será a satisfação do usuário. O fato é
que comumente o indivíduo possui pouca ou nenhuma experiência pessoal para
realizar escolhas em determinado contexto \cite{Cazella:10}. Sendo assim,
recomendações de outras pessoas são de grande utilidade, pois reduzem as
dúvidas e auxiliam o processo de escolha dentre as muitas alternativas
apresentadas. No entanto, diante do número de usuários e do volume de conteúdo
que usualmente deve ser considerado, recomendações no estilo ``boca a boca''
tornam-se ineficientes, pois exigem a comunicação direta entre os pares. A
tecnologia assume então papel fundamental neste processo \cite{Shardanand:95}.
Sistemas de recomendação emergiram como uma área de pesquisa independente na
década de 90, tendo como fonte de estratégias para a automatização de
recomendações soluções nas áreas de ciência cognitiva, teoria da aproximação,
recuperação da informação, teorias de predição, administração e marketing
\cite{Adomavicius:05}. O tema ganhou destaque com o crescimento do comércio
eletrônico, onde apresentar o que o usuário tem interesse pode significar
conquistar o cliente.
Os sistemas recomendadores fazem a associação entre objetos de interesse e
pessoas neles interessadas, filtrando as informações de forma a apresentar
somente aquilo que seja relevante para o usuário. Além da agilidade para
encontrar o que se deseja, tais sistemas possibilitam a personalização de
serviços e conteúdos, que são apresentados de maneira individualizada a partir
da identificação de interesses pessoais.
Este trabalho se insere no contexto de desenvolvimento de componentes de
software, no qual os usuários são modelados como clientes e os componentes
desenvolvidos como itens pelos quais os usuários têm interesse ou não.
Assume-se que cada usuário tem um sistema operacional instalado e deve escolher
quais aplicativos extras deseja obter para suprir suas necessidades pessoais.
Diante da enorme quantidade de programas disponíveis nas mais diversas áreas de
aplicação, configura-se um cenário onde um sistema de recomendação traria
benefícios imediatos ao usuário, por auxiliá-lo a tomar decisões acerca da
configuração do seu ambiente de trabalho.
O objetivo principal deste trabalho é a experimentação de diferentes técnicas e
estratégias para a construção de sistemas recomendadores no domínio de
componentes de software, utilizando como ambiente de desenvolvimento a
distribuição Debian GNU/Linux. Ao final deste estudo pretende-se integrar a
estratégia que obtiver resultados mais satisfatórios à infraestrutura existente
desta distribuição, aproximando os serviços atualmente disponíveis ao estado da
arte em sistemas de recomendação.
O presente texto está organizado como segue: a seção \ref{sec:recomendacao}
traz uma introdução sobre sistemas de recomendação, seus desafios,
as principais técnicas e estratégias utilizadas em seu desenvolvimento, além de
métodos de avaliação destes sistemas; a seção \ref{sec:distribuicoes} descreve
o ambiente de desenvolvimento deste estudo, distribuições GNU/Linux, seguida
pela exibição de soluções existentes para a recomendação neste domínio (seção
\ref{sec:rec_distro}); na seção \ref{sec:metodologia} é apresentada a
metodologia de realização deste trabalho e, por fim, a seção
\ref{sec:conclusao} traz a conclusão preliminar deste projeto, até a presente
etapa de execução.
\section{Sistemas de recomendação}\label{sec:recomendacao}
Segundo \cite{Resnick:97}, os sistemas de recomendação aumentam a capacidade e
eficácia de um processo de indicação bastante popular nas relações sociais.
Existem recomendações produzidas exclusivamente por especialistas, a exemplo de
indicações de filmes publicadas nos principais jornais e revistas do país por
críticos de arte. Nos últimos anos, porém, a opinião e o comportamento de
usuários não especializados passaram a ser considerados nas recomendações, por
agregarem valor às mesmas. O que acontece de forma explícita, quando o
próprio usuário escreve sua opinião ou avalia a qualidade de um item, ou
implícita, quando suas preferências, comportamentos e transações são analisados
e incorporados à recomendação de forma transparente ao usuário.
O problema da recomendação é comumente formalizado através de uma estrutura de
pontuação como representação computacional da utilidade dos itens para os
usuários ou clientes. A partir de avaliações feitas pelos próprios usuários do
sistema, tenta-se estimar pontuações para os itens que ainda não foram
avaliados pelos mesmos. Uma vez que esta estimativa tenha sido feita, pode-se
recomendar os itens com maior pontuação estimada.
O conceito de utilidade, porém, é subjetivo e arduamente mensurável devido às
dificuldades em distinguir qualitativamente e definir quantitativamente os
fatores que a determinam. Portanto, com a ressalva de que estas medidas não
representam necessariamente a realidade, as pontuações são usadas como
aproximações, pois têm como base as avaliações registradas pelos próprios usuários.
\subsection{Ações} \label{sec:acoes}
Sistemas de recomendação são implementados nos mais diversos contextos
e podem ser projetados com finalidades distintas. Abaixo estão descritas
algumas ações relacionadas a estes sistemas identificadas por
\cite{Herlocker:04}.
\begin{description}
\item[Anotação em contexto.] Os primeiros sistemas de recomendação eram
utilizados num cenário de informação estruturada (mensagens classificadas
num contexto), e auxiliavam os usuários a selecionarem as mensagens a serem
lidas dentro de cada contexto.
\item[Encontrar itens relevantes.] O sistema sugere itens para o usuário
através de uma lista ordenada de forma decrescente, de acordo com a
probabilidade do item ser considerado relevante pelo usuário. Esta é a ação
mais comum entre os sistemas de recomendação comerciais, atraindo grande
parte das pesquisas relacionadas com o tema.
\item[Encontrar todos os itens relevantes.] Em situações em que não se deseja
ignorar nenhum item relevante, ao invés da recomendação de apenas alguns,
todos os itens considerados relevantes devem ser retornados.
\item[Sequência recomendada.] Quando não somente os itens recomendados importa,
mas também a ordem em que eles são apresentados, caracteriza-se a ação de
recomendação de sequência.
\item[Expressão de opinião.] A recomendação em si muitas vezes não é o que
atrai usuários desses sistemas. Alguns estão interessados simplesmente em
emitir suas opiniões. Esta ação é comum em ambientes que disponibilizam um
espaço para os usuários registrarem seus comentários e avaliações sobre os
produtos.
\item[Ajudar usuários.] Alguns usuários utilizam sistemas de recomendação
por acreditarem que a comunidade se beneficia da sua contribuição. Apesar de
nem sempre aparecerem juntas, tal atividade está comumente relacionada com a
expressão de opinião.
\item[Navegação.] Alguns usuários utilizam recomendadores mesmo quando não têm
planos de consumir produto algum, apenas para navegar entre os itens
disponíveis. Neste caso, aspectos como a interface, facilidade de uso e
natureza da informação provida são de extrema importância.
\end{description}
\subsection{Desafios}
O desenvolvimento de sistemas recomendadores têm como desafios questões
inerentes ao problema de recomendação e sua representação computacional. As
estratégias e técnicas propostas devem levar em conta tais questões e tentar
contorná-las na medida do possível. Alguns destas questões foram apontadas
por \cite{Vozalis:03} e são citadas a seguir.
\begin{description}
\item[Qualidade das recomendações.] Usuários esperam recomendações nas
quais eles possam confiar. Esta confiabilidade é alcançada na medida em
que se diminui a incidência de falsos positivos, em outras palavras,
recomendações que não interessam ao usuário;
\item[Esparsidade.] A existência de poucas relações usuário-item resulta
numa matriz de relacionamentos esparsa, o que dificulta a localização de
usuários com preferências semelhantes (relações de vizinhança) e
resulta em recomendações fracas.
\item[Escalabilidade.] A complexidade do cálculo de recomendações cresce
tanto com o número de clientes quanto com a quantidade de itens,
portanto a escalabilidade dos algoritmos é um ponto importante a ser
considerado.
\item[Transitividade de vizinhança.] Usuários que têm comportamento
semelhante a um determinado usuário não necessariamente têm
comportamento semelhante entre si. A captura deste tipo de relação pode ser
desejável mas em geral esta informação não é resguardada, exigindo a
aplicação de métodos específicos para tal.
\item[Sinônimos.] Quando o universo de itens possibilita a existência
de sinônimos, a solução deve levar esta informação em conta para prover
melhores resultados.
\item[Primeira avaliação.] Um item só pode ser recomendado se ele tiver sido
escolhido por um usuário anteriormente. Portanto, novos itens precisam ter
um tratamento especial até que sua presença seja ``notada''.
\item[Usuário incomum.] Indivíduos com opiniões que fogem do usual, que não
concordam nem discordam consistentemente com nenhum grupo, normalmente não
se beneficiam de sistemas de recomendações.
\end{description}
%FIXME [Desenvolver os temas: perfis de usuario e privacidade]
%\subsection{Perfis de Usuário}
%. Identidade\\
%. Geração e manutenção de perfil\\
%. Reputação
%
%\subsection{Privacidade}
%FIXME [Analisar complexidade de cada tecnica]
%FIXME [Produzir figuras ilustrativas do naive bayes]
\subsection{Técnicas} \label{sec:tecnicas}
O desenvolvimento de sistemas de recomendação tem suas raízes em áreas
distintas e o problema computacional a ser tratado está fortemente relacionado
com outros problemas clássicos, como classificação e recuperação de informação
em documentos de texto.
A fim de obter a informação desejada, o usuário de uma ferramenta de busca
deve traduzir suas necessidades de informação para uma consulta
(\textit{query}, em inglês), que geralmente é representada por um conjunto de
\textit{palavras-chave}. O desafio do buscador é recuperar os documentos da
coleção que são relevantes para a consulta, baseando-se nos termos que a
constituem. Ademais, visto que a busca pode retornar um número excessivo de
documentos, é desejável que este resultado seja apresentado ao usuário em ordem
decrescente de relevância, aumentando assim as chances de a informação desejada
ser encontrada com rapidez. Para tanto, cada documento da coleção deve ter uma
pontuação (peso) que indique seu grau de importância para a referida
\textit{query}. Traçando um paralelo com o problema de recomendação, a
identidade e/ou o comportamento do usuário representaria a consulta ao sistema
de busca, que provocaria o retorno dos itens de maior peso, ou seja, com maior
potencial de aceitação pelo usuário.
Na busca por informação, assume-se que as necessidades do usuário são
particulares e passageiras, e por isso a reincidência de \textit{queries} não é
muito frequente \cite{Manning:09}. Porém, em situações onde se observa que as
mesmas consultas são aplicadas com uma certa frequência, é interessante que o
sistema suporte consultas permanentes. Desta forma a computação necessária pode
ser realizada previamente e apresentada sempre que a consulta for requisitada.
Se a classe de documentos que satisfazem a uma dessas \textit{queries}
permanentes é tida como uma categoria, o processo de realização das consultas
prévias pode ser caracterizado como uma classificação. O problema da
classificação diz respeito à determinação de relacionamentos entre um dado
objeto e um conjunto de classes pré-definidas.
A recomendação pode ser vista como uma classificação, na qual os itens são
categorizados entre duas classes: relevantes e irrelevantes -- os relevantes
seriam recomendados. Porém, a definição de consultas ou regras fixas para uma
busca não é uma estratégia eficiente neste caso, porque a consulta estaria
diretamente relacionada com a identidade do usuário e portanto deveria ser
escrita especialmente para ele.
Todavia, a disciplina de inteligência artificial aborda a questão da
classificação através de estratégias que não se baseiam em busca. Algoritmos
de aprendizado de máquina são utilizados para a construção de modelos de
classificação ``inteligentes'', que ``aprendem'' através da análise de
exemplos. Os métodos supervisionados fundamentam-se na construção de um
classificador que aprende na medida em que lhe são apontados exemplos de
objetos classificados. São caracterizados como supervisionados porque as
classes atribuídas aos objetos de treinamento são determinadas por um ser
humano, que atua como um supervisor orientando o processo de aprendizado
\cite{Manning:09}. Por outro lado, algoritmos não supervisionados procuram
identificar padrões de organização nos dados sem que haja uma classificação
prévia dos exemplos.
A seguir são apresentadas algumas técnicas para tratamento destes problemas
que também são utilizadas na construção de sistemas de recomendação, dando
suporte às estratégias apresentadas na seção \ref{sec:estrategias}.
\subsubsection{K-NN} \label{sec:knn}
\textit{K-nearest neighbors (k-NN)}, em português \textit{k vizinhos mais
próximos}, é mais um algoritmo de aprendizado supervisionado para
classificação. Este método baseia-se no conceito de vizinhança, que representa
um conjunto de objetos que estão próximos no espaço de busca.
O \textit{K-NN} não exige nenhum treinamento prévio com os dados de exemplo,
que podem ser diretamente armazenados como vetores de atributos acompanhados
por suas devidas classes. A classificação de um novo objeto parte do cálculo da
vizinhança do mesmo, que é composta por $k$ objetos.
A determinação da vizinhança está diretamente relacionada com o conceito de
proximidade entre objetos, que pode ser expressa em termos de similaridade ou
de distância entre os mesmos (quanto maior a distância, menor a similaridade).
Existem diversas medidas para mensurar estes conceitos, deve-se adotar a
métrica que melhor se adeque ao domínio da aplicação e conjunto de dados.
A tabela \ref{tab:knn_distancia} apresenta algumas dessas medidas, onde os
objetos $X$ e $Y$ são representados por seus vetores $\vec{X} = (x_1,...,x_n)$
e $\vec{Y} = (y_1,...,y_n)$. A similaridade de cosseno mede a similaridade de
dois vetores através do cosseno do ângulo entre os mesmos. O coeficiente de
\textit{Pearson} é equivalente ao cosseno do ângulo entre os vetores
centralizados na média. E o coeficiente de \textit{Tanimoto} é uma extensão da
similaridade de cossenos que resulta no índice de \textit{Jaccard} para
atributos binários.
\begin{table}[h!]
\caption{K-NN: Medidas de distância e similaridade entre objetos}
\label{tab:knn_distancia}
\centering
\newcommand\T{\rule{0pt}{2.8ex}}
\newcommand\B{\rule[-1.8ex]{0pt}{0pt}}
\begin{tabular}{| l | l |}
\hline
Distância euclidiana &
\T\B$\mathid{D}(X,Y) = \sqrt{(x_1-y_1)^2+(x_2-y_2)^2+...+(x_n-y_n)^2}$\\
\hline
Similaridade de cosseno &
$\mathid{sim}(X,Y) = \frac{\T\vec{X} \cdot \vec{Y}}{|\vec{X}| |\vec{Y}|}
= \frac{\textstyle \sum_{1\leq i \leq n} x_i y_i}
{\textstyle \sqrt{\sum_{1\leq i \leq n} x_i^2}
\sqrt{\sum_{1\leq i \leq n} y_i^2}\B}$\\
\hline
Coeficiente de \textit{Pearson} &
$\mathid{P}(X,Y) = \frac{\T\textstyle\sum_{1 \leq i \leq n} (x_i-\bar{x})
(y_i-\bar{y})}
{\textstyle\sqrt{\sum_{1 \leq i \leq n} (x_i-\bar{x})^2}
\sqrt{\sum_{1 \leq i \leq n} (y_i-\bar{y})^2}\B}$\\
\hline
Coeficiente de \textit{Tanimoto} &
$\mathid{T}(X,Y) = \frac{\T\textstyle\vec{X} \cdot \vec{Y}}
{\textstyle |\vec{X}|^2 + |\vec{Y}|^2 -
\vec{X} \cdot \vec{Y}}$\\
\hline
\end{tabular}
\end{table}
Após a definição de vizinhança, a classe mais frequente entre seus $k$ vizinhos
é atribuída ao novo objeto. Desta forma, a similaridade também pode ser
entendida como grau de influência entre os objetos. Os objetos mais semelhantes
a um novo objeto terão maior influência no cálculo de sua classificação.
\newpage
%\vspace{0.3cm}
\hspace{-1.4cm}
\textbf{Seleção de atributos} \label{sec:selecao_atributos}
Uma grande quantidade de atributos a ser considerada resulta em alta
complexidade computacional, além de geralmente mascarar a presença de ruídos
(dados que prejudicam a acurácia da classificação quando considerados).
A fim de amenizar este problema, é comum a realização de um processo denominado
seleção de atributos, que consiste em escolher alguns atributos dos dados e
utilizar apenas estes como conjunto de treinamento para a classificação. Esta
seleção equivale à substituição de um classificador complexo por um mais
simples. \cite{Manning:09} defende que, especialmente quando a quantidade de
dados de treinamento é limitada, modelos mais fracos são preferíveis.
A seleção de atributos geralmente é realizada para cada classe em separado,
seguida pela combinação dos diversos conjuntos. Abaixo são apresentados alguns
métodos de escolha.
\begin{description}
\item[Informação mútua.] Análise de quanto a presença ou ausência de um
atributo contribui para a tomada de decisão correta por uma determinada
classe. Informação mútua máxima significa que o atributo é um indicador
perfeito para pertencimento a uma classe. Isto acontece quando um objeto
apresenta o atributo se e somente se o objeto pertence à classe;
\item[Independência de eventos.] Aplicação do teste estatístico $\chi^2$ para
avaliar a independência de dois eventos -- neste caso, um atributo e uma
classe. Se os dois eventos são dependentes, então a ocorrência do atributo
torna a ocorrência da classe mais provável.
\item[Baseado em frequência.] Seleção dos atributos mais comuns para uma
classe.
\end{description}
Os métodos apresentados acima são ``gulosos'', ou seja, assumem escolhas ótimas
locais na esperança de serem ótimas globais. Como resultado, podem selecionar
atributos que não acrescentam nenhuma informação para a classificação quando
considerados outros previamente escolhidos. Apesar disto, algoritmos não
gulosos são raramente utilizados devido a seu custo computacional
\cite{Manning:09}.
\subsubsection{Classificador bayesiano}
\textit{Bayes ingênuo} é uma solução para classificação que figura entre os
algoritmos de aprendizado de máquina supervisionados. O classificador apoia-se
num modelo probabilístico que aplica o teorema de Bayes com fortes suposições
de independência de atributos -- por esta razão o método é considerado ingênuo.
Em outras palavras, a presença ou ausência de um atributo em um objeto de uma
classe não estaria relacionada com a incidência de nenhum outro atributo.
A decisão acerca da classe a qual um objeto pertence é tomada de acordo com o
modelo de probabilidade máxima posterior \textit{(MAP)}, indicada na equação
\ref{eq:map}. Dado que $C$ é o conjunto de classes e $x$ objeto a ser
classificado, a classe atribuída a este será a que apresentar maior
probabilidade condicionada a $x$. $\hat{P}$ é utilizado ao invés de $P$ porque
geralmente não se sabe o valor exato das probabilidades, que são estimadas a
partir dos dados de treinamento.
\begin{equation}
\label{eq:map}
\mathid{c_{MAP}} = \underset{c \in C}{\operatorname{arg\ max}} \ \hat{P}(c|x)
\end{equation}
A equação \ref{eq:bayes} aplica o Teorema de Bayes para probabilidades
condicionadas. Na prática, apenas o numerador da fração interessa, visto que o
denominador é constante para todas as classes, portanto não afeta o
$\operatorname{arg\ max}$ (equação \ref{eq:bayes_no_deno}).
\begin{eqnarray}
\label{eq:bayes}
\mathid{c_{MAP}} & = & \underset{c \in C}{\operatorname{arg\ max}} \
\frac{\hat{P}(x|c) \hat{P}(c)}{\cancel{\hat{P}(x)}} \\
{} & {} & {} \nonumber \\
\label{eq:bayes_no_deno}
& = & \underset{c \in C}{\operatorname{arg\ max}} \
\hat{P}(x|c) \hat{P}(c)
\end{eqnarray}
É neste ponto que a independência de atributos é importante. Considera-se que
um documento $x$ pode ser caracterizado por uma série de atributos $x_i$ -- no
caso de documentos de texto, os atributos são os próprios termos. Assumindo que
a ocorrência de atributos acontece independentemente, tem-se que:
\begin{equation}
\label{eq:independencia}
\hat{P}(x|c) = \hat{P}(x_1,x_2,...,x_n|c)
= \hat{P}(x_1|c) \hat{P}(x_2|c)\ ...\ \hat{P}(x_n|c)
\end{equation}
Portanto, a função de decisão pode ser reescrita através da equação
\ref{eq:bayes_prod}. Cada parâmetro condicional $\hat{P}(x_i|c)$ é um peso
que representa a qualidade do atributo $x_i$ como indicador da classe $c$,
enquanto que $\hat{P}(c)$ é a frequência relativa da classe $c$.
\begin{equation}
\label{eq:bayes_prod}
\mathid{c_{MAP}} = \underset{c \in C}{\operatorname{arg\ max}} \ \
\hat{P}(c) \prod_{1 \le i \le n} \hat{P}(x_i|c)
\end{equation}
Os parâmetros são obtidos através da estimativa de maior probabilidade
\textit{(MLE)}, que corresponde ao valor mais provável de cada parâmetro de
acordo com os dados de treinamento. A equação \ref{eq:p_c} traz a estimativa de
$\hat{P}(c)$, onde $N_c$ é o número de objetos da classe $c$ e $N$ é o número
total de documentos.
\begin{equation}
\label{eq:p_c}
\hat{P}(c) = \frac{N_c}{N}
\end{equation}
As probabilidades condicionais são estimadas como a frequência relativa do
atributo $x$ em objetos que pertencem à classe $c$. Na equação \ref{eq:p_xc},
$T_{\mathit{cx}}$ é o número de ocorrências de $x$ em objetos de exemplo da
classe $c$ e $V$ é o conjunto de atributos que os objetos podem apresentar.
\begin{equation}
\label{eq:p_xc}
\hat{P}(x|c) = \frac{T_{\mathit{cx}}}
{\displaystyle \sum_{x' \in V} T_{\mathit{cx}'}}
\end{equation}
No entanto, a estimativa \textit{MLE} é zero para combinações atributo-classe
que não ocorrem nos dados de treinamento. Considerando que as probabilidades
condicionais de todos os atributos serão multiplicadas (equação
\ref{eq:bayes_prod}), a simples ocorrência de uma probabilidade zerada resulta
na desconsideração da classe na referida classificação. E de fato, dados de
treinamento nunca são abrangentes o suficiente para representar a frequência de
eventos raros de forma adequada \cite{Manning:09}. Para eliminar
$\mathit{zeros}$, adiciona-se $1$ a cada termo da equação \ref{eq:p_xc}:
\begin{equation}
\label{eq:p_xc+1}
\hat{P}(x|c) = \frac{T_{\mathit{cx}}+1}
{\displaystyle \sum_{x' \in V} T_{\mathit{cx}'}+1}
\end{equation}
O classificador bayesiano também é sensível a ruídos, logo, sua performance é
igualmente beneficiada pelo processo de seleção de atributos descrito na seção
\ref{sec:selecao_atributos}.
Apesar de a independência de atributos não ser verificada para a maioria
dos domínios de aplicação, na prática o Bayes ingênuo apresenta resultados
satisfatórios. \cite{Zhang:04} atribui a surpreendente boa performance deste
método ao fato de que a mera existência de dependências entre atributos não
prejudicaria a classificação, mas sim o modo como as dependências estão
distribuídas ao longo das classes. Segundo o autor, desde que as dependências
estejam distribuídas igualmente nas classes, não há problema em haver
dependência forte entre dois atributos.
\vspace{0.3cm} \hspace{-1.4cm}
\textbf{Variantes do modelo Bayes ingênuo}
As duas principais variantes de implementação do classificador bayesiano,
denominadas de modelo \textit{multinomial} e de \textit{Bernoulli}, diferem
fundamentalmente na maneira como os objetos são representados.
O primeiro modelo utiliza uma representação que considera informações espaciais
sobre o objeto. Na classificação de documentos de texto, por exemplo, o modelo
gera um atributo para cada posição do documento, que corresponde a um termo do
vocabulário. Já o modelo de \textit{Bernoulli} produz um indicador de
presença ou ausência para cada possível atributo (no caso de texto, cada termo
do vocabulário).
A escolha da representação de documentos adequada é uma decisão crítica no
projeto de um classificador, visto que o próprio significado de um atributo
depende da representação. No \textit{multinomial}, um atributo pode assumir
como valor qualquer termo do vocabulário, o que resulta numa representação do
documento correspondente à sequência de termos do mesmo. Já para o modelo de
\textit{Bernoulli}, um atributo pode assumir apenas os valores $0$ e $1$, e a
representação do documento é uma sequência de $0$s e $1$s do tamanho do
vocabulário.
%A figura \ref{fig:exemplo_bayes} ilustra as peculiaridades de cada
%representação.
%
%\begin{figure}[ht]
%\centering
%\begin{tabular}{*4{c}}
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (1)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Por motivo \\ de segurança, \\
% comunicamos a todos os clientes que atualizem sua senha por email.}}
% \end{overpic} &
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (2)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Atualização \\ urgente de \\ senha.
% \\ \\ Clique aqui.}}\end{overpic} &
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (3)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Você foi \\ sorteado e \\ acaba de
% ganhar 1 milhão de reais. Clique aqui e saiba como resgatar seu prêmio.}}
% \end{overpic} &
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (4)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Perca peso fácil e de forma divertida.
% Pare de sofrer!}}\end{overpic} \\
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (5)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Emagreça 10kg em duas semanas! Clique
% aqui e descubra como.}}\end{overpic} &
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (6)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Compre viagra com 69\% de desconto!}}
% \end{overpic} &
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (7)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Se você não pode mudar sua vida, mude
% pelo menos a sua bolsa!}}\end{overpic} &
%\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (8)}
% \put(5,44){\parbox{1.8cm}{\scriptsize Aprenda a investir na bolsa em uma
% semana.}}\end{overpic}
%\end{tabular}
%\caption{Coleção de documentos classificados em \textit{spam} e \textit{não-spam}}
%\label{fig:colecao_spam}
%\end{figure}
\subsubsection{Medida $\boldsymbol{\tfidf}$}
Acrônimo para \textit{term frequency - inverse document frequency}, $\tfidf$ é
uma medida de peso clássica utilizada em ferramentas de busca em texto para
ordenação do resultado da consulta pela relevância dos documentos.
O universo da busca é uma coleção de documentos de texto. Um documento por sua
vez é uma coleção de palavras, geralmente referenciadas como \textit{termos do
documento}. O conjunto de todas as palavras presentes nos documentos da
coleção é denominado \textit{dicionário} ou \textit{vocabulário}. Desta forma,
um documento $d$ composto por $n$ termos do vocabulário $V$ pode ser
representado como $d = \{t_1, t_2, ..., t_n | 1 \leq i \leq n, t_i \in V\}$.
Contudo, alguns termos do vocabulário, designados como \textit{stop words}, são
normalmente desconsiderados no cálculo de relevância dos documentos por serem
muito frequentes na coleção e, em decorrência disto, pouco informativos acerca
do teor dos textos. Artigos e pronomes, por exemplo, geralmente figuram nesta
categoria.
Outra consideração acerca da representação dos documentos como conjuntos de
termos é a realização de normalizações morfológicas. Diferentes palavras que
dizem respeito ao mesmo conceito podem ser utilizadas ao longo de uma coleção,
por exemplo, os termos \textit{casa}, \textit{casinha} e \textit{casas}. Em
certos contextos, deseja-se que a busca por uma determinada variante retorne
ocorrências de todas as outras possibilidades. Neste caso, os termos devem ser
tratados em sua forma normalizada, eliminando variações como plurais e flexões
verbais. Os processos mais comuns de normalização são: \textit{stemming}, que
reduz a palavra ao seu radical; e \textit{lematização}, que reduz a palavra à
sua forma canônica (por exemplo, verbos no infinitivo, substantivos no singular
masculino etc). A figura \ref{fig:normalizacao} apresenta um documento de texto
numa coleção hipotética\footnote{Os textos utilizados nos exemplos desta seção
são excertos de letras de música de diversos compositores brasileiros.} e a sua
representação após eliminação de \textit{stop words} e procedimento de
\textit{stemming}.
\begin{figure}[ht]
\centering
\begin{tabular}{*3{c}}
\begin{overpic}[width=2.8cm]{fig/doc_background.png}
\put(12,44){\parbox{1.8cm}{\scriptsize August\sout{a}, graç\sout{as} \sout{a}
deus, entr\sout{e} \sout{você} \sout{e} \sout{a} Angél\sout{ica},
\sout{eu} encontr\sout{ei} \sout{a} Consol\sout{ação}, \sout{que}
v\sout{eio} olh\sout{ar} \sout{por} \sout{mim} \sout{e} \sout{me}
d\sout{eu} \sout{a} mão.}}\end{overpic} &
\raisebox{1.5cm}{\Huge $\Longrightarrow$} &
\begin{overpic}[width=2.8cm]{fig/doc_background.png}
\put(12,44){\parbox{1.8cm}{\scriptsize august \ \ \ grac \\ deus entr angel
encontr consol v\ \ \ olh\ \ \ d\ \ \ mão}}\end{overpic}
\end{tabular}
\caption{Eliminação de \textit{stop words} e normalização do documento por
\textit{stemming}}
\label{fig:normalizacao}
\end{figure}
A simples presença de um termo da \textit{query} em um documento da coleção já
é um indicativo de que o mesmo tem alguma relação com a consulta. No entanto, a
quantidade de vezes que o termo ocorre é ainda mais informativo sobre sua
relação com o conteúdo do documento. Intuitivamente, os documentos que
referenciam os termos de uma \textit{query} com mais frequência estão mais
fortemente relacionados com a mesma, e por isso deveriam receber uma maior
pontuação de relevância. O peso $\tf_{t,d}$ (\textit{term frequency})
quantifica esta noção intuitiva, relacionando documentos da coleção e termos do
dicionário de acordo com a frequência destes nos documentos. Em sua abordagem
mais simples, $\tf_{t,d}$ é igual ao número de ocorrências do termo $t$ no
documento $d$.
A figura \ref{fig:colecao} ilustra uma coleção de documentos, cujos valores de
$\tf_{t,d}$ para alguns termos do dicionário são apresentados na tabela
\ref{tab:tf}. Por exemplo, a palavra \textit{morena} ocorre duas vezes
no documento $(1)$, por isso $\tf_{\mathit{moren},1} = 2$. O cálculo do
$\tf$s já considera os radicais dos termos, resultantes de um processo de
\textit{stemming}. Em razão disto, $\tf_{\mathit{olh},2} = 3$, pois tanto a
palavra \textit{olho} quanto as diferentes flexões do verbo \textit{olhar}
contribuem para a contagem de frequência do termo \textit{olh}. Na tabela
\ref{tab:tf}, os radicais dos vocábulos são seguidos por algumas variações, a
título de ilustração.
\begin{figure}[ht]
\centering
\begin{tabular}{*4{c}}
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (1)}
\put(5,44){\parbox{1.8cm}{\scriptsize Morena,\\ minha morena, tira a roupa da
janela. Vendo a roupa sem a dona, eu penso na dona sem ela.}}\end{overpic} &
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (2)}
\put(5,44){\parbox{1.8cm}{\scriptsize Olha o \\ jeito dela, morena cor de
canela, pode morrer de paixão quem olhar nos olhos dela.}}\end{overpic} &
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (3)}
\put(5,44){\parbox{1.8cm}{\scriptsize O cravo brigou com a rosa debaixo de
uma sacada. O cravo saiu ferido.}}\end{overpic} &
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (4)}
\put(5,44){\parbox{1.8cm}{\scriptsize Morena dos olhos d'água, tira os seus
olhos do mar.}}\end{overpic} \\
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (5)}
\put(5,44){\parbox{1.8cm}{\scriptsize Queixo-me às rosas, mas que bobagem,
as rosas não falam.}}
\end{overpic} &
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (6)}
\put(5,44){\parbox{1.8cm}{\scriptsize Morena de Angola que leva o chocalho
amarrado na canela.}}\end{overpic} &
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (7)}
\put(5,44){\parbox{1.8cm}{\scriptsize Onde vais \\ morena Rosa, com essa rosa
no cabelo e esse andar de moça prosa.}}\end{overpic} &
\begin{overpic}[width=2.3cm]{fig/doc_background.png}\put(60,5){\scriptsize (8)}
\put(5,44){\parbox{1.8cm}{\scriptsize A padaria Dona Morena vende pão de
cravo e canela.}}\end{overpic}
\end{tabular}
\caption{Coleção de documentos}
\label{fig:colecao}
\end{figure}
\begin{table}[h!]
\caption{Frequência dos termos nos documentos da coleção}
\label{tab:tf}
\centering
\small
\begin{tabular}{| l | c | c | c | c | c | c | c | c |}
\hline
\multicolumn{9}{|c|}{$\boldsymbol{\tf_{t,d}}$}\\
\hline
\backslashbox{\textbf{\textit{Termo}}}{\vspace{-0.2cm}\textbf{\textit{Doc}}}&
\textbf{(1)}&\textbf{(2)}&\textbf{(3)}&
\textbf{(4)}&\textbf{(5)}&\textbf{(6)}&
\textbf{(7)}&\textbf{(8)}\\
\hline
moren \textit{\{a,o\}} & $2$ & $1$ & $0$ & $1$ & $0$ & $1$ & $1$ & $1$ \\
\hline
roup \textit{\{a,ão\}} & $2$ & $0$ & $0$ & $0$ & $0$ & $0$ & $0$ & $0$ \\
\hline
don \textit{\{a,o\}} & $2$ & $0$ & $0$ & $0$ & $0$ & $0$ & $0$ & $1$ \\
\hline
crav \textit{\{o,eiro\}} & $0$ & $0$ & $2$ & $0$ & $0$ & $0$ & $0$ & $1$ \\
\hline
canel \textit{\{a,eira\}} & $0$ & $1$ & $0$ & $0$ & $0$ & $1$ & $0$ & $1$ \\
\hline
olh \textit{\{o,ar\}} & $0$ & $3$ & $0$ & $2$ & $0$ & $0$ & $0$ & $0$ \\
\hline
ros \textit{\{a,eira\}} & $0$ & $0$ & $1$ & $0$ & $2$ & $0$ & $2$ & $0$ \\
\hline
bob \textit{\{o,agem\}} & $0$ & $0$ & $0$ & $0$ & $1$ & $0$ & $0$ & $0$ \\
\hline
\end{tabular}
\end{table}
O conjunto de pesos determinado pelos $\tf$s dos termos de um documento
pode ser entendido como um resumo quantitativo do mesmo. Esta visão do
documento é comumente referenciada na literatura como ``saco de palavras'',
onde a disposição das palavras é ignorada e apenas a quantidade de ocorrências
para cada termo é considerada.
Uma medida de relevância baseada simplesmente na incidência dos termos da
\textit{query} nos documentos ($\mathid{RI}$) poderia ser calculada através da
equação \ref{eq:relevancia_tf}.
\begin{equation}
\label{eq:relevancia_tf}
\mathid{RI}_{d,q} = \sum_{t \in q} \tf_{t,d}
\end{equation}
No entanto, alguns termos têm pouco poder de discriminação na determinação
de relevância de um documento, por estarem presentes em quase todos os
documentos. Ao passo que existem outros muito raros que quando presentes
são forte indicativo de relevância. No contexto da coleção da figura
\ref{fig:colecao}, por exemplo, a \textit{query} $\{\mathit{morena, bobagem}\}$
é composta por um termo muito frequente e outro muito raro. Coincidentemente,
os documentos $(3)$ e $(5)$, contém apenas um dos dois elementos da consulta,
porém ambos apresentam $\tf_{t,d}=1$ para os respectivos termos. Todavia,
enquanto esta frequência se repete ao longo da coleção múltiplas vezes para o
termo \textit{morena}, ela é única para o termo \textit{bobagem}, o que de fato
diferencia o documento $(5)$ dos demais.
O $\idf_t$ (\textit{inverse document frequency}) foi então introduzido para
atenuar o efeito de termos muito comuns no cálculo de relevância, diminuindo o
peso relacionado a um termo por um fator que cresce com sua frequência em
documentos na coleção \cite{Manning:09}. A equação \ref{eq:idf} apresenta a
forma clássica do $\idf$, na qual $N$ representa o número de documentos da
coleção e $\df_t$ (\textit{document frequency}) é o número de documentos que
contém o termo $t$. É comum que o universo da busca seja uma coleção de
documentos de altíssima dimensão, resultando em valores de $\df_t$ muito
discrepantes. O uso do $\log$ diminui a escala de valores, permitindo que
frequências muito grandes e muito pequenas sejam comparadas sem problemas.
\begin{equation}
\label{eq:idf}
\idf_t = \log \frac{N}{\df_t}
\end{equation}
Valores de $\idf_t$ para a coleção da figura \ref{fig:colecao} são apresentados
na tabela \ref{tab:idf}. Novamente os radicais dos termos são considerados:
$\idf_\mathit{morena} = \idf_\mathit{moren} = \log \frac{8}{6} = 0.12$,
enquanto $\idf_\mathit{bobagem} = \idf_\mathit{bob} = \log \frac{8}{1} = 0.9$.
\begin{table}[h!]
\caption{Valores de $\boldsymbol{\idf_t}$ para termos do dicionário}
\label{tab:idf}
\centering
\small
\begin{tabular}{| l | c | c | c | c | c | c | c | c |}
\hline
\textbf{\textit{Termo}} &
moren & roup & don & crav & canel & olh & ros & bob\\
\hline
$\boldsymbol{\idf_t}$ &
$0.12$ & $0.9$ & $0.6$ & $0.6$ & $0.42$ & $0.6$ & $0.42$ & $0.9$\\
\hline
\end{tabular}
\end{table}
A medida $\tfidf_{t,d}$ combina as definições de $\tf$ e $\idf$ (equação
\ref{eq:tfidf}), produzindo um peso composto com as seguintes propriedades:
\begin{enumerate}
\item É alto quando $t$ ocorre muitas vezes em $d$ e em poucos documentos da
coleção (ambos $\tf$ e $\idf$ são altos);
\item Diminui quando ocorre menos vezes em $d$ ($\tf$ mais baixo) ou em
muitos documentos da coleção ($\idf$ mais baixo);
\item É muito baixa quando o termo ocorre em quase todos os documentos
(mesmo para valores altos de $\tf$, para termos muito comuns o peso
$\idf$ domina a fórmula, em decorrência do uso do $\log$).
\end{enumerate}
\begin{equation}
\label{eq:tfidf}
\tfidf_{t,d} = \tf_{t,d} \cdot \idf_t
\end{equation}
A medida de relevância apresentada na equação \ref{eq:relevancia_tf} pode ser
refinada para somar os pesos $\tfidf$ do documento $d$ com relação aos termos
da \textit{query} $q$, resultando na media $\mathid{R}_{d,q}$ apresentada na equação
\ref{eq:relevancia} \cite{Manning:09}.
\begin{equation}
\label{eq:relevancia}
\mathid{R}_{d,q} = \sum_{t \in q} \tfidf_{t,d}
\end{equation}
A tabela \ref{tab:tfidf-resultado} apresenta a ordenação dos documentos da
coleção como resultado do cálculo de relevância por $\tfidf$ para as
consultas $q_1=\{\mathit{morena}\}$, $q_2=\{\mathit{morena, bobagem}\}$ e
$q_3=\{\mathit{morena, dona, rosa}\}$. Os valores $\tfidf_{t,d}$ foram
obtidos a partir da equação \ref{eq:tfidf}, com os pesos das tabelas
\ref{tab:tf} e \ref{tab:idf}. Por exemplo, $\tfidf_{\mathit{morena,1}} =
\tf_{\mathit{morena,1}} \cdot \idf_{\mathit{morena}} = 2 \cdot 0.12 = 0.24$.
\begin{table}[h!]
\caption{Ordenação dos documentos como resultado das consultas
$\boldsymbol{q_1}$, $\boldsymbol{q_2}$ e $\boldsymbol{q_3}$}
\label{tab:tfidf-resultado}
\centering
\footnotesize
\begin{tabular}{| c | c | c | c | c | c | c | c | c | c | c | c | c | c |}
\cline{1-3}\cline{5-8}\cline{10-14}
\multirow{2}{*}{\textbf{doc}} & $\boldsymbol{q_1}$ & \multirow{2}{*}{$\boldsymbol{\mathsfsl{R}_{d,q}}$} & &
\multirow{2}{*}{\textbf{doc}} & \multicolumn{2}{|c|}{$\boldsymbol{q_2}$} & \multirow{2}{*}{$\boldsymbol{\mathsfsl{R}_{d,q}}$} &&
\multirow{2}{*}{\textbf{doc}} & \multicolumn{3}{|c|}{$\boldsymbol{q_3}$} & \multirow{2}{*}{$\boldsymbol{\mathsfsl{R}_{d,q}}$} \\
\cline{2-2}\cline{6-7}\cline{11-13}
& \textit{morena} & & & &
\textit{morena} & \textit{bobagem} & & & &
\textit{morena} &\textit{dona} & \textit{rosa} & \\
\cline{1-3}\cline{5-8}\cline{10-14}
(1) & $0.24$ & $0.24$ & &
(5) & $0$ & $0.9$ & $0.9$ & &
(1) & $0.24$ & $1.2$ & $0$ & $1.44$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
(2) & $0.12$ & $0.12$ & &
(1) & $0.24$ & $0$ & $0.24$ & &
(8) & $0.12$ & $1.2$ & $0$ & $1.32$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
(4) & $0.12$ & $0.12$ & &
(2) & $0.12$ & $0$ & $0.12$ & &
(7) & $0.12$ & $0$ & $0.84$ & $0.96$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
(6) & $0.12$ & $0.12$ & &
(4) & $0.12$ & $0$ & $0.12$ & &
(5) & $0$ & $0$ & $0.84$ & $0.84$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
(7) & $0.12$ & $0.12$ & &
(6) & $0.12$ & $0$ & $0.12$ & &
(3) & $0$ & $0$ & $0.42$ & $0.42$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
(8) & $0.12$ & $0.12$ & &
(7) & $0.12$ & $0$ & $0.12$ & &
(2) & $0.12$ & $0$ & $0$ & $0.12$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
(3) & $0$ & $0$ & &
(8) & $0.12$ & $0$ & $0.12$ & &
(4) & $0.12$ & $0$ & $0$ & $0.12$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
(5) & $0$ & $0$ & &
(3) & $0$ & $0$ & $0$ & &
(6) & $0.12$ & $0$ & $0$ & $0.12$ \\
\cline{1-3}\cline{5-8}\cline{10-14}
\end{tabular}
\end{table}
Existem diversas variantes para o cálculo dos pesos $\tf_{t,d}$ e $\idf_t$,
propostas com o intuito de aperfeiçoar o processo de busca. Por exemplo,
geralmente a presença de uma palavra 20 vezes num documento não tem de fato
20 vezes mais representatividade do que uma ocorrência única. Documentos
distintos podem referenciar o mesmo conceito de forma concisa ou prolixa, e
simplesmente este fato não deve ser motivo para pesos muito discrepantes com
relação a uma \textit{query}, visto que o teor do texto é o mesmo. A variante
denominada \textit{$\tf$ sub-linear} incorpora o logaritmo ao cálculo do $\tf$
para atenuar o crescimento do peso para valores crescentes de frequência
(equação \ref{eq:tfsub}).
\begin{equation}
\label{eq:tfsub}
\mathid{tf-sub}_{t,d} =
\begin{cases}
1+\log \tf_{t,d} & \text{, se}\ \tf_{t,d}>0 \\
0 & \text{, caso contrário}
\end{cases}
\end{equation}
Outras abordagens alternativas utilizam normalizações por diversas medidas:
comprimento do documento, comprimento médio dos documentos da coleção, $\tf$
máximo ou médio entre os $\tf$s de todos os termos do documento, entre outros.
\newpage
%\vspace{0.3cm}
\hspace{-1.4cm}
\textbf{Modelo de espaço vetorial}
Uma coleção de documentos pode ser representada por um conjunto de vetores,
sendo cada documento descrito como um vetor de termos do dicionário e os
respectivos pesos $\tfidf$ do documento. Tem-se como resultado uma visão
da coleção como uma matriz de dimensões $M \times N$, na qual as linhas
representam os $M$ termos do dicionário e as colunas os $N$ documentos da
coleção. Esta representação, conhecida como \textit{modelo de espaço vetorial},
é amplamente utilizada em soluções para recuperação da informação.
Assumindo que o vocabulário se restringe apenas aos termos para os quais os
valores de $\tf$ e $\idf$ foram calculados (tabelas \ref{tab:tf} e
\ref{tab:idf}), a coleção de documentos da figura \ref{fig:colecao} pode ser
representada no modelo de espaço vetorial pela matriz da tabela
\ref{tab:colecao_mev}.
\begin{table}[h!]
\caption{Representação da coleção no modelo de espaço vetorial}
\label{tab:colecao_mev}
\centering
\small
\begin{tabular}{| l | c | c | c | c | c | c | c | c |}
\hline
\multicolumn{9}{|c|}{$\boldsymbol{\tfidf_{t,d}}$}\\
\hline
\backslashbox{\textbf{\textit{Termo}}}
{\vspace{-0.2cm}\textbf{\textit{Doc}}}&
(1) & (2) & (3) & (4) & (5) & (6) & (7) & (8)\\
\hline
moren & $0.24$ & $0.12$ & $0$ & $0.12$ & $0$ & $0.12$ & $0.12$ & $0.12$ \\
\hline
roup & $1.8$ & $0$ & $0$ & $0$ & $0$ & $0$ & $0$ & $0$ \\
\hline
don & $1.2$ & $0$ & $0$ & $0$ & $0$ & $0$ & $0$ & $0.6$ \\
\hline
crav & $0$ & $0$ & $1.2$ & $0$ & $0$ & $0$ & $0$ & $0.6$ \\
\hline
canel & $0$ & $0.42$ & $0$ & $0$ & $0$ & $0.42$ & $0$ & $0.42$ \\
\hline
olh & $0$ & $1.8$ & $0$ & $1.2$ & $0$ & $0$ & $0$ & $0$ \\
\hline
ros & $0$ & $0$ & $0.42$ & $0$ & $0.84$ & $0$ & $0.84$ & $0$ \\
\hline
bob & $0$ & $0$ & $0$ & $0$ & $0.9$ & $0$ & $0$ & $0$ \\
\hline
\end{tabular}
\end{table}
%\newpage
\vspace{0.3cm}
\hspace{-1.4cm}
\textbf{Similaridade de cosseno}
Medir a similaridade entre dois documentos pode ser útil, por exemplo, para
disponibilizar o recurso ``mais do mesmo'', onde o usuário pede indicações
de itens semelhantes a um que ele já conhece. Porém, se a diferença entre os
vetores de pesos de dois documentos for usada como medida para avaliação de
similaridade entre os mesmos, pode acontecer de documentos com conteúdo similar
serem considerados diferentes simplesmente porque um é muito maior que o outro.
Para compensar o efeito do comprimento dos documentos utiliza-se como medida de
similaridade o cosseno do ângulo entre os vetores que os representam
($\theta$), apresentada na equação \ref{eq:sim-cos}. O numerador representa o
produto escalar dos dois vetores e o denominador a distância euclidiana entre
os mesmos.
\begin{equation}
\label{eq:sim-cos}
\mathid{sim}(d_1,d_2) = \cos(\theta)
= \frac{\vec{V(d_1)} \cdot \vec{V(d_2)}}
{|\vec{V(d_1)}| |\vec{V(d_2)}|}
\end{equation}
Dado um documento $d$, para encontrar os documentos de uma coleção que mais se
assemelham a este, basta encontrar aqueles com maior similaridade de cosseno
com $d$. Para tanto, pode-se calcular os valores $\mathid{sim}(d,d_i)$ entre
$d$ e os demais $d_i$ documentos da coleção e os maiores valores indicarão os
documentos mais semelhantes.
Considerando o fato de que \textit{queries}, assim como documentos, são um
conjunto me palavras, elas também podem ser representadas como vetores no
modelo de espaço vetorial. A tabela \ref{tab:queries_mev} apresenta as
consultas $q_1$, $q_2$ e $q_3$ neste espaço. Logo, a similaridade de cosseno
também pode ser utilizada em buscas, considerando que os documentos mais
similares a determinada \textit{query} são os mais relevantes para a mesma
(equação \ref{eq:tfidf_r_sim}).
\begin{equation}
\label{eq:tfidf_r_sim}
\mathid{R}_{d,q} = \mathid{sim}(d,q)