Fanfiction, Gráficos e PageRank

– http://colah.github.io/posts/2014-07-FFN-Graphs-Vis/
Postado em 6 de julho de 2014
matemática, fanfiction, gráficos, visualização

Em um site chamado fanfiction.net, os usuários escrevem milhões de histórias sobre as suas histórias favoritas. Eles têm opiniões diversas sobre eles. Eles adoram algumas histórias e odeiam as outras. As opiniões são barulhentas, e é difícil ver o quadro geral.
Com ferramentas de matemática e alguns softwares úteis, no entanto, podemos visualizar a estrutura subjacente.

Gráfico de Harry Potter Fanfiction, colorido por navio

Na próxima publicação, visualizaremos os fandoms de Harry Potter, Naruto e Crepúsculo em fanfiction.net. Também usaremos o algoritmo PageRank do Google para classificar as histórias e realizar uma filtragem colaborativa para fazer recomendações da história para os principais usuários do fanfiction.net.
Se você não estiver interessado nos detalhes, pode avançar para o seguinte:
Gráficos interativos: Harry Potter, Naruto, Crepúsculo
Rankings da história: Harry Potter, Naruto, Crepúsculo
Recomendações da história: Harry Potter, Naruto, Crepúsculo
E, claro, você pode espreitar abaixo para ver as belas fotos!
Introdução
Fanfiction é um fenômeno abrangente em que os fãs de diferentes obras escrevem histórias derivadas. Isso varia desde crianças pequenas a escrever as suas primeiras histórias sobre os seus personagens de ficção favoritos, para histórias de qualidade profissional escritas por aspirantes a romancistas. Muitas dessas histórias são postadas em sites onde são lidos por uma grande audiência e comentados. O maior desses sites é fanficiton.net.
A grande quantidade de fanfiction por aí é bastante surpreendente. O número total de histórias em fanfiction.net ultrapassa os seis milhões. As histórias de Harry Potter representam cerca de 14% destas, seguido por Naruto (cerca de 7%) e Crepúsculo (cerca de 4%) (FFN Research). A maioria dessas histórias tem muito pouco em termos de público, mas as histórias populares podem ter um grande número de leitores.
Algumas pesquisas foram feitas sobre a demografia de usuários de fanfiction.net e outros tópicos da FFN Research. Eles descobriram que 78% dos autores de fanfiction.net que se juntaram em 2010 identificaram-se como mulheres. Além disso, cerca de 80% dos usuários que revelam a sua idade estão entre 13 e 17 anos.
Muitas outras pesquisas e análises interessantes foram feitas nos blogs Destination: Toast! e TOASTYSTATS.
Métodos Básicos
Além de permitir que os usuários postem histórias que escrevem, fanfiction.net permite aos autores dar “favorito” as histórias que eles gostam. Olhando para quais são as histórias que tendem a ser favorecidas pelos mesmos usuários nos dá uma maneira de entender as conexões entre as histórias.

Para analisar isso, devemos coletar uma grande quantidade de metadados de fanfiction.net (“raspagem”). Observamos que na verdade não coletamos nenhum conteúdo significativo, apenas muitos dados sobre relacionamentos entre partes de conteúdo. Os termos de serviço da Fanfiction.net, como o autor os entende, permitem isso com algumas restrições:
“4 (E) Você concorda em não usar ou iniciar qualquer sistema automatizado, incluindo, sem limitação, “robôs”, “aranhas” ou “leitores off-line”, que acessa ao site de uma maneira que envia mais mensagens de solicitação ao FanFiction. Net que servidores da rede em um determinado período de tempo do que um humano pode produzir razoavelmente no mesmo período, usando um navegador web convencional. Não obstante o que precede, o FanFiction.Net concede aos operadores de mecanismos de busca públicos a permissão para usar aranhas para copiar materiais do site com o único propósito de, e exclusivamente, na medida necessária para a criação de índices pesquisáveis publicamente disponíveis dos materiais, mas não caches ou arquivos de tais materiais… ”
Para garantir o cumprimento desses termos, o autor criou intencionalmente uma limitação significativa da taxa no buscador e teve o cuidado de minimizar a carga colocada no fanfiction.net. Embora a questão da análise acadêmica não tenha sido mencionada, ela não foi excluída e os operadores da fanfiction.net não se opuseram anteriormente a trabalhos acadêmicos similares. Além disso, este trabalho poderia ser a pesquisa preliminar necessária para que alguém construísse um bom motor de busca de fanficiton.
Outra seção dos termos de serviço proíbe a coleta de informações pessoalmente identificáveis, que definem em incluir nomes de usuários. Como tal, descartei deliberadamente toda essa informação e não a uso. (No entanto, eu observo que vários mecanismos de pesquisa o fazem – tente pesquisar o nome de um autor em qualquer motor de busca principal). Eu me refiro a alguns nomes de usuários nesta publicação, mas isso foi feito inteiramente à mão.
Na coleta de dados, uma vez que estamos apenas a olhar para um subconjunto de usuários, é importante ter cuidado com o viés de amostragem. Por exemplo, se amostrarmos autores a partir dos favoritos de um autor particular, ou daqueles que contribuíram com histórias para uma comunidade, podemos ter uma perspectiva muito distorcida das histórias em fanfiction.net. O autor considerou uma série de abordagens, mas concluiu que a abordagem mais justa seria usar os autores das histórias mais vista em fanfiction.net. Esta é uma tendência, mas deve dirigir-nos para as partes mais interessantes e importantes do gráfico.
Construção do gráfico
Um gráfico, no contexto da matemática, é uma coleção de objetos chamados vértices unidos por conexões chamadas bordas. Por exemplo, as cidades podem ser consideradas como vértices um gráfico conectado por auto-estradas e estradas diferentes (as bordas).

Um exemplo de um gráfico (da Wikipedia)
Um gráfico ponderado é um gráfico onde algumas arestas são “mais fortes” do que outras. Por exemplo, algumas cidades estão conectadas por rodovias gigantes de 6 pistas, enquanto outras estão conectadas por estradas de cascalho. Os pesos maiores representam conexões mais fortes e os pesos menores representam os mais fracos. Um peso de zero é o mesmo que não ter nenhuma conexão.
Estaremos a interpretar um fanfiction como um gráfico ponderado, onde as bordas representam uma “conexão” entre as histórias. Nós estaremos usando como nossos os pesos para bordas a probabilidade de alguém gostar de ambas as histórias, dado que elas gostam de uma. Ou seja, Wa,b= onde Fs é o usuário que favoreceu a história s.
Existem muitas outras possibilidades, algumas resultando em gráficos direcionados:
– (dirigido) A probabilidade de alguém preferir a dará favorito b: Wa → b =
– A probabilidade de que alguém que alguém goste de a dê favorito b vezes a probabilidade de que alguém que dê favorito b dão favorito a: Wa, b =
– Quanto menor a probabilidade de alguém que preferir a preferir b e a probabilidade de alguém que prefira b prefira a:
A nossa experiência foi que não importava muito os resultados, para grandes gráficos.
(Vale a pena notar que muitos destes poderiam facilmente generalizar para bordas de maior dimensão para um hiper-gráfico ponderado.)
Na nossa definição de peso selecionada, Wa, b =,damos igual peso às preferências de todos os usuários. Mas há muita variação entre os usuários: alguns favoritos tudo sob o sol, enquanto outras histórias muito seletivamente favoritas que eles realmente gostam. Se darmos aos usuários que contaram com milhares de histórias, o mesmo peso que os usuários que preferem dez, os usuários que gostaram de milhares dominam tudo (e não são um sinal muito bom).
Em vez disso, damos a cada usuário u um peso de onde n(u) denota o número de histórias que u gostou. Isso resulta em uma medida no espaço de usuários, , e a equação para os nossos pesos se torna .
Aplicando essas técnicas a algumas das principais histórias de Harry Potter, obtemos o seguinte gráfico (usando graphviz):

Pequeno gráfico rotulado das histórias de Harry Potter

Com uma pequena quantidade de investigação, é fácil entender uma grande parte da estrutura do gráfico. Por exemplo, no lado inferior direito, há uma camarilha triangular.
Uma rápida pesquisa no Google revela que essa camarilha triangular consiste no “Dark Prince Trilogy” por Kurinoone. As histórias estão mais fortemente ligadas ao seu predecessor/sucessor imediato do que o par separado por uma história são uma a outra.
Exibições gráficas grandes para Harry Potter
Se usarmos ferramentas diferentes, podemos visualizar gráficos muito maiores.
Consideramos as 2,000 histórias mais populares de Harry Potter e os seus autores. Com base nas listas favoritas do autor, construímos um gráfico ponderado, com as histórias como nós (os pesos das bordas são calculados como acima).
Em seguida, podamos as bordas do gráfico, mantendo os 8.000 bordos mais bem ponderados. Também podamos os nós, mantendo apenas aqueles com pelo menos uma borda. Isso nos deixa com um gráfico de 1.623 nós e 8.000 bordas.
Em seguida, carregamos esse gráfico na ferramenta de visualização de gráficos gephi. Nós colocamos o gráfico usando os algoritmos de layout OpenOrd e ForceAtlas2. (OpenOrd foi particularmente bom na extração de conjuntos. Além disso, isso era em grande parte uma questão de gosto estético).

Gráfico de Harry Potter Fanfiction (top 1.623 histórias)

Podemos ver muita estrutura interessante neste gráfico: há muitos conjuntos, alguns mais conectados do que outros.
Uma primeira hipótese pode ser que alguns desses conjuntos são causados pela linguagem. Como se mostra, este é o caso:

Gráfico de Harry Potter Fanfiction, colorido pelo idioma

Outra causa de conjuntos pode ser o “ship” (parceria romântica da história). Muitos leitores têm uma forte lealdade a um ship particular – por exemplo, eles podem sentir muito que Harry e Hermione deveriam estar juntos.

Gráfico de Harry Potter Fanfiction, colorido por “ship”

(Nota: Os “ships” são inferidos de resumos de histórias de tags. HP = Harry Potter, HG = Hermione Granger, GW = Ginny Weasley, DM = Draco Malfoy, SS = Severus Snape e LV = Lord Voldemort.)
Um ponto interessante é que, de longe, o ship mais difuso é HP/GW. Parece provável que isso seja porque é o ship que vemos no Harry Potter, e tantas histórias que não estão focadas no padrão de romance e que os leitores não alinhados são mais tolerantes.
Um padrão impressionante em fanfiction é que uma fração maciça de histórias são emparelhamentos masculinos/masculinos. Tais histórias são freqüentemente referidas como “barra”.

Gráfico de Harry Potter Fanfiction, colorido por slash

Muitas histórias incluem uma etiqueta de slash no resumo. Algumas outras histórias marcam-se como “não-slash”.
Um padrão interessante é que as histórias marcadas como “no-slash” se concentram em partes da borda de histórias de barra (slash). Um possível motivo pode ser que os autores escrevam histórias que, de um olhar para o resumo ou lista de personagens, pareçam uma barra (por exemplo, uma história sobre Snape a ensinar Harry, ou Draco e Harry como amigos) sentem a necessidade de indicar explicitamente que esse não é o tema da sua história.
A predisposição do conjunto francês para histórias “slash” é interessante, mas o conjunto é tão pequeno que hesito em ler qualquer coisa nele.
Você também pode explorar um gráfico interativo da fanfiction de Harry Potter.
Grandes Visualizations de Gráfico para Outros fandoms
Claro, podemos aplicar exatamente os mesmos truques para outros fandoms.
Naruto
Por exemplo, Naruto é o segundo maior fandom. Aqui está um gráfico dele:

Gráfico do top da fanficção de Naruto (1.123 nós e 4.000 bordas)

Podemos ver novamente os idiomas:

Gráfico de top fanfiction de Naruto, colorido por idioma

E também para ships:

Gráfico da fanficção de Naruto, colorida por ship

Crepúsculo
E, novamente, podemos representar as principais histórias do Crepúsculo:

Gráfico de top fanficção Twilight (1.031 nós, 5,00 bordas)

Podemos colorir por idioma:

Gráfico do top da fanficção de Crepúsculo, colorido por idioma

E por ship:

Gráfico da fanficção Twilight superior, colorida por ship

Uma coisa que parece bastante surpreendente, sem conhecimento interno do fandom, é a falta de histórias em que o emparelhamento envolve Jacob. Em uma inspeção adicional, achamos que há histórias como essa no fanfiction.net, mas elas não estão entre as mais vistas e qualificadas. Talvez esse emparelhamento prefira outros sites? Eu adoraria comentários de qualquer um com uma visão sobre isso.
Você também pode explorar um gráfico interativo da fanficção de Naruto e da fanficção de Crepúsculo.
Ranking da página
Quais são os melhores fanfics do fanfiction.net? Como podemos identificá-los?
Uma abordagem ingênua seria selecionar as histórias mais favoritas ou qualificadas. Mas a qualidade de gosto das pessoas varia. Uma abordagem mais sofisticada é o algoritmo PageRank do Google, que se usa para determinar que páginas são de alta qualidade.
Em um voto normal dá igual peso a cada eleitor. Mas alguns eleitores estão melhor qualificados para decidir do que outros. No PageRank, recalculamos os votos repetidas vezes, dando a cada voto de “pessoa” um peso baseado em quantos votos receberam no passo anterior.
No caso da Internet, interpretamos um site que leva a outro site, na medida em que esse site vota para aquele ao qual ele redirige. Da mesma forma, podemos aplicá-lo à fanfiction interpretando a história A como “votando” a uma história B com um peso da probabilidade de um usuário que gosta de A também gosta de B.

As principais histórias de Harry Potter por PageRank:
1. Realizações (16.4)
2. Harry Potter and the Nightmares of Futures Past (15.7)
3. Make A Wish (14.0)
4. Poison Pen (11.7)
5. Moldar e Mudar (11.5)
6. Mais
Histórias principais de Naruto por PageRank:
1. Equipe 8 (11.1)
2. Naruto: Myoushuu no Fuuin (6.42)
3. É por uma boa causa, eu juro! (5.57)
4. O selado Kunai (5.24)
5. Dia do exame de Chunin (5.14)
6. Mais

As principais histórias de Crepúsculo por PageRank:
1. A Bênção e a Maldição (18.6)
2. Tropico de Virgem (15,0)
3. Um começo áspero (12.7)
4. Criatura do hábito (12.6)
5. O Plano (10.2)
6. Mais

Uma coisa pura que podemos fazer é dar aos nós nos nossos gráficos um tamanho baseado no seu PageRank. (Nós também podemos pintar nós com base nos três primeiros componentes da decomposição do valor singular da matriz adjacente).

Recomendação da história
Há algo que apenas está a implorar para ser feito, neste momento: recomendações da história. Dado o nosso conhecimento sobre as histórias que muitos usuários gostam, podemos recomendar outras histórias que eles provavelmente gostariam?
Esse problema chama-se filtragem colaborativa e é uma área bem estabelecida. Infelizmente, não é algo com o que tenho muita compreensão, então tomei uma abordagem relativamente ingênua: somar as preferências de todos os usuários, ponderada pela semelhança das suas preferências com o usuário que você está tentar prever.
Especificamente, nós damos cada história, s, um ranking Ru(s), para um usuário u. Se a classificação é alta, achamos que é provável que você goste de s.

onde Fs é o conjunto de usuários que favoreceu s e S(u) são as histórias favoritas pelo usuário.
Por exemplo, podemos fazer recomendações para S’TarKan, o autor da mais popular história de Harry Potter em fanfiction.net:
– Aprender a respirar (1.459)
– Tomando o controle (1.383)
– Compatível com versões anteriores (1.381)
– Harry Potter and the Nightmares of Futures Past (1.377)
– Harry Potter e a Dívida do Destino (1.218)
– …
A * indica que esta já é uma das histórias favoritas dos usuários ou uma de suas próprias histórias. Podemos excluir as suas histórias favoritas e as suas próprias histórias:
– Peça um desejo (0.949)
– Uma comédia de humor negro (0,750)
– Oh Deus, outra vez não! (0,679)
– Realizações (0.642)
– Senhor de Caer Azkaban (0.635)
– …
Todas essas são histórias muito populares. Não é muito útil para S’TarKan se recomendarmos as suas histórias extremamente populares que quase certamente já viram antes. Como tal, é interessante penalizar a popularidade das histórias.
Considere . Quando k=0, é a nossa classificação original. Quando k=1, normaliza totalmente as histórias contra a popularidade. E no meio, penaliza a popularidade em graus variados. Se definimos k=0,7, obtemos estas recomendações:
– Insanidade (0.034)
– Sombra da Serpente (0.032)
– A Pechincha (0.031)
– Pecadores (0.029)
– Harry Potter e a Ordem da Fênix (0.029)
– …
Você pode pensar nelas como histórias inesperadamente populares entre usuários semelhantes. Os usuários semelhantes gostam delas muito mais do que os usuários aleatórios como eles. (Embora, talvez 0,7 seja um pouco muito extremo.)
Tem curiosidade sobre o que este algoritmo le recomendaria? Se você é um autor de fanfiction popular, você pode estar nas minhas recomendações para os principais usuários de Harry Potter, Naruto ou Crepúsculo.
Uma vez que os meus scripts não podem ver o nome do seu autor, cumprindo os termos de serviço do fanfiction.net, você precisará de conhecer o seu ID de autor. Para obtê-lo, acesse a sua página de perfil do fanfiction.net e veja o URL. Será da forma: http://fanfiction.net/u/author_ID/…. Em seguida, procure a sua identificação de autor no arquivo!
Tenho certeza de que alguém poderia fazer muito melhor se quisessem envolver-se um pouco mais nisso. 🙂

Conclusão
À luz de tudo isso, gostaria de refletir sobre algumas coisas.
Big Data: Um ano atrás, eu era muito desconsidente de “Big Data” como uma palavra-chave. Principalmente, parece ser tirada por pessoas de negócios que realmente não entendem muito. Mas uma coisa que eu aprendi nas explorações de dados como este e a trabalhar na aprendizagem de máquinas, é que existe algo muito poderoso sobre as quantidades maiores de dados. Há algo muito qualitativamente diferente. Os dados de fanfiction que usei foram realmente bastante pequenos, apenas algumas centenas de usuários, por causa da limitação da quantidade que eu baixei, mas acho que ainda demonstra o tipo de coisas que se tornam possíveis, pois você possui maiores quantidades de dados. (Para ser honesto, um exemplo muito mais convincente é o progresso que foi feito na visão por computador usando o ImageNet… Mas isto ainda influenciou as minhas opiniões.)
Humanidades digitais: as humanidades digitais também parecem ser uma palavra-chave. Mas espero que isso forneça um exemplo simples do poder que pode vir ao aplicar um pouco de matemática e ciência da computação aos problemas das humanidades.
Metadados e Privacidade: neste ensaio, analisamos histórias ao analisar se elas eram favorecidas pelos mesmos usuários. Existe um “dual” natural para isso: analisando usuários observando se eles gostaram das mesmas histórias. Isso nos proporcionaria um gráfico de conexões entre usuários e nos permitiria encontrar conjuntos de usuários. Mas e se você usar outras formas de metadados? Por exemplo, agora sabemos que o governo dos EUA tem metadados sobre quem telefona para quem. Parece muito provável que muitas empresas e governos tenham informações sobre onde está o seu telefone como uma função do tempo. Tudo isso pode construir um gráfico da sociedade. Eu não consigo entender o quanto você deve aprender sobre alguém com isso. (E, como é fácil, mal interpretar.)
Sites de Fanfiction: acho que existe uma grande quantidade de potencial para sites de fanfiction para servir melhor os seus usuários com base nas técnicas descritas aqui. Eu ficaria realmente emocionado por ver fanfiction.net ou Archive Of Our Own a adotar algumas dessas idéias. Imagine ser capaz de listar um punhado de histórias em alguma categoria em que você está interessado e descobrir outras? Ou obter boas recomendações? As idéias são bastante simples, uma vez que você pensa nelas. Eu ficaria muito feliz em falar com os grupos por trás de diferentes sites de fanfiction e fornecer alguma ajuda ou compartilhar um código de exemplo.
Aprendizagem Profunda e PNL: Recentemente, tem havido alguns resultados muito legais na aplicação da Aprendizagem Profunda ao Processamento de Linguagem Natural. Seria preciso muitos mais dados dos que eu colecionei, e seria preciso mais esforço, mas eu aposto que alguém poderia fazer coisas realmente interessantes aqui.
T-SNE: a integração de vizinhança estocástica distribuída em t, é um algoritmo para visualizar a estrutura de dados de alta dimensão. Seria uma abordagem muito mais simples para entender a estrutura da fanfiction do que a baseada num gráfico que usei aqui e, provavelmente, daria resultados muito melhores. Se eu estivesse a começar novamente, eu usaria isso.
Recursos: Em princípio, eu realmente gostaria de compartilhar o meu código e facilitar as pessoas para replicar o trabalho que descrevi aqui. No entanto, acho que seria muito grosseiro com a fanfiction.net porque isso poderia resultar em muitas pessoas pesquisando no seu site, e parece que muitos provavelmente removeriam a minha taxa limitadora. Uma alternativa seria compartilhar os meus metadados extraídos, mas, novamente, acho que seria muito grosseiro fazer isso sem a permissão da fanfiction.net e possivelmente uma violação dos seus termos de serviço. Então, no final, não estou a compartilhar nenhum recurso. Dito isto, tudo isso pode ser feito com bastante facilidade.
(Esta publicação é uma experiência divertida feita principalmente para a diversão. Eu ficaria encantado de ouvir os seus comentários e pensamentos: você pode comentar no fim ou na metade. Por erros de digitação, erros técnicos ou esclarecimentos que você gostaria de ver adicionados, você está encorajado para fazer um pedido no github. Se você gostou desta postagem, você pode considerar inscrever-se no meu feed RSS.)
Reconhecimentos
Obrigado a Eliana Lorch, Taren Stinebrickner-Kauffman, Mary Becica e Jacob Steinhardt pelos seus comentários e encorajamentos.

Sobre o autor

Sara Filipa

Comentar

por: Sara Filipa

Posts recentes

Comentários

Arquivos

Categorias

Meta