Criar rede de coocorrência com Matlab

Dec 27 2022
Dra. Verónica Espinoza, 2022. See More

Dra. Verónica Espinoza, 2022. See More

Rede do autor

O MATLAB permite manipulações de matrizes, plotagem de funções e dados, implementação de algoritmos, criação de interfaces de usuário e interface com programas escritos em outras linguagens [1]

Dado um corpus de documentos, uma rede de coocorrência é um grafo não direcionado, com nós correspondendo a palavras únicas em um vocabulário e arestas correspondendo à frequência de palavras coocorrendo em um documento. Use redes de coocorrência para visualizar e extrair informações das relações entre palavras em um corpus de documentos. Por exemplo, você pode usar uma rede de coocorrência para descobrir quais palavras geralmente aparecem com uma palavra especificada [2].

Arquivo usado para este exemplo

Do importador Twitter NodeXL [3, 4] extraí 1000 tweets usando a consulta #neuroscience . O arquivo com o qual trabalhei os tweets no Matlab dei o nome de neuroscience.xlsx conforme abaixo.

Figura 1.- arquivo neuroscience.xls (preparado pelo autor)

Você pode preparar seu arquivo Excel como mostrado acima não apenas com informações do Twitter, mas com informações de outras redes sociais, como comentários do Tik Toc, Instagram, Reddit ou qualquer outro texto que venha de outras fontes.

Vamos começar!

Importar dados de texto

Extraia os dados de texto no arquivo neuroscience.xlsxusando readtable. Leia os dados usando a readtablefunção e extraia os dados de texto da TextDatacoluna. (Para este exemplo, foi usado o Matlab versão R2022a) .

filename = "neuroscience.xlsx";
tbl = readtable(filename,'TextType','string');
textData = tbl.TextData;

textData(1:5)

      
                

Torne o texto tokenizado, converta-o em minúsculas e remova as palavras de parada.

documents = tokenizedDocument(textData);
documents = lower(documents);
documents = removeStopWords(documents);

bag = bagOfWords(documents);
counts = bag.Counts;

cooccurrence = counts.'*counts;

G = graph(cooccurrence,bag.Vocabulary,'omitselfloops');

LWidths = 5*G.Edges.Weight/max(G.Edges.Weight);

plot(G,'LineWidth',LWidths)
title("Co-occurence Network #neuroscience")

      
                
Figure 2. #neuroscience network (by the author)

word = "neurons"

      
                
idx = find(bag.Vocabulary == word); nbrs = neighbors(G,idx); bag.Vocabulary(nbrs)'

H = subgraph(G,[idx; nbrs]);

LWidths = 5*H.Edges.Weight/max(H.Edges.Weight);
plot(H,'LineWidth',LWidths)
title("Co-occurence Network - Word: """ + word + """");

      
                
Figure 3. “neurons” subgraph (by the author).

Figura 4. Exemplo de subgrafo “memória” usando a função vizinhos (do autor).

Abaixo estão mais exemplos de subgráficos usando a função vizinhos da consulta #neuroscience (veja detalhes acima)

As palavras para a elaboração desses subgráficos foram: “memória”, “vias”, “droga”, “arterial”, “córtex” e “serotonina”.

Figura 5. Galeria de subgráficos usando a função vizinhos da consulta #neuroscience (do autor).

Obrigado por ler

Meu Twitter

REFERÊNCIAS

1. MATLAB. In: Wikipédia [Internet]. 2022 [citado em 2022, 26 de dezembro]. Disponível a partir de:https://en.wikipedia.org/w/index.php?title=MATLAB&oldid=1128376172

2. Criar rede de coocorrência — MATLAB & Simulink — MathWorks [Internet]. [citado em 25 de dezembro de 2022]. Disponível a partir de:https://es.mathworks.com/help/textanalytics/ug/create-co-occurrence-network.html

3. Verónica Dr. NodeXL: A análise de rede pode ser simplificada! [Internet]. Médio. 2022 [citado em 2022, 26 de dezembro]. Disponível a partir de:https:///@vespinozag/nodexl-network-analysis-can-be-made-simpler-876ce07d46f2

4. Fundação de pesquisa de mídia social [Internet]. Fundação de pesquisa de mídia social. [citado em 26 de dezembro de 2022]. Disponível a partir de:https://www.smrfoundation.org/