Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

19
Antoine Amend (Barclays) Andrew Morgan (ByteSumo Ltd) STORY DEDUPLICATION AND MUTATION #EUstr9

Transcript of Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Page 1: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Antoine Amend (Barclays)Andrew Morgan (ByteSumo Ltd)

STORY DEDUPLICATION AND MUTATION

#EUstr9

Page 2: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Challenge

2#EUstr9

How do we studyevolving geopolitics,

as it happens, using global news?

Page 3: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

It raises questions

3#EUstr9

How to use global news as a source?How do we work at this scale?

What design patterns are needed?What specialist techniques do we need?

How do we trace evolving storylines?

Page 4: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

News Data: GDELT• TLDR: It’s big• global news feed, published every 15min• ~63k news publishing websites scraped• ~60 Languages• ~400k to ~800k articles / month

4#EUstr9

http://gdeltproject.orghttp://data.gdeltproject.org/gdeltv2/masterfilelist.txt

Page 5: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

The Data

5#EUstr9

GKG pipeline emits URLs, tags, sentiments. But not full text.All languages ~15k articles each 15 minutes.

This chart highlights the global media machine’s heartbeat, as news articles are published in all languages, globally.

It’s a very regular pattern.

Notice clearly weekday vs weekend volumes. Spikes drive NFRs.

Page 6: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Who are we?

6#EUstr9

Antoine Amend

Andrew Morgan

Matthew Hallett

David George

We are engineers doing big data science.

We wrote a text book to teach others about data science at scale.

For it, we wrote lots of new code, much not available elsewhere.

We open-sourced all our code.

Page 7: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Our Approach

7#EUstr9

Source near real-time URLs from GDELT

Scrape article text from source

De-duplicate articles

Use “Random Indexing” to build stable features

Streaming K-Means to build top Stories

Track Story Mutation, to trace Evolving Geopolitics

Interpret the analysis

Page 8: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Ingestion pipelineNiFi + Kafka + Spark Streaming

8#EUstr9

Page 9: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Indexing using SimhashThe secret sauce

9#EUstr9

Page 10: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Deduplication GraphDetecting near duplicates

10#EUstr9

21

2

0

RDD[String] RDD[Hash,String]

RDD[Int,String]RDD[Int,String]RDD[Int,String]RDD[Int,String]

RDD[(Int, Iterable[String])]

RDD[(String, String, Int)]RDD[(String, String, Int)]RDD[(String, String, Int)]RDD[(String, String, Int)]

Expand&

Conquer

Page 11: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Dimensionality reductionHashing + Random Indexing = stable streaming

11#EUstr9

• TF-IDF is commonly used as a feature vector• Oxford dictionary contains 170K words• We need dimensionality reduction!

– PCA • Computationally intensive • Not fit for streaming, where future words are unknown

– Hashing TF• Fixed number of features (220 by default), fit for streaming• Collisions leads to dramatic overestimates

– Random Indexing• Preserved distance measure (as per Johnson-Lindenstrauss Lemma)• Combined with Hashing TF, guarantees fixed number of dimensions embedded in lower vector space

https://github.com/derrickburns/generalized-kmeans-clusteringhttps://www.sics.se/~mange/papers/RI_intro.pdf

Page 12: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Streaming KmeansRemember the past, drift towards the future

12#EUstr9

• Defining k = 10 (number of topics at a given time)• Defining forgetfulness parameter = 1h

– Infinite decay: we remember all the past, our code is more defensive towards fake news– Zero decay: our clusters are re-defined at every batch, we can’t track stories over time

• Cluster centers adjust to new articles, allowing stories to drift over time

Page 13: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Story driftTracking stories over time

13#EUstr9

• Index each article + simhash + predicted cluster• Detected Paris attack articles on Nov. 15’ at 9:30pm• Story burst from the [TERROR / VIOLENCE] topic• We track GDELT metadata over time• We ensure homogeneous clusters (RI embedding)

Page 14: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

14#EUstr9

Story drift:Tracking the Paris attacks

Page 15: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Recycling dying clustersEvolving geopolitics

15#EUstr9

• Searching for “paris attack” shows additional clusters after 1h– Spark streaming started to recycle dying clusters– All eyes are now on breaking news, ignoring the least popular topics

• Topic modelling (LDA) exhibits different “flavors” of a same event– Main cluster stays focused on the fact– Second most important is around social media – Third one is about politics and tributes paid

Page 16: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Connecting storiesBranching / Merging model

16#EUstr9

If we observe many articles at a time t that belonged to a cluster S and now belong to a cluster S’ at a time t+dt, then S migrated to S’ in dt time.

• We store our feature vectors alongside the articles• We predict outdated vectors against an up-to-date model• We save these connections as Edges and explore branching as a weighted directed graph

Page 17: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Watching the world unfoldA fragile equilibrium

17#EUstr9

• Before the attack, the world fitted into 10 distinct topics – The attack recycled dying clusters and created new flavors of a same event– The extra coverage on Paris pushed other topics upwards, resulting in this scatter shape

• The Paris attack perturbed an equilibrium, reshaped the vision of the world– Will we reach a new equilibrium after pulling those strings so badly?– Perturbative theory, studying cycles and harmonics?– Will the world ever heal from that “wound”? What if we increase forgetfulness?

Page 18: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Your Challenge

18#EUstr9

Now we can createstable geopolitical signals

how will we use this to better predict?

Page 19: Story Deduplication and Mutation with Antoine Amend and Andrew Morgan

Thanks!

19#EUstr9

Antoine Amend

Andrew Morgan

Matthew Hallett

David George

All the code needed to try this at home is here:

https://github.com/PacktPublishing/Mastering-Spark-for-Data-Science