nickfrenchy
nickfrenchy

Reputation: 283

Show levels of interactions between movie characters with Neo4j

I am working on a little project to learn more about graph analytics. I have dialogs from the TV show Archer to which I added a speaker fields and a speaking tofield. To show the level of interaction, I am using a basic wordcount.

My data looks like this:

TEXT           Speaker    Speaking_to     Wordcount
Bla bla        Archer     Lana            2
Bla            Archer     Lana, Cyril     1
Bla bla bla    Lana       Archer, Cyril   3

I would use the wordcount sums between every combination of speaker to speaking_to to show the strength of the characters interaction between each other.

How would you proceed in Neo4j?
How to you model the cases where I have multiple speaking_to characters? I want all my nodes to be individual characters and not groups.

Thank you,

Upvotes: 0

Views: 52

Answers (1)

stdob--
stdob--

Reputation: 29172

Model:

  • two types of nodes - the person and the text
  • two types of relationships - who speaks and to whom appeals

enter image description here

MERGE (A:Person {name:'Archer'}) 
MERGE (L:Person {name:'Lana'}) 
MERGE (C:Person {name:'Cyril'})

MERGE (T1:Text {name: 'Bla bla', wc: 2}) 
MERGE (T2:Text {name: 'Bla', wc: 1}) 
MERGE (T3:Text {name: 'Bla bla bla', wc: 3})

MERGE (A)-[:Speaking]->(T1) 
  MERGE (T1)-[:Speaking_to]->(L)
MERGE (A)-[:Speaking]->(T2)
  MERGE (T2)-[:Speaking_to]->(C)
  MERGE (T2)-[:Speaking_to]->(C)
MERGE (L)-[:Speaking]->(T3)
  MERGE (T3)-[:Speaking_to]->(A)
  MERGE (T3)-[:Speaking_to]->(C)

Strength of directional interaction:

MATCH (A:Person)-[:Speaking]->(S:Text)-[:Speaking_to]->(P:Person)
  RETURN A.name, P.name, sum(S.wc) as wordcount 
  ORDER BY wordcount DESC

Upvotes: 1

Related Questions