@@ -30,11 +31,12 @@
- [Development](#development)
- [Structure](#structure)
- [Adding new service](#adding-new-service)
- - [Current state](#current-state)
+ - [EDA](#eda)
- [Distribution of political positions overall](#distribution-of-political-positions-overall)
- [Distribution of political positions in the USA](#distribution-of-political-positions-in-the-usa)
- [Distribution of political positions in the UK](#distribution-of-political-positions-in-the-uk)
- [Bonus: Distribution of political positions of sources which require VPN](#bonus-distribution-of-political-positions-of-sources-which-require-vpn)
+ - [Current state](#current-state)
## Overview
@@ -90,6 +92,8 @@ A NATS message queue which is used for S2S communication.
## Deploy
The initial version is available at https://data-wrangling-and-visualisation.github.io/DeBias/
+The EDA is available at https://data-wrangling-and-visualisation.github.io/DeBias/
+The draft Javascript visualization is available at https://debias.inno.dartt0n.ru/
### Using external S3 provider
@@ -181,7 +185,7 @@ To add new service:
-## Current state
+## EDA
We have collected 38 sources of news from USA and UK and found out their political positions.
@@ -201,4 +205,30 @@ It seems left parties are indeed more liberal.
We have parsed several news articles using python and prepared a deployment describing general trends in these articles.
-The deployment can be found on [Github Pages](https://data-wrangling-and-visualisation.github.io/DeBias/)
\ No newline at end of file
+The deployment can be found on [Github Pages](https://data-wrangling-and-visualisation.github.io/DeBias/)
+
+
+## Current state
+
+We have added a draft of our frontend visualization. It can be viewed in the **frontend** directory, in the **index.html** file.
+
+For now we have not created connection with the backend, however the file respresent our vision of the final visualization: graph of connections between keywords, their corresponding themes and number of occurence.
+
+The file can be opened as an html file, or py running the following script from the **frontend** directory:
+
+```python
+python3 -m http.server
+```
+
+We are also incorporating NLP into data analysis. We perform the following operations on the extracted websites data:
+
+- Extract names entities from text: helps identify the most important keywords (people's names, countries, organizations). Performed with spacy.
+- Find themes in the data: identify general theme of the text (politics, economics, etc.). Performed with transformers.
+
+The collected keywords are then combined for future analysis.
+
+Example of NLP preprocessing can be found in **debias/processor directory**, in **processor.py** file.
+
+Deploy can be found at: https://debias.inno.dartt0n.ru/
+
+We have added the functionality to filter by date, category, number of keyword occurences. The number of shown nodes can also be limited.
diff --git a/experiments/frontend/index.html b/experiments/frontend/index.html
new file mode 100644
index 0000000..6cef4af
--- /dev/null
+++ b/experiments/frontend/index.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+ News Article Keyword Network by Date
+
+
+
+
+
+
+
+
+
Date Selection
+
+
+
+
Filter by Category
+
+
+
+
+
+
+
Filter by Popularity
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
No data available for the selected date and filters.
+
+
+
+
Loading data...
+
+
+
+
+
+
\ No newline at end of file
diff --git a/experiments/frontend/parsed_news.json b/experiments/frontend/parsed_news.json
new file mode 100644
index 0000000..38dd0d5
--- /dev/null
+++ b/experiments/frontend/parsed_news.json
@@ -0,0 +1,7523 @@
+[
+ {
+ "title": "Hamas rejects Biden's optimism over ceasefire deal | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Joe Bidens",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Biden",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "US",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Joe Bidens",
+ "Hamas",
+ "Biden",
+ "World News",
+ "Sky News",
+ "Lebanon",
+ "US"
+ ],
+ "snippet": "Hamas's spokesman in Lebanon tells Sky News the US president is just trying to \"keep everything sounding positive in the media\" and that Israeli Prime Minister Benjamin Netanyahu has made things \"more...",
+ "source_file": "179b926ff00e34588d53fbcadeb42ee09c593219874ad22aef2cf69adaebc269/850e4065c41ec977e7a73ab3935c916a05b2daa0ff303f8d11c37f6161132e0b.html"
+ },
+ {
+ "title": "Israel-Hamas war: Rishi Sunak fails to endorse calls for ceasefire | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Rishi Sunak",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Stephen Flynn",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "The Labour Party",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Rishi Sunak",
+ "Stephen Flynn",
+ "Politics News",
+ "Sky News",
+ "The Labour Party",
+ "Hamas",
+ "Israel",
+ "Gaza"
+ ],
+ "snippet": "The Labour Party has also rejected calls for a ceasefire, arguing that Israel has the \"right to defend itself\" and to do what is needed to recover the 199 hostages held captive in Gaza. Political repo...",
+ "source_file": "1f569eee2b31d86e556d2d9ee6ad2a4181535a0adb43afdb924bfce2189100f7/b835c8020cbd752e0fa75bc73f8e0b5bc162fd76cb5531d5be289fe8a450aadf.html"
+ },
+ {
+ "title": "Kamala Harris tells Benjamin Netanyahu she will 'not be silent' over suffering in Gaza while stressing Israel's 'right to defend itself' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Kamala Harris",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Joe Biden",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Claire Gilbody Dickerson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Democratic Party",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Kamala Harris",
+ "Benjamin Netanyahu",
+ "Joe Biden",
+ "Claire Gilbody Dickerson",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Democratic Party"
+ ],
+ "snippet": "The likely Democratic presidential nominee appeared more strident than Joe Biden when it came to expressing her views on Israel's war on Hamas in Gaza. By Claire Gilbody Dickerson, news reporter Frida...",
+ "source_file": "1e64a5f019427d3914eb74f395970a52b5953de876139c7081b9bfb35ca2c225/ca58af85d131042264a83e1449e65830ca2fa6eacb3498379ca480fd969e4611.html"
+ },
+ {
+ "title": "Held in captivity: Faces of hostages taken on 7 October who still haven't returned home to Israel | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamasfreed",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.32
+ }
+ ],
+ "keywords": [
+ "Hamasfreed",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "UK",
+ "Gaza",
+ "politics"
+ ],
+ "snippet": "With prisoner swaps underway between Hamas and Israel, the fates of almost 80 hostages taken by Hamas during the attack on 7 October 2023 are still unknown. Saturday 1 February 2025 07:23, UK With a r...",
+ "source_file": "b3b4d7d94d55a4d353c018cc6991af4247fe2d61d5ecfbc6bf53990e43f93011/418cdd7db44b5118a310442c6d4a45cfb82287485be7284f75461c3809b81b3e.html"
+ },
+ {
+ "title": "Trevor Phillips | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Trevor Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Trevor",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Webber Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sophy Ridges",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Royal Television Society",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Times",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Trevor Phillips",
+ "Trevor",
+ "Webber Phillips",
+ "Sky News",
+ "Sophy Ridges",
+ "Royal Television Society",
+ "Times",
+ "UK"
+ ],
+ "snippet": "Trevor presents Sunday Morning from 8:30am each weekend. He previously presented Sky News’ Sunday politics show, covering for Sophy Ridge’s maternity leave in 2021, when he became the first black host...",
+ "source_file": "eacb8a75aefdcd11dd40234822a0a1213dfdf17b46bed9e339c3387310edcf84/584b3ed169d931bb2877d80909dcbb082a11fe0f31e7e16eff22b46384356fd6.html"
+ },
+ {
+ "title": "Pagers explode across Lebanon 'killing 9' and 'injuring thousands' - including Hezbollah members | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hassan Nasrallah",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Firas Abiad",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollahsaid",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hassan Nasrallah",
+ "Firas Abiad",
+ "World News",
+ "Sky News",
+ "Hezbollah",
+ "Hezbollahsaid",
+ "Lebanon",
+ "Israel"
+ ],
+ "snippet": "Hezbollah leader Hassan Nasrallah previously warned the group's members not to carry mobile phones alleging Israel could use them to track their movements. Wednesday 18 September 2024 06:17, UK Please...",
+ "source_file": "e9c5cbaae21f7993fc27afebed32c3b575b4c563267c78f22a9367b4a7dbe0df/4bef44dd0ef43a403030e2bb7a4291cb5a28521cdeb28708a7103375651f5c85.html"
+ },
+ {
+ "title": "Arrest warrants issued for Israeli PM Netanyahu and former defence secretary Gallant and senior Hamas commander over alleged war crimes | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Gallant",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Mohammed Deif",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Arrest",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Yoav Gallant",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Gallant",
+ "Mohammed Deif",
+ "Arrest",
+ "Benjamin Netanyahu",
+ "Yoav Gallant",
+ "Hamas",
+ "World News",
+ "Sky News"
+ ],
+ "snippet": "An arrest warrant was also issued for Hamas leader Mohammed Deif, whom Israel claims to have killed earlier this year. Foreign news reporter@MikeRDrummond Friday 22 November 2024 07:12, UK Please use ...",
+ "source_file": "43094bfaa736b670127571894d4e5d02a495ccae5527377ffec1d2970ce5e642/c9a7cdd57de4640e1f0d33367cb917008f3dc46d6bf31486c696def32d79744c.html"
+ },
+ {
+ "title": "Israel-Hamas war: The truce has ended - why have negotiations stalled and what will Israel do now? | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Israel Defence Forces",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.25
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Hamas",
+ "the Israel Defence Forces",
+ "Israel",
+ "UK",
+ "Gaza",
+ "business"
+ ],
+ "snippet": "Israel has two stated goals: release all hostages and destroy Hamas. The truce proved an effective way of releasing hostages, but now that the war has resumed what will Israel's next step be? Military...",
+ "source_file": "88045b3bf8f638dc6b8654dd18e85c310b23e5d741d765e89cb03a926b8f6e8c/0de0a8d5e7cbe0510959b5a999a83c6992875d8a33511bcb77bd315ce25a8410.html"
+ },
+ {
+ "title": "Alix Culbertson | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Alix Culbertson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Alix",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Westminster",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.95
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.01
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.01
+ }
+ ],
+ "keywords": [
+ "Alix Culbertson",
+ "Sky News",
+ "Alix",
+ "Westminster",
+ "politics",
+ "entertainment",
+ "technology"
+ ],
+ "snippet": "Alix is a political reporter, covering events in British politics from Westminster....",
+ "source_file": "4f04e5962fa6eb1d3291d0249479845df2af56616e21e685bfffc84d8054e85b/b0304600267d3e996fa538a157ca4f6f6bf75782d59b830d83526f1bd0a8df29.html"
+ },
+ {
+ "title": "Anger As Chilcot Delays Iraq Report Until 2016 | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Chilcot",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "David Cameron",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "John Chilcot",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Iraq Inquiry",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iraq",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Chilcot",
+ "David Cameron",
+ "John Chilcot",
+ "Politics News",
+ "Sky News",
+ "the Iraq Inquiry",
+ "Iraq",
+ "UK"
+ ],
+ "snippet": "David Cameron says he is \"disappointed\" Sir John Chilcot will not publish his long-awaited Iraq inquiry report until next year. Thursday 29 October 2015 10:19, UK Please use Chrome browser for a more ...",
+ "source_file": "bacc90354d40e20d208297246076ba114c69cf218a142b32d90ed121b012c4ce/1e538a8ccca2a9cba309dea9d9172b2f0605b1f9d3b351475b592997340f045b.html"
+ },
+ {
+ "title": "Funeral for five journalists killed in Israeli airstrike in Gaza | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Islamic Jihad",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.43
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.18
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Islamic Jihad",
+ "Gaza",
+ "Israel",
+ "UK",
+ "health",
+ "entertainment"
+ ],
+ "snippet": "Israel has claimed members of the Islamic Jihad militant group were inside the van, which was marked \"press\". Thursday 26 December 2024 14:47, UK Please use Chrome browser for a more accessible video ...",
+ "source_file": "5d4b0401e8dbae0bbc3bc8b0f8c3313bd665efcf68a345778c685f36d7114ead/3c9ec2d745ef65831e4c4bb19d262b587fb09f048b42af5c533c5c6ec922fb11.html"
+ },
+ {
+ "title": "Israel-Hamas war: A timeline of events since the 7 October attacks - and how Iran and Hezbollah became involved | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hezbollah",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "Iran",
+ "Gaza",
+ "UK"
+ ],
+ "snippet": "It has been more than a year since Hamas's 7 October attack on Israel, and the ensuing months have seen a war in Gaza that has killed tens of thousands and risked escalation elsewhere. In this story, ...",
+ "source_file": "46785b53348eeb8e51b6c06953d9e49c63827ec1fcf280d550702e95f588781e/94575c05ac7968dbb6b998cd0a8524a42c057270ab301e62d6455a79114fd3c3.html"
+ },
+ {
+ "title": "Israel-Hamas war: Three Britons killed in Gaza named, as IDF says 'misidentification' led to deadly airstrike | UK News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "John Chapman",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "James Kirby",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "James Henderson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Three Britons",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "John Chapman",
+ "James Kirby",
+ "James Henderson",
+ "Three Britons",
+ "IDF",
+ "UK News",
+ "Sky News",
+ "Israel"
+ ],
+ "snippet": "The three Britons are among seven aid workers who died after a convoy they were travelling in was hit as it was leaving a warehouse in Deir al Balah overnight. Wednesday 3 April 2024 10:35, UK Three B...",
+ "source_file": "43ee70e878779b082590af39b9c3951fcc1479b1dee023997ca825731592574d/07a4a442d86299dd12b4ed12be45a868e6089f128fd28f0353db7c15dde4bda1.html"
+ },
+ {
+ "title": "Benjamin Netanyahu says he and Donald Trump 'see eye to eye' on Iran | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Donald Trump",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "US",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "America",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Donald Trump",
+ "World News",
+ "Sky News",
+ "Iran",
+ "US",
+ "America",
+ "Israel"
+ ],
+ "snippet": "Foreign leaders are looking at the US to see how the upcoming change of administration will affect America's stance on Israel and Gaza. Sunday 10 November 2024 19:55, UK Benjamin Netanyahu says he and...",
+ "source_file": "fb6fb2086cceaac65584761087d3ce23b66a6637a51b25af7690276cd02527e2/38072658312071148532913fe8b264a2dd8dec47ab85282639343e9b5b57b004.html"
+ },
+ {
+ "title": "Israel-Hamas war: US vetoes UN resolution calling for ceasefire in Gaza - as UK explains why it abstained | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "UN",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the United Nations Security Council",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "United Nations",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Security Council",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "UN",
+ "World News",
+ "Sky News",
+ "the United Nations Security Council",
+ "Hamas",
+ "United Nations",
+ "the Security Council",
+ "Israel"
+ ],
+ "snippet": "The US indicated it would veto the motion at the United Nations Security Council, arguing a ceasefire could leave Hamas in charge of the territory while still holding more than 100 hostages. Saturday ...",
+ "source_file": "f0a7cdf961d269a7f65f053943f924f7db72eadd0d863bc4a1cb3b29b0c3fb66/24c2b07ddc8b41408d7c0949b16c7111d038030c29624f5250d98a19b4c6ac29.html"
+ },
+ {
+ "title": "Furious row after Labour MPs denied entry to Israel - as Lammy criticises 'disgraceful' Badenoch response | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Labour",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Yuan Yang",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Abtisam Mohamed",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Lammy",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Badenoch",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Labour",
+ "Yuan Yang",
+ "Abtisam Mohamed",
+ "Lammy",
+ "Politics News",
+ "Sky News",
+ "Israel",
+ "Badenoch"
+ ],
+ "snippet": "Yuan Yang and Abtisam Mohamed say they are \"astounded at the unprecedented step taken by the Israeli authorities\". Israel's UK embassy says they were denied entry because they had \"accused Israel of f...",
+ "source_file": "397769131566300a5da97127cda515ce69e65174be4eacb409db0e720f8efadb/3a8809c106efc065b02484a06a837586f2233dca8162b3533050d566b2250a9e.html"
+ },
+ {
+ "title": "Israel rescues four hostages from Gaza 'in good medical condition' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Noa Argamani",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.58
+ }
+ ],
+ "keywords": [
+ "Noa Argamani",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "Gaza",
+ "UK",
+ "health"
+ ],
+ "snippet": "A video shows one of the hostages, Noa Argamani, being reunited with her father, smiling and hugging him and putting her head on his shoulder. The Hamas-run Gaza government media office says Israel ki...",
+ "source_file": "d7bb3fc14b80eb7841e0dacc67b33238cdd284e7ac67740dcb9fa7dd5aefae7c/e85d515b99b3b9f1d37e0e10caf8b0c8f8b37a9ed65603661708a2e09809351a.html"
+ },
+ {
+ "title": "UK will not oppose right of ICC to issue arrest warrant for Israeli PM Netanyahu, says No 10 | UK News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Keir Starmers",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Karim Khan KC",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "UK News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the International Criminal Court",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Keir Starmers",
+ "Benjamin Netanyahu",
+ "Karim Khan KC",
+ "UK News",
+ "Sky News",
+ "the International Criminal Court",
+ "Hamas",
+ "UK"
+ ],
+ "snippet": "A Downing Street spokesperson says the matter is solely one for the court and that it believes \"strongly in the rule of law and separation of powers\". Political reporter@alexrogerssky Friday 26 July 2...",
+ "source_file": "1106c3ae50c623660a0d58c1267151110dc5559a2528b47367a1db3dc1984ea7/4c128d84d79a78ab4c47d52e7a5bfb40d385017a7f24c490e42f607770ffe499.html"
+ },
+ {
+ "title": "Iran - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-03-20 11:24:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.21
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.16
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ }
+ ],
+ "keywords": [
+ "Sky News",
+ "Iran",
+ "UK",
+ "entertainment",
+ "economy",
+ "business"
+ ],
+ "snippet": "...",
+ "source_file": "b417790061a36316c4c6cf6623643f33a218dfac65f7723ba032fed27c6a5318/f74fdf895f7527107f50c916f6a5f16fc0d6bc44c3cae85e01ed97254fda6d68.html"
+ },
+ {
+ "title": " Keir Starmer has triggered a civil war with the left | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Keir Starmer",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Deliveroo",
+ "type": "PRODUCT",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.89
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.04
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.02
+ }
+ ],
+ "keywords": [
+ "Keir Starmer",
+ "Politics News",
+ "Sky News",
+ "Labour",
+ "Deliveroo",
+ "politics",
+ "business",
+ "health"
+ ],
+ "snippet": "It is claimed the Labour leader had decided in advance on his course of action if his predecessor refused to apologise. Chief political correspondent@joncraig Friday 30 October 2020 16:11, UK Days aft...",
+ "source_file": "7e3449334b37e4761114e5396f3302b22101ce356723922bf02cabdcf6c4a387/aec5402bd1b60bb0e4ef1dd5a9ef8f7e820d16ff80f04868f3273f0e6420b865.html"
+ },
+ {
+ "title": "Sir Keir Starmer - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-06 12:19:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Keir Starmer The Latest News",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.27
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.11
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.1
+ }
+ ],
+ "keywords": [
+ "Keir Starmer The Latest News",
+ "Sky News",
+ "UK",
+ "politics",
+ "health",
+ "business"
+ ],
+ "snippet": "...",
+ "source_file": "1605cf88d90e4bedee6d5f118e36bf779fc2b2b760add9f07ae23f206bf12c38/684960085a52005371061a1c95c885e0602edfd50d4ae8e2c0b4a6cbea0654b9.html"
+ },
+ {
+ "title": "Sunday Morning with Trevor Phillips",
+ "date": "2025-03-31 07:49:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Trevor Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.48
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.09
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.08
+ }
+ ],
+ "keywords": [
+ "Trevor Phillips",
+ "entertainment",
+ "business",
+ "environment"
+ ],
+ "snippet": "...",
+ "source_file": "e2d9540cdc95c04ff01c935fd4e3a91875c0966c7ec980a1f6fee2821cb79903/3eae7aca2368aa692f95c6398c5d26bc431a477f1b93786abf07487f18f7d22f.html"
+ },
+ {
+ "title": "Sunday Morning with Trevor Phillips",
+ "date": "2025-03-31 07:49:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Trevor Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.48
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.09
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.08
+ }
+ ],
+ "keywords": [
+ "Trevor Phillips",
+ "entertainment",
+ "business",
+ "environment"
+ ],
+ "snippet": "...",
+ "source_file": "e2d9540cdc95c04ff01c935fd4e3a91875c0966c7ec980a1f6fee2821cb79903/93a2730039c432f129a62bc3743aa181370683e117d8885e466560fd2bfbcf68.html"
+ },
+ {
+ "title": "Israeli military says it killed 'right-hand man to Hezbollah leader' in retaliatory strike on Beirut suburb | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Fuad Shukr",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hassan Nasrallah in",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Haret Hreik",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Fuad Shukr",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "The Israel Defence Forces",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Fuad Shukr",
+ "Hassan Nasrallah in",
+ "Haret Hreik",
+ "Fuad Shukr",
+ "World News",
+ "Sky News",
+ "The Israel Defence Forces",
+ "Hezbollah"
+ ],
+ "snippet": "The Israel Defence Forces (IDF) said it targeted Fuad Shukr - who served as the right-hand man to Hezbollah's secretary general Hassan Nasrallah - in the strike on Beirut's southern suburb of Haret Hr...",
+ "source_file": "355cbe17674631446914868ef647b32fb56423e63fea62097c65e6ef34449fa9/5f19e76008de907cca098ddf94efcf7763cdc70e7c55db0de14597e2fffe1b9c.html"
+ },
+ {
+ "title": "Qatar's PM says Israel-Hamas ceasefire deal is 'last chance for Gaza' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Yalda Hakim",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Mohammed bin Abdulrahman al Thani",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Donald Trump",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "withSky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Qatar",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Yalda Hakim",
+ "Mohammed bin Abdulrahman al Thani",
+ "Donald Trump",
+ "World News",
+ "Sky News",
+ "Sky News",
+ "withSky News",
+ "Qatar"
+ ],
+ "snippet": "Speaking exclusively to Sky News' Yalda Hakim, Sheikh Mohammed bin Abdulrahman al Thani spoke about peace in Gaza, Donald Trump and the need for a Palestinian state. Friday 17 January 2025 16:34, UK P...",
+ "source_file": "0afcf24d97477ef67efd88d45f2f63fe47021daee96e70aaa56b6e1e14e6bfe7/5eb62351d0338eb211469c6e345755a2adc32d428c7c6643c78e2ebf9df92037.html"
+ },
+ {
+ "title": "What happened to the Israel-Hamas ceasefire - and could there be another one? | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.28
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.18
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "Gaza",
+ "UK",
+ "politics",
+ "business"
+ ],
+ "snippet": "No major fighting had occurred in Gaza since the implementation of a three-stage ceasefire deal, until now. But what did the original ceasefire say - and what could a longer deal look like? Monday 24 ...",
+ "source_file": "9ed0a57f70e00a0fce9b2b3eb92b0a831e1ac9210ebe2578900bbc34c08adb9d/f4cd508acbf6615688edc3372707d71653f853a07e09ea0a1fd747dc58b02238.html"
+ },
+ {
+ "title": "Myanmar earthquake: Survivors' footage shows what it's like to be trapped in rubble | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Dan Cairns",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Myanmar",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.26
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.17
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.15
+ }
+ ],
+ "keywords": [
+ "Dan Cairns",
+ "World News",
+ "Sky News",
+ "Myanmar",
+ "UK",
+ "technology",
+ "health",
+ "economy"
+ ],
+ "snippet": "The three family members waited for hours to be rescued after their apartment block in Mandalay collapsed as they ran for the exit. By Dan Cairns, news reporter Monday 31 March 2025 13:21, UK Please u...",
+ "source_file": "6ae096a736d752126c2fe812b720323cbd78cf0505bd9e8c52f10f85c1447746/bd604ed8d6e16ba439721bb2a3321fa30e576e1de917fe173ab3dedbd63d9f1a.html"
+ },
+ {
+ "title": "Shiri Bibas 'mix-up' row: A fragile Gaza ceasefire stumbles from one hurdle more painful than the last | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Shiri Bibas",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Diana Magnay",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Shiri Bibas",
+ "Diana Magnay",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Sky News",
+ "Gaza",
+ "UK"
+ ],
+ "snippet": "The best possible outcome in a terrible situation is that Hamas finds the remains of Shiri Bibas and fast, writes Sky News' international correspondent Diana Magnay. International correspondent@DiMagn...",
+ "source_file": "bdac27e51be992732447f50248c09a6d48a0c401094d66335e4657fa61a5f7a2/b42ad6869077cd40c1b86d164e7b88af474f3feb6574e83d6b65e8596ea9b31f.html"
+ },
+ {
+ "title": "Israel says it's carried out 'pre-emptive' airstrikes in Lebanon - as Hezbollah fires back | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.27
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.16
+ }
+ ],
+ "keywords": [
+ "Hezbollah",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Lebanon",
+ "UK",
+ "politics",
+ "technology"
+ ],
+ "snippet": "Israel has carried out \"pre-emptive\" strikes against Hezbollah, while the militant group says it has completed the \"first phase\" of an attack on 11 Israeli military sites. Sunday 25 August 2024 14:00,...",
+ "source_file": "0bd98d607eeef0cb7bbd48ca549d15373c0366a86d7d773ea12cfd03cee9a818/4f2593ca16b0c29bb088a12c622321056f93a8a53464221aabbbe5a127d996ec.html"
+ },
+ {
+ "title": "What satellite images tell us about North Gaza as report accuses Israel of 'ethnic cleansing' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "OSINT producerOliveLineham",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Joyce Msuya",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UN",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "North Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "OSINT producerOliveLineham",
+ "Joyce Msuya",
+ "World News",
+ "Sky News",
+ "UN",
+ "Hamas",
+ "North Gaza",
+ "Israel"
+ ],
+ "snippet": "The Israeli military's latest offensive in northern Gaza began last month. While it's difficult to understand the full extent of the operation with independent media access into Gaza denied by Israel,...",
+ "source_file": "bac3e5dcefe4c2c329fbd5fa60f0ea4123ca4b25243e8aa885fc013c9a2ba53d/6adfc7231074ecbb188475de7695a92e89431eeafd796d8459f29e390ab1b871.html"
+ },
+ {
+ "title": "Hezbollah leader accuses Israel of targeting '5,000 people in two minutes' as he admits Lebanon blasts are 'unprecedented blow' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hassan Nasrallah",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollahleader Hassan Nasrallah",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Beirut",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hassan Nasrallah",
+ "Hezbollahleader Hassan Nasrallah",
+ "Hezbollah",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Lebanon",
+ "Beirut"
+ ],
+ "snippet": "Sonic booms shook buildings over Beirut during the televised speech by Hezbollah leader Hassan Nasrallah as Israeli jets flew over the Lebanese capital. Friday 20 September 2024 00:07, UK Hezbollah's ...",
+ "source_file": "da47257ccbb88ea3c653234984c2281ce6d679c94908867624e1674b76e7bbdf/c31c215c8face8f2e8ec23092d7ba0d475885d9b14ee80ce4726f1571d8e00de.html"
+ },
+ {
+ "title": "Israel and Hamas agree to brief ceasefires in Gaza to distribute thousands of polio vaccines, WHO says | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "WHO",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "The United Nations",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the World Health Organisation WHO",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "coveri",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hamas",
+ "WHO",
+ "World News",
+ "Sky News",
+ "The United Nations",
+ "the World Health Organisation WHO",
+ "coveri",
+ "Israel"
+ ],
+ "snippet": "The United Nations is hoping to vaccinate an estimated 640,000 children in Gaza after traces of the polio virus were found in the sewage system earlier this year. Middle East correspondent@AliBunkallS...",
+ "source_file": "6fec846a543ebafbff44526af2fe2139f158a35e15fd0de8e16a24f35210b7d9/c008ca74d79b57d0e065199760a076c3fa31603d9c936ad41f68791f62a17d4c.html"
+ },
+ {
+ "title": "Why is Israel bombing Syrian airbases? | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Bashar al Assads",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Damascus",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Syria",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.29
+ }
+ ],
+ "keywords": [
+ "Bashar al Assads",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Damascus",
+ "UK",
+ "Syria",
+ "politics"
+ ],
+ "snippet": "Israel has denied claims that its tanks have been advancing towards the Syrian capital, Damascus, but says it has been taking \"limited and temporary measures\" to protect its security. Foreign news rep...",
+ "source_file": "94aa9aa6a1a082d3acbe00c3bd4936ac8c27467bdbea483463fae5e3dece7318/98a08e484d06d9fc44cbc021b54bd4bc85e2329d5fd9264de0b123e403837448.html"
+ },
+ {
+ "title": "Downing Street indicates Netanyahu would be arrested in UK after ICC warrant | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "The International Criminal Court",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK Downing Street",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Netanyahu",
+ "Benjamin Netanyahu",
+ "Politics News",
+ "Sky News",
+ "The International Criminal Court",
+ "UK Downing Street",
+ "UK",
+ "Gaza"
+ ],
+ "snippet": "The International Criminal Court issued an arrest warrant for Benjamin Netanyahu on Thursday for alleged war crimes and crimes against humanity related to the war in Gaza. Political reporter@alixculbe...",
+ "source_file": "202d683f25a08d05defc16a9e0758f495c585eb8ff68c81724d60734a2fc708f/f2b9f70fd95a5ba7086de366b026d2f7d6e1b8726123de2f660aaa7f256efdcc.html"
+ },
+ {
+ "title": "Instagram apologises after inserting 'terrorist' into some Palestinian profiles | Science, Climate & Tech News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "emoji",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Science Climate Tech News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Meta",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK Meta",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Instagram",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.47
+ },
+ {
+ "text": "science",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.31
+ }
+ ],
+ "keywords": [
+ "emoji",
+ "Science Climate Tech News",
+ "Sky News",
+ "Meta",
+ "UK Meta",
+ "Instagram",
+ "technology",
+ "science"
+ ],
+ "snippet": "Meta said it had fixed a problem that \"briefly caused inappropriate Arabic translations\" after a user said his bio was auto-translated to: \"Praise be to God, Palestinian terrorists are fighting for th...",
+ "source_file": "81641c9341e3f267e3feb4eeae06ee952b52f2a9944646e3c3b5e99c6717ed8b/da4b13e869476940ea8f100b6cc4f43d26269a47e2849c010ea56d029dca2c2f.html"
+ },
+ {
+ "title": "Politics latest: Badenoch says she 'respects' Israel's decision to deny entry to Labour MPs | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Trevor Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Map",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "MPs Yuan Yang",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Abtisam M",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky Newss",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Trevor Phillips",
+ "Map",
+ "MPs Yuan Yang",
+ "Abtisam M",
+ "Labour",
+ "Politics News",
+ "Sky News",
+ "Sky Newss"
+ ],
+ "snippet": "Speaking on Sky News's Sunday Morning With Trevor Phillips programme, the Conservative leader says: \"I think that every country should be able to control its borders, and that's what Israel is doing, ...",
+ "source_file": "409a82ec660dab6c886f94ce35704103ff9ef602f22bcbe687c9a3ff03709aad/1b77f85f04dd677e59a093e5f736812bb7a25d8caa19e0648569636cf80558ae.html"
+ },
+ {
+ "title": "Jeremy Corbyn accuses Labour of 'shameful attack' after he is blocked from standing for party | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Jeremy Corbyn",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Keir Starmer",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "National Executive Committee",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "NEC",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Jeremy Corbyn",
+ "Labour",
+ "Keir Starmer",
+ "Politics News",
+ "Sky News",
+ "National Executive Committee",
+ "NEC",
+ "UK"
+ ],
+ "snippet": "Labour's National Executive Committee (NEC) has backed a motion from leader Sir Keir Starmer saying it will not endorse his predecessor. Political reporter@fayebrownSky Wednesday 29 March 2023 07:07, ...",
+ "source_file": "054a1fdd9ccb79506fe85a98df619a1cb57a6b4b9c992320d1f7a3602c6d6fdb/7fe000416d84d6fa9dd07ce9e766757610427939a41eb2a5fa85d4827930e6b2.html"
+ },
+ {
+ "title": "The competing plans for rebuilding Gaza after the war | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Donald Trump",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "theHamasattacks",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "US",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Donald Trump",
+ "World News",
+ "Sky News",
+ "theHamasattacks",
+ "Gaza",
+ "US",
+ "UK",
+ "Israel"
+ ],
+ "snippet": "Arab nations have agreed plans to rebuild Gaza after the war, including details on who would run the territory - but Donald Trump wants to build a \"Riviera\" under US control. Wednesday 5 March 2025 19...",
+ "source_file": "c5db71644d77222d47b019e5c9fc2c50a22451d79f0599d1809c278e9c5a9fea/f77f91d0d226592ec8902e7dcd83c1fd7040f2cbfc636dd868d92439e91629b9.html"
+ },
+ {
+ "title": "Israel stopping all goods and supplies into Gaza - hours after agreeing ceasefire extension plan | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Steve Witkoff",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Witkoff",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Steve Witkoff",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Witkoff",
+ "Israel",
+ "Gaza"
+ ],
+ "snippet": "According to reports, there have been disagreements over whether to continue on to phase two of the ceasefire, during which a permanent peace will be negotiated, or extend phase one. Sunday 2 March 20...",
+ "source_file": "cdbf8e938f826b006964b44bd052d3e0a682a9cb62bbd7ad80abd89e13581a86/ec8e17c6962a771f76286eb1cb540da72b5241ffd42a443fb38fa6c4d54ebe50.html"
+ },
+ {
+ "title": "Israeli Prime Minister Benjamin Netanyahu says airstrike on Rafah which killed dozens was 'tragic mistake' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Rafah",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gazan",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Rafah",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Gaza",
+ "UK",
+ "Gazan"
+ ],
+ "snippet": "Medics in the southern Gaza city say the strikes hit an area of tents being used by displaced people. The Israeli military said it struck a Hamas compound with \"precise ammunition and on the basis of ...",
+ "source_file": "ab3bdd3fddad0bbdf422113efb44da848768cf5d7b9f068fc0cd6b176bdbd494/30b9201e19112cdd8759ceb255adbec0dbbb7486a46a15968fd7fd71101650ec.html"
+ },
+ {
+ "title": "Ceasefire deal with Hezbollah agreed by Israeli security cabinet, Benjamin Netanyahu's office says | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahus",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.3
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.15
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahus",
+ "Benjamin Netanyahu",
+ "Hezbollah",
+ "World News",
+ "Sky News",
+ "UK",
+ "politics",
+ "technology"
+ ],
+ "snippet": "The agreement would bring about an end to fighting that has seen more than 3,500 Lebanese killed and more than 15,000 injured in over a year. News reporter@samuelosborne93 Wednesday 27 November 2024 0...",
+ "source_file": "37e809c0c83065c6e1f05618dad2e15e9e971057898927a2a2a940ef05a6bf82/dd9d89979aa4dc1936b5f509545fae71ae53ffe965288be78ab5e870aa8cb5b8.html"
+ },
+ {
+ "title": "Trump says US will take over Gaza and all Palestinians should relocate | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Donald Trump",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Andy Hayes",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Claire Gilbody Dickerson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Trump",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "US",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Donald Trump",
+ "Benjamin Netanyahu",
+ "Andy Hayes",
+ "Claire Gilbody Dickerson",
+ "Trump",
+ "World News",
+ "Sky News",
+ "US"
+ ],
+ "snippet": "Donald Trump described Gaza as \"hell\" and \"one of the meanest, toughest places on earth\" as Benjamin Netanyahu visited him at the White House. By Andy Hayes and Claire Gilbody Dickerson, news reporter...",
+ "source_file": "a24d279d1b20aeb966d4e4152c2c5b6abc61eac3692e710e7fe42baf3fda5f90/b8367e447af8bde45c2c860b10f80aaa7eb55c5274fe6d11dbdac1c6a50d10ff.html"
+ },
+ {
+ "title": "Hamas 'approves list of 34 hostages to be returned' - but Israeli PM's office contests claim | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "MinisterBenjamin Netanyahuhas",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.54
+ }
+ ],
+ "keywords": [
+ "MinisterBenjamin Netanyahuhas",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Israel",
+ "UK",
+ "Gaza",
+ "politics"
+ ],
+ "snippet": "Israel and Hamas argued on Sunday over the details of an agreement to halt fighting in the war-ravaged territory and bring captives home. Sunday 5 January 2025 23:42, UK Hamas has approved a list of 3...",
+ "source_file": "03e9a6909194d538c5fdeca56a6f31d5cba6ee1af387c9423d34f5b6a345cd06/a442f7512642168d05636d15565ad76282de5ef96093e13c19243e772de54dbe.html"
+ },
+ {
+ "title": "Starmer faces calls for UK's role in Gaza war to be scrutinised in Chilcot-style inquiry | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Jeremy Corbyn",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Keir Starmer",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Chilcot",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Jeremy Corbyn",
+ "Keir Starmer",
+ "Politics News",
+ "Sky News",
+ "Labour",
+ "UK",
+ "Gaza",
+ "Chilcot"
+ ],
+ "snippet": "In a letter to the prime minister seen by Sky News, former Labour leader Jeremy Corbyn says UK officials may have been implicated in \"the gravest breaches of international law\". Political reporter@ale...",
+ "source_file": "ae5c005ff02121572c12c7a16576d7d98916db8b04225bf4ebc5eda0ab51660c/5ced630876386600d85358fff82337742bd5a9eff7d77403e4ca74be4ce72e50.html"
+ },
+ {
+ "title": "Marine Le Pen latest: Far-right leader speaks for first time after being barred from French presidential election | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Marine Le Pen",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "National Rally",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.66
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.09
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.05
+ }
+ ],
+ "keywords": [
+ "Marine Le Pen",
+ "World News",
+ "Sky News",
+ "National Rally",
+ "UK",
+ "politics",
+ "technology",
+ "business"
+ ],
+ "snippet": "The National Rally leader says she is \"innocent\" after she is convicted of embezzlement and banned from running for public office for five years. She receives a four-year jail sentence, with two years...",
+ "source_file": "c98a74bc9b369dabcd89f5568fbe67e24fd6fc9c100ad058562cdf2ee23a5c6c/5d366084668f8855345b851c82053d50720242b519a7c27d63ce0b8010ed3a89.html"
+ },
+ {
+ "title": "Hamas names mastermind behind 7 October attack Yahya Sinwar as new leader | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Ismail Haniyeh",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Tehran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Yahya Sinwar",
+ "type": "LOC",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Ismail Haniyeh",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Tehran",
+ "UK",
+ "Israel",
+ "Yahya Sinwar"
+ ],
+ "snippet": "The last leader of the militant group, political chief Ismail Haniyeh, was assassinated in Tehran last month. He was the pragmatic face of Hamas and said to be less hardline or militaristic than his s...",
+ "source_file": "c1d8f2815fa7ec4df29033dd2ea1a353fcb3ba80a36c0949c064c927e1500675/ef54ea5aee562133bf903d281555e27c9a7ce63ab65d0a720d56b27240f945e8.html"
+ },
+ {
+ "title": "Middle East on a knife edge on eve of Gaza ceasefire talks | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Hezbollah",
+ "Hamas",
+ "Gaza",
+ "UK",
+ "Iran",
+ "Israel"
+ ],
+ "snippet": "The region is suspended between a potential ceasefire and a massively escalating conflict. International affairs editor@DominicWaghorn Wednesday 14 August 2024 12:11, UK On the eve of crucial Gaza cea...",
+ "source_file": "207a20e950ea655656199db1e67cee937565207482bbb73f8bbfb62d164c261f/f18d2ad6cec4f7c6477acff9e322565ea1fcf186fceebc24cdbcd2f8259493df.html"
+ },
+ {
+ "title": "Who's in, who's out? The 'coalition of the willing' that could secure peace in Ukraine | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Ukraine",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "France",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Germany",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Poland",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Italy",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Ukraine",
+ "UK",
+ "France",
+ "Germany",
+ "Poland",
+ "Italy"
+ ],
+ "snippet": "The idea is being led by the UK and France, two of the most powerful militaries in Europe, but questions remain over who else could be involved. What about Germany, Poland and Italy? Foreign news repo...",
+ "source_file": "0c1a3b4465c0adc7786b1617be498f276b1b7431b35d0f5cfac141f651325eba/64c13fee07f265ec635a3dfc23227f45220d18f7fee9643aeb77aa812c495188.html"
+ },
+ {
+ "title": "Israel targets 7 October mastermind in airstrike Gaza officials say killed at least 90 | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Mohammed Deif",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.28
+ }
+ ],
+ "keywords": [
+ "Mohammed Deif",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "Gaza",
+ "UK",
+ "health"
+ ],
+ "snippet": "Hamas's military chief Mohammed Deif, who developed the militant group's network of tunnels and its bomb-making expertise, has previously survived seven Israeli assassination attempts and topped its m...",
+ "source_file": "3abe41aaa7b528de8a9d0e33709c112ced340129b66c2a84dfc1dd7e4fe5c8bc/fd49edfd6f7074bb2aa519b38cfca95719fbc9eb3e80d77ac596eb4d2a3df8a4.html"
+ },
+ {
+ "title": "Fresh Gaza peace talks begin - with Iran saying they 'will only hold back if ceasefire agreed' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Ismail Haniyeh",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Claire Gilbody Dickerson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Ismail Haniyeh",
+ "Claire Gilbody Dickerson",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Hezbollah",
+ "Gaza",
+ "Iran"
+ ],
+ "snippet": "Reports suggest Iran will only hold back from retaliating against Israel following the killing of Hamas leader Ismail Haniyeh and a Hezbollah top military commander if parties can agree to a ceasefire...",
+ "source_file": "696dc3b71bcbed0db2aae395c1858528afe9a159a96a6b8d2781223bb50e1dc5/3ea4143cc1a3ffb0195c1632ee638d06cb25c66157369ed2d4f1602e87fee763.html"
+ },
+ {
+ "title": "Israel - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-06 16:35:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.23
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ }
+ ],
+ "keywords": [
+ "Sky News",
+ "Israel",
+ "UK",
+ "entertainment",
+ "technology",
+ "business"
+ ],
+ "snippet": "...",
+ "source_file": "6e93cc0ce7e40a9190f1c8c018edf86bc0688ac6444101ea88b0134d8d5e9c67/0be4ba92d5cb7d009fc7af615d781df3e4db6947b77ab5829da0ca1c47d09c4c.html"
+ },
+ {
+ "title": "Aid charity to resume operations in Gaza following killing of seven aid workers | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "WCK",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.17
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.16
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.13
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "WCK",
+ "Gaza",
+ "UK",
+ "business",
+ "entertainment",
+ "technology"
+ ],
+ "snippet": "World Central Kitchen (WCK) says it will resume operations in Gaza following the death of seven aid workers who were killed in an Israeli military strike on 1 April. News reporter@thejournojames Monda...",
+ "source_file": "556cd293808b751f3a35e21502dc4b4c0d3b27352b268fee59bd94b872873a0e/afc49e7a80b4f886b2ab36af58155bee33fb045bb107c13e58de1af830580497.html"
+ },
+ {
+ "title": "Tanks gather near Israeli-Lebanon border - as defence minister holds talks over 'expansion' of IDF activity | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hassan Nasrallah",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Yoav Gallant",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Gallant",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Beirut",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hassan Nasrallah",
+ "Yoav Gallant",
+ "Gallant",
+ "World News",
+ "Sky News",
+ "Hezbollah",
+ "Beirut",
+ "UK"
+ ],
+ "snippet": "The deployment comes after Hezbollah confirmed that its leader of more than three decades Hassan Nasrallah was killed in an Israeli airstrike in Beirut on Friday. Sunday 29 September 2024 05:35, UK Pl...",
+ "source_file": "c1e9192085cceefa3b687fb59949d889efa91057bcbc2b8fcc36ad24a9960f5d/0b92fd1da33162129cb0c899ef9ce79fd97b3b547436d5cff11189b43ab78e3d.html"
+ },
+ {
+ "title": "Hamas leader Ismail Haniyeh killed in Iran, group says | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Ismail Haniyeh",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Guards",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Haniyeh",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Revolutionary Guards",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Ismail Haniyeh",
+ "Guards",
+ "Haniyeh",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Revolutionary Guards",
+ "Iran"
+ ],
+ "snippet": "Iran's Revolutionary Guards said Ismail Haniyeh and one of his bodyguards were \"assassinated\" in the capital Tehran, Iranian state media reported. News reporter@samuelosborne93 Wednesday 31 July 2024 ...",
+ "source_file": "035f612ef680f69a06b17e42dc605f4819164cf9c91e86af2e10df2a3e1efe4d/8bad4feb5b49cb6319b405fd5b7d6f3dedcf90f29756b6e819b2186fc7ae28c6.html"
+ },
+ {
+ "title": "Hamas accepts Gaza peace deal as Israeli official says agreement is close but 'not there yet' | US News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Donald Trump",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Joe Biden",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "US News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Doha",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Donald Trump",
+ "Joe Biden",
+ "Hamas",
+ "US News",
+ "Sky News",
+ "Gaza",
+ "Doha",
+ "UK"
+ ],
+ "snippet": "A new round of ceasefire talks was held in Doha on Tuesday to finalise the remaining details related to a possible ceasefire deal. Wednesday 15 January 2025 05:03, UK US president-elect Donald Trump h...",
+ "source_file": "fe9f9442e35b7dffda59fbdebcfd0d82125a244f3668407610d1bf7da1287679/2e567ab3c9c28d0d2c59dc4ad0c0ec8cddb3c442c086bed8791ccece98e27c76.html"
+ },
+ {
+ "title": "Jeremy Corbyn - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-03-26 17:03:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Jeremy Corbyn The Latest News",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.7
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.07
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.05
+ }
+ ],
+ "keywords": [
+ "Jeremy Corbyn The Latest News",
+ "Sky News",
+ "UK",
+ "politics",
+ "entertainment",
+ "economy"
+ ],
+ "snippet": "...",
+ "source_file": "0682fe1d3e957942cececf62bbc4f890d31081d5c38a3eea151d54da07acdd41/0b787e8fb637b6071b0d9976ae9094bb76621fc56b003b5963684ae86db81505.html"
+ },
+ {
+ "title": "Aerial footage shows moment British jets strike Houthi military targets in Yemen | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Houthi",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Yemen",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "US",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "theIran",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Houthi",
+ "World News",
+ "Sky News",
+ "Yemen",
+ "UK",
+ "US",
+ "Iran",
+ "theIran"
+ ],
+ "snippet": "UK and US forces bombed more than a dozen sites used by the Iran-backed militia in a massive retaliatory strike for attacks on international shipping in the Red Sea. Friday 12 January 2024 10:58, UK P...",
+ "source_file": "456901172376e583c284ddadf6d23cc7728a034cd1c4dba538a27065f7b856b5/3432afcdfa48607f55f3b4196c5003c75d9bbbb62cd7b666f8980e22727419b8.html"
+ },
+ {
+ "title": "Conflicting claims about Gaza hospital blast. So who's said what? | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "al Ahli al Arabi",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "al Ahli hospital",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Palestinian Islamic Jihad",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "al Ahli al Arabi",
+ "World News",
+ "Sky News",
+ "al Ahli hospital",
+ "Hamas",
+ "the Palestinian Islamic Jihad",
+ "Gaza",
+ "Israel"
+ ],
+ "snippet": "Israel has said a misfired rocket from Gaza caused the explosion at al Ahli hospital, while Hamas and the Palestinian Islamic Jihad say Israel is to blame. Here is what we know so far about what happe...",
+ "source_file": "bcf7a9954a5d65465ab92c9264e5f9f5e93682536f2679faec7637acd10670b4/cc94b5d101efef9d66a4291640d4e6cc78fb4779cb308fab709533ad8129529e.html"
+ },
+ {
+ "title": "Gaza: 'Horror movie' scenes as Hamas says 210 Palestinians killed in area of Israeli hostage rescue mission | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Horror",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.2
+ }
+ ],
+ "keywords": [
+ "Horror",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Gaza",
+ "UK",
+ "Israel",
+ "health"
+ ],
+ "snippet": "Israeli forces rescued four hostages held by Hamas since October in a raid Palestinian officials said killed more than 200 people. The scenes were likened to a \"horror movie\" by one paramedic. Sunday ...",
+ "source_file": "3e112281824f13d35cdca44c58b18f46cb4f8975e6711156d7defc860a0aa6c9/6e41b6acbc7ed2b14de8ac000e6c17bfd33b9a950256452a9740193e97da6e58.html"
+ },
+ {
+ "title": "Hamas confirms death of leader Yahya Sinwar – as it vows not to return hostages until Israeli troops leave Gaza | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Yahya Sinwar",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Daniel Binns",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sinwar",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Yahya Sinwar",
+ "Daniel Binns",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Sinwar",
+ "Gaza",
+ "UK"
+ ],
+ "snippet": "Hamas says Sinwar's death would \"only increase the strength and resolve\" of its \"resistance\". By Daniel Binns, news reporter Friday 18 October 2024 17:14, UK Please use Chrome browser for a more acces...",
+ "source_file": "134f9c5a121ab1f7488e58ca79577e453ecdad6feb2ab4cc0dc1a30de581c7de/09662fdc67a65fa8b7f1ea7dfc65400aeaa3b8df8110be68cdc6facda4adb419.html"
+ },
+ {
+ "title": "Israel says Hamas decision to accept ceasefire deal is a 'ruse' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Egypt",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Qatar",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Gaza",
+ "UK",
+ "Egypt",
+ "Qatar"
+ ],
+ "snippet": "Hamas has called on Israel to \"seize the moment\" after agreeing to a ceasefire deal that would pause the fighting in Gaza - but an Israeli official has said the \"softened\" proposal is \"not acceptable\"...",
+ "source_file": "444ba3e388505739b7d3a615934daff8961eac16b56bb043dcaf54918fbab0aa/c04ddd2ac5e064fac03527207b0667f118bbffe9c13cd4917604de6d4d4f0313.html"
+ },
+ {
+ "title": "Israel cuts power to Gaza after Hamas refuses to extend first phase of ceasefire deal | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.37
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.18
+ }
+ ],
+ "keywords": [
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Gaza",
+ "UK",
+ "politics",
+ "business"
+ ],
+ "snippet": "Following last week's decision to strip Gaza of all supplies of goods, Israel says it is now cutting off electricity to the besieged strip. It comes as Hamas wants to move on to the second phase of a ...",
+ "source_file": "d02b250c05e8a5dedcb46e3112692b876b2b990187e143024bbae2e87fc6018a/559b807015ba09046bc38c6b845a6cbe3c6130e5ed2fb291e14772bf8f5d8a37.html"
+ },
+ {
+ "title": "'They are a target in his eyes': IDF releases findings of what went wrong in strike that killed aid workers | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Alistair Bunkall",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Katy Scholes",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Middle East",
+ "type": "LOC",
+ "source": "spacy"
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.14
+ }
+ ],
+ "keywords": [
+ "Alistair Bunkall",
+ "Katy Scholes",
+ "World News",
+ "Sky News",
+ "IDF",
+ "UK",
+ "Middle East",
+ "business"
+ ],
+ "snippet": "The IDF has released findings of a strike that killed seven aid workers - identifying that a series of mistakes and incorrect assumptions resulted in their deaths. By Alistair Bunkall, Middle East cor...",
+ "source_file": "1f23fb03101f29fb916e8ebc312fa07e4587bb571e86388581e31e701edaf906/2334ae2d640769914400dc387d3c23617244ad83def11f9e55cffcbe5ec8ed4c.html"
+ },
+ {
+ "title": "Politics latest: Badenoch says she 'respects' Israel's decision to deny entry to Labour MPs | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Trevor Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Map",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "MPs Yuan Yang",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Abtisam M",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky Newss",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Trevor Phillips",
+ "Map",
+ "MPs Yuan Yang",
+ "Abtisam M",
+ "Labour",
+ "Politics News",
+ "Sky News",
+ "Sky Newss"
+ ],
+ "snippet": "Speaking on Sky News's Sunday Morning With Trevor Phillips programme, the Conservative leader says: \"I think that every country should be able to control its borders, and that's what Israel is doing, ...",
+ "source_file": "32b7111bbe3022ea50aa27c5c22f410b23d671ff7459f96869528a37e5d1a2eb/1b77f85f04dd677e59a093e5f736812bb7a25d8caa19e0648569636cf80558ae.html"
+ },
+ {
+ "title": "Benjamin Netanyahu - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-02 06:25:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.37
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.14
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.09
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Sky News",
+ "UK",
+ "politics",
+ "entertainment",
+ "business"
+ ],
+ "snippet": "...",
+ "source_file": "e3832a5db993f572bd574b04082d60ff5bffa39f776774a7f066dccac5fbe717/74f83ef38a559e89f6a049304a53be0ef82e5269181b57d59144014257365ec9.html"
+ },
+ {
+ "title": "Virginia Giuffre, who accused Prince Andrew of sexual assault, says she has days to live after car crash | US News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Virginia Giuffre",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Prince Andrew",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Andrew",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Virginia Guiffre",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "US News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Duke of York",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Virginia Giuffre",
+ "Prince Andrew",
+ "Andrew",
+ "Virginia Guiffre",
+ "US News",
+ "Sky News",
+ "the Duke of York",
+ "UK"
+ ],
+ "snippet": "Virginia Giuffre sued the Duke of York for sexual abuse in August 2021, saying Andrew had sex with her when she was 17. The duke has repeatedly denied the claims, and he has not been charged with any ...",
+ "source_file": "7b21306640fece7d394a3ebb7ee4b365c019457dfc044fb11b6da2ae77594598/38f1fcad63e466a3368389a4c2c4a12b2b0b173769dd033195de59851799c19b.html"
+ },
+ {
+ "title": "Israel-Hamas war: Israeli tanks spotted in centre of Rafah for first time after UN chief's 'hell on earth' comments | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "UN",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Rafah",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.25
+ }
+ ],
+ "keywords": [
+ "UN",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Rafah",
+ "Gaza",
+ "UK",
+ "politics"
+ ],
+ "snippet": "Israel has been widely criticised after carrying out an airstrike on a tent encampment in Rafah in southern Gaza - which came before Israeli tanks were spotted in the centre of the city for the first ...",
+ "source_file": "30e78c8489cc590f6d5bf840bf907dcf1b296ab79d931e2bb1fe37c8c6dbec79/f4ec78f1d722ee396ce7a3307e4e95d401f42e92efd9e9e7062c3f8bfe0abc79.html"
+ },
+ {
+ "title": "Lebanon - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-03-28 14:34:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.18
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.14
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.13
+ }
+ ],
+ "keywords": [
+ "Sky News",
+ "Lebanon",
+ "UK",
+ "entertainment",
+ "business",
+ "economy"
+ ],
+ "snippet": "...",
+ "source_file": "82f0516d62f14c4d31d5b884cb18a53851a223a557377ea87c02fe02d95d54b0/a018205016eb73aa93bd247a32184a174a52d2c266ae852be81236a51652da3c.html"
+ },
+ {
+ "title": "'Heartbroken' and 'devastated' families of UK aid workers killed by Israel pay tribute | UK News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "James Kirbys",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "John Chapmans",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "James Kirby",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "John Chapman",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Heartbroken",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "James Kirbys",
+ "John Chapmans",
+ "James Kirby",
+ "John Chapman",
+ "Heartbroken",
+ "UK News",
+ "Sky News",
+ "IDF"
+ ],
+ "snippet": "James Kirby's family said he would be remembered as a hero, while John Chapman's relatives say he was \"subject to an inhumane act\". Political reporter Wednesday 3 April 2024 18:37, UK The family of Br...",
+ "source_file": "fd6d4e6e2a72e132456947eb15b4f53850de3de3d967d3a969515ebafbd583bf/fa7c48b4d0c10ab4b1f4126dc23c009b624ece4b5713829a4f01da0716888ae9.html"
+ },
+ {
+ "title": "Iran's supreme leader warns missile attack on Israel 'will be done again if necessary' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Ayatollah Ali Khamenei",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "supreme leader",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Ayatollah Ali Khamenei",
+ "World News",
+ "Sky News",
+ "supreme leader",
+ "Hamas",
+ "Iran",
+ "Israel",
+ "UK"
+ ],
+ "snippet": "Ayatollah Ali Khamenei gives his first address at Friday prayers in five years after Iran fired a barrage of at least 180 missiles at Israel on Tuesday night. Friday 4 October 2024 20:33, UK Please us...",
+ "source_file": "c8303236e7b6f65f7b10e3e1026c5b43bb66c4a4250f2aecbd33c7da0ec4c6fe/f4d110bd37cbd3871c5ea938e777401ab5abcfaf134f390614c5070faa94044e.html"
+ },
+ {
+ "title": "80 people killed in Israeli strike on school-turned-shelter in Gaza City, Palestinian health officials say | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Claire Gilbody Dickerson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza City",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Tabeen",
+ "type": "PRODUCT",
+ "source": "spacy"
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.57
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ }
+ ],
+ "keywords": [
+ "Claire Gilbody Dickerson",
+ "World News",
+ "Sky News",
+ "Gaza City",
+ "UK",
+ "Tabeen",
+ "health",
+ "technology"
+ ],
+ "snippet": "An estimated 6,000 displaced people were reportedly in the school when it was said to have been hit by three missiles. By Claire Gilbody Dickerson, news reporter Saturday 10 August 2024 16:53, UK Plea...",
+ "source_file": "4fe1fab41a46b9d0830e805d69db92b41f4f7f4d8f79cb753b3fe2494242a596/9a4230871f2dd64c3df09391fe2884045a4e832ac385c7ca2ce01f5f4e6b7dcd.html"
+ },
+ {
+ "title": "Jeremy Corbyn refuses to be drawn on his future as Labour prepares to block him from standing as party MP | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Jeremy Corbyn",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Keir Starmer",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.82
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.04
+ }
+ ],
+ "keywords": [
+ "Jeremy Corbyn",
+ "Keir Starmer",
+ "Labour",
+ "Politics News",
+ "Sky News",
+ "UK",
+ "politics",
+ "business"
+ ],
+ "snippet": "The former leader appeared agitated when asked by Sky News if he will seek re-election after it was revealed Sir Keir Starmer is set to bring a motion to a meeting of the party's ruling body, banning ...",
+ "source_file": "9b019294c805caec89deeef021d0b661570c9d850806db5f15da4faea6252da2/307ce005fb31d91003cea0389c869715645be4036db1ac7f509339d9ceb0b3fc.html"
+ },
+ {
+ "title": "Tens of thousands stage anti-government protests in Israel as Benjamin Netanyahu's surgery hailed 'success' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahus",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahus",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahus",
+ "Benjamin Netanyahus",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "Gaza",
+ "UK"
+ ],
+ "snippet": "Despite Benjamin Netanyahu's vow to destroy Hamas and bring all hostages home, many families of the approximate 100 people still in Gaza believe time is running out. Monday 1 April 2024 03:42, UK Plea...",
+ "source_file": "d8ea39caf9f5e8069ec65a1659c4dc5e53e71b4e60bdc52135ddd316e76a0492/78548d42782f6b87735bd781a45a0df5150873b8edbe8a09008d5377b2061e4c.html"
+ },
+ {
+ "title": "Who were the aid workers killed in Gaza airstrike? What we know about the seven victims of 'grave mistake' by Israeli forces | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "WCK",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "World Central Kitchen",
+ "type": "LOC",
+ "source": "spacy"
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.16
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.15
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "WCK",
+ "Gaza",
+ "UK",
+ "World Central Kitchen",
+ "technology",
+ "entertainment"
+ ],
+ "snippet": "The aid workers have been hailed as \"heroes\" who were \"simply trying to help fellow human beings\". Some had travelled the world, taking part in aid efforts in the aftermath of wars and earthquakes. We...",
+ "source_file": "295c75e76cfea04ff922d148e0f503de1af7b1952ff6d29abf8c62d45d2a1d15/277dfc64aa3459974fd3b82509b7575f1332cc087be78ab0440b1bd7eae209ff.html"
+ },
+ {
+ "title": "Hostages taken as Hamas launches biggest attack on Israel in years - with strikes hitting Gaza in response | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Alistair Bunkall",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Reemul Balla",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Alistair Bunkall",
+ "Reemul Balla",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Gaza"
+ ],
+ "snippet": "Prime Minister Benjamin Netanyahu says: \"We are at war and we will win,\" as Israel responds to Hamas's surprise attack - its biggest in years - by striking targets in Gaza. By Alistair Bunkall, Middle...",
+ "source_file": "a05c18dcdbf6cd2bdfb9b74cd6b8bc0fb22f0e54b8947725a137f9fc4d16d000/67309eb7de41e7f9ba6fc98c25e11ff9efff362a07268429da112d9e67a6cb5e.html"
+ },
+ {
+ "title": "Labour - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-06 21:59:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Labour The Latest News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.69
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.07
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.06
+ }
+ ],
+ "keywords": [
+ "Labour The Latest News",
+ "Sky News",
+ "UK",
+ "politics",
+ "entertainment",
+ "economy"
+ ],
+ "snippet": "...",
+ "source_file": "0a9ebfa70384b7ae787333a39a0c04d187dce115527d4c6b517d36695aa0fb09/2401b21480f21444f71b6552ebc9315a4bd16cffbd8fe43d9900aa9fe8b4e698.html"
+ },
+ {
+ "title": "Three Israeli hostages returned and 90 Palestinian detainees released as part of ceasefire deal | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Briton Emily Damari",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.23
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.22
+ }
+ ],
+ "keywords": [
+ "Briton Emily Damari",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Gaza",
+ "UK",
+ "politics",
+ "technology"
+ ],
+ "snippet": "Briton Emily Damari was among the three Israeli hostages released by Hamas on Sunday - as the long-anticipated Gaza ceasefire cleared its first hurdle. Thousands of displaced Palestinians ventured hom...",
+ "source_file": "f70bfb7d20a397e56050906deba1d82dc6bb824c6213741d6fe90b2f32c9b853/f800b42677de09cee927c94ff5bbb3e3e8a81e8205aebc6261c80c8f3d85bf17.html"
+ },
+ {
+ "title": "Militants on paragliders and '5,000' rockets: How Hamas carried out deadly Israel attack | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gazafol",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.25
+ }
+ ],
+ "keywords": [
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Gaza",
+ "UK",
+ "Gazafol",
+ "technology"
+ ],
+ "snippet": "The militant group began its offensive - which it named \"Operation Al Aqsa Storm\" - on Saturday with a barrage of missiles from Gaza followed by militants crossing the border. News reporter@thejournoj...",
+ "source_file": "18c0299d955076833f2d98a8741d7188c19471b228726e2f949290181105dd44/dd785d0227115d2a39ed0cf59a6b28eefe1558df688aba0ebd30b033faa49ead.html"
+ },
+ {
+ "title": "Israel-Hamas temporary ceasefire extended, say Qatar and Hamas | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "White House",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "NBC News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Qatar",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hamas",
+ "World News",
+ "Sky News",
+ "White House",
+ "NBC News",
+ "Israel",
+ "Qatar",
+ "UK"
+ ],
+ "snippet": "A spokesperson for Qatar's foreign ministry said the ceasefire - which was due to end on Tuesday morning - would be extended by an \"additional two days\". News reporter@thejournojames Monday 27 Novembe...",
+ "source_file": "383de29f4973852467a3a77f23608e697501a22bc8266816975ac4425597e27d/96813f6d052d3486443b64a73fbd385605cfe7023f9f644c22b4fcfafc558638.html"
+ },
+ {
+ "title": "Politics latest: Badenoch says she 'respects' Israel's decision to deny entry to Labour MPs | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Trevor Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Map",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "MPs Yuan Yang",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Abtisam M",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky Newss",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Trevor Phillips",
+ "Map",
+ "MPs Yuan Yang",
+ "Abtisam M",
+ "Labour",
+ "Politics News",
+ "Sky News",
+ "Sky Newss"
+ ],
+ "snippet": "Speaking on Sky News's Sunday Morning With Trevor Phillips programme, the Conservative leader says: \"I think that every country should be able to control its borders, and that's what Israel is doing, ...",
+ "source_file": "df732210067890ee3a26a4586dcad219efbb7eb001ba59f9b38a8bad378baec1/1b77f85f04dd677e59a093e5f736812bb7a25d8caa19e0648569636cf80558ae.html"
+ },
+ {
+ "title": "Jeremy Corbyn vows to fight suspension from Labour Party over response to antisemitism report | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Jeremy Corbyn",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Alix Culbertson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Aubrey Allegretti",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour Party",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Jeremy Corbyn",
+ "Alix Culbertson",
+ "Aubrey Allegretti",
+ "Labour Party",
+ "Politics News",
+ "Sky News",
+ "Labour",
+ "UK"
+ ],
+ "snippet": "Some MPs say it is the right decision, but the former Labour leaders' allies are gearing up for a fight. By Alix Culbertson, news reporter, and Aubrey Allegretti, political reporter Friday 30 October ...",
+ "source_file": "0871bfe1dd72ac96baf7d9230cc04ea29080623a4e59a86c854308649f7f194a/f219dba31f3f14e76045944b52a2c8713bd1024bbd292f4fe7599d2b8c249e1a.html"
+ },
+ {
+ "title": "Netanyahu: Israel's longest serving leader | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.56
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.1
+ }
+ ],
+ "keywords": [
+ "Netanyahu",
+ "Benjamin Netanyahu",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "politics",
+ "business"
+ ],
+ "snippet": "Israel's darkest day since the Holocaust happened under Prime Minister Benjamin Netanyahu's watch. Marauding Hamas fighters slaughtered around 1,200 Israelis and took more than 250 people hostage. Net...",
+ "source_file": "9993eabbeeb7fb2478b5ea1bb1d0a1ec2b05bd379c1eaf1ec827b4784773f55d/46ba74267d8b005ad66ea56bd826582c7de90acd5d4583ebc1e0639795c3cfbd.html"
+ },
+ {
+ "title": "Video undermines Israel's account of aid worker deaths - and suggests cover-up somewhere along chain | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Middle East",
+ "type": "LOC",
+ "source": "spacy"
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.26
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.17
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.14
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Israel",
+ "UK",
+ "Middle East",
+ "business",
+ "politics",
+ "environment"
+ ],
+ "snippet": "Newly emerged footage of the moment 15 aid workers were attacked shows their ambulances and fire insignia were clearly visible to Israeli troops who opened fire on them. Middle East correspondent@AliB...",
+ "source_file": "99e6380cbf6c9101f5268a0514ddaf59fd4641d1df48e19c3800b42cc6e9f36b/b571a15cd94e325f068cfa0b5d2c7bf8add414ca88ec9c4d16c826939489d35f.html"
+ },
+ {
+ "title": "Secrets of the tunnels: What lies beneath al Shifa hospital? | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "al Shifa",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "al Shifas",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Al Shifa Hospital",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.48
+ }
+ ],
+ "keywords": [
+ "al Shifa",
+ "al Shifas",
+ "World News",
+ "Sky News",
+ "Al Shifa Hospital",
+ "Hamas",
+ "Israel",
+ "health"
+ ],
+ "snippet": "Al Shifa Hospital and part of the tunnel system below Al Shifa Hospital and part of the tunnel system below EARLY ATTACKS Israel's military claimed that it was responsible for the ambulance attack ref...",
+ "source_file": "19191395722324433d0b8fe3d4a31c0341ba52b8f1303885a21e834cda29150d/7b77ac9036d3c9c26f40cf205e775c47e147bc22e7cb6cd469f9fd40290e2a99.html"
+ },
+ {
+ "title": "Gaza - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-06 22:49:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.25
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.14
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.11
+ }
+ ],
+ "keywords": [
+ "Sky News",
+ "Gaza",
+ "UK",
+ "entertainment",
+ "environment",
+ "economy"
+ ],
+ "snippet": "...",
+ "source_file": "5d291a0dc792aad310021271420d8c845c690243fe5b0e662dac8cba4196dffd/71b069b60b713f4a9866b6666f6b0dc65a943f4dd96d865bc318e6acc945c362.html"
+ },
+ {
+ "title": "France, Italy and Spain 'outraged' after UN peacekeepers injured - and accuse Israel of violating international law | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Joe Biden",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "UN",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UNIFIL",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Downing Street",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "EU",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the United Nati",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Joe Biden",
+ "UN",
+ "World News",
+ "Sky News",
+ "UNIFIL",
+ "Downing Street",
+ "EU",
+ "the United Nati"
+ ],
+ "snippet": "US President Joe Biden said he was asking Israel not to hit UNIFIL forces and Downing Street said it was \"appalled\" by reports that Israel deliberately fired on peacekeepers. News reporter@adamproduce...",
+ "source_file": "72da0cd00ae87cec18fbe4389074b0a35f069dab50e4e46ca9d861b01d06fd74/12b7058a099c48ff952a1dde84a947aa9ceaa2d552482626828aa68481327971.html"
+ },
+ {
+ "title": "Iran: Israel launches three waves of strikes on military targets | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Tehran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.28
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.22
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Iran",
+ "Israel",
+ "UK",
+ "Tehran",
+ "politics",
+ "business"
+ ],
+ "snippet": "Israel said it had achieved its objectives, warning Iran not to respond, while a semi-official Iranian news agency vowed a \"proportional reaction\" to the Israeli action. Saturday 26 October 2024 16:25...",
+ "source_file": "6e1108041c9b3e9ceb54ea6f73ad16b0f75a4b0b9fefa412a60e33a1ab0671df/2d8760a7955b516117bb545de1153f0e4e7d0022bdc053273706584ba52bffba.html"
+ },
+ {
+ "title": "Kamala Harris - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-03-03 05:08:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Kamala Harris The Latest News",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.3
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.17
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.13
+ }
+ ],
+ "keywords": [
+ "Kamala Harris The Latest News",
+ "Sky News",
+ "UK",
+ "politics",
+ "entertainment",
+ "health"
+ ],
+ "snippet": "...",
+ "source_file": "4c392991ffc1c2ad4985c1860fbf8a4f2e0e94134fc054cb35d970d035d086b1/82a8d233c9404e0fabb7bf4e31041a33d96b1636262725b25b37f340da30ae23.html"
+ },
+ {
+ "title": "Raw anger and real fear on streets of Lebanon after deadly pager and radio explosions | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Beirut",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.3
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.22
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.11
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Lebanon",
+ "Beirut",
+ "UK",
+ "technology",
+ "business",
+ "health"
+ ],
+ "snippet": "Barely had the funerals of four people killed in pager explosions begun, the Sky News team in Beirut heard the sound of an explosion a short distance away, followed by shouts and screams. Special corr...",
+ "source_file": "632b3d7a68ecfe72d287764518b4eb2336c508118a6f019ea3b7c7e6d2986f79/09e04169f1fd814761ed83b05df9d27d93caa2fe2de1427cd4224ea6acb04f8a.html"
+ },
+ {
+ "title": "Israel vows to retaliate after Iran fires nearly 200 missiles in 'extensive' attack | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Jerusalem",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Tel Aviv",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "World News",
+ "Sky News",
+ "Israel",
+ "Iran",
+ "Jerusalem",
+ "Tel Aviv",
+ "UK"
+ ],
+ "snippet": "Explosions were heard in Jerusalem and Tel Aviv as missiles flew over and were intercepted by defence systems. The attack marks a significant escalation in the Middle East conflict. Wednesday 2 Octobe...",
+ "source_file": "11c9cc95b45679aad6b92d9233721d7521ff2fb88f4a503372c54d75f75de0cf/9a3a674d279a3b76c2c917834528b3ed830682d8f4db5113c5b2172d27df1693.html"
+ },
+ {
+ "title": "Gaza - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-06 22:49:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.25
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.14
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.11
+ }
+ ],
+ "keywords": [
+ "Sky News",
+ "Gaza",
+ "UK",
+ "entertainment",
+ "environment",
+ "economy"
+ ],
+ "snippet": "...",
+ "source_file": "b6e845092037003a222bb4cafe6fa4c3b2f22bf450133caf36e83b9a9861f829/ee4b06ba8d3edcb784007bdc9736016e4e48724e87a6ee1ec35e97a0cb36ca5d.html"
+ },
+ {
+ "title": "Benjamin Netanyahu 'disgusted' at ICC prosecutor's arrest warrant bid | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Karim Khan KC",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the International Criminal Court",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.21
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.17
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Karim Khan KC",
+ "World News",
+ "Sky News",
+ "the International Criminal Court",
+ "UK",
+ "politics",
+ "environment"
+ ],
+ "snippet": "Prosecutor Karim Khan KC outlined the reasons for applying for the arrest warrants and said he has reasonable grounds to believe the men \"bear criminal responsibility\" for \"war crimes and crimes again...",
+ "source_file": "57e0a487fe729a358aab293bb35df49bee058cc195ea7c2d2efe66d18063bee9/866d9e88149b78b91cdbc3f9444069986152397340149fa622dcbe61181c55d8.html"
+ },
+ {
+ "title": "Israeli Prime Minister Benjamin Netanyahu sacks defence minister Yoav Gallant | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Benjamin Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Yoav Gallant",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "onIsraelon",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Benjamin Netanyahu",
+ "Yoav Gallant",
+ "Netanyahu",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "onIsraelon",
+ "Israel"
+ ],
+ "snippet": "Mr Netanyahu said there had been too many \"significant gaps\" between them over the management of Israel's wars. News reporter@samuelosborne93 Wednesday 6 November 2024 03:49, UK Israeli Prime Minister...",
+ "source_file": "f641aab7430b750897f2de7a6014b9d2ba9703b81b96be6787325ad47fb65b24/f8fa8f2bfdd23500b11b0d36b700ef1b0b4260204084783bb67f9e274800c7cd.html"
+ },
+ {
+ "title": "Inside a network of tunnels in Gaza, Israeli troops say they have found a Hamas cell used to hold hostages | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Khan Younis",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Khan Younis",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Sky",
+ "IDF",
+ "Gaza",
+ "UK"
+ ],
+ "snippet": "Sky's Alistair Bunkall was among the first journalists to be given access to Khan Younis by the IDF since the war began. On the surface, there was no sign of civilian life - while below ground he was ...",
+ "source_file": "937947c8050225b61612e21fa235ea56bd9915ed147540b7785488ac023c6f88/500d580ef5545d5ba2a382f25f4c544d21bb96fc8ec392032e2e599aa35f9cf1.html"
+ },
+ {
+ "title": "Iranian air defence radar was struck in Israeli attack, satellite photos suggest | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Isfahan",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Tehran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.39
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Isfahan",
+ "Israel",
+ "Iran",
+ "UK",
+ "Tehran",
+ "technology"
+ ],
+ "snippet": "Burn marks at a location near Isfahan's dual-use airport and airbase suggest that Israel's strike against Iran struck a radar for an S-300 air defence missile system, analysts say. Tuesday 23 April 20...",
+ "source_file": "0231443d8c08b6ab0eeb723b3f0fbe19c6f4be5f78636e8a48ae8df93174c78d/00bba72f2a9a330dea22a8e3d4e63d77909215945daf4aba7de6bc1eafccb329.html"
+ },
+ {
+ "title": "Video emerges of aid workers being fired on in Gaza - contradicting Israeli account of deadly attack | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Footage",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Palestine Red Crescent Society",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "United N",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.25
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Footage",
+ "the Palestine Red Crescent Society",
+ "United N",
+ "Gaza",
+ "UK",
+ "technology"
+ ],
+ "snippet": "The bodies of 15 aid workers were found in a \"mass grave\" after the incident. Saturday 5 April 2025 16:44, UK Please use Chrome browser for a more accessible video player Footage has emerged of the mo...",
+ "source_file": "5dbd72aa7f4eaa7075f3486dd4a6978d4073e0e322980d3eda47de7dec7a55bc/30d1b2e8e63adb0ab1cdd40115c1f5d624abba0d8d7fb93e2b08502f14048cb4.html"
+ },
+ {
+ "title": "Hassan Nasrallah killed: Decapitated and in disarray, Hezbollah and Iran must now decide to fight or back down | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hassan Nasrallah",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iran",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hassan Nasrallah",
+ "Hezbollah",
+ "World News",
+ "Sky News",
+ "Iran",
+ "UK",
+ "Lebanon",
+ "Israel"
+ ],
+ "snippet": "Following the death of Hassan Nasrallah, Hezbollah has been left leaderless and in disarray as Israeli attacks show no sign of letting up. But the militant group still has a considerable arsenal and m...",
+ "source_file": "1e537b0e13029f2b89d9a6ebfea59bddc056cc70bf871c140097f8b53d41326e/19bd717184e2f4f3390897fec06610eb7a6bbf456fddb584d3fc70358ee1f3e8.html"
+ },
+ {
+ "title": "Iraq Inquiry: Key Points From Chilcot Report | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Tony Blairs",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "George Bush",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "John Chilcot",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Tony Blair",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Iraq Inquiry Key Points",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Tony Blairs",
+ "George Bush",
+ "John Chilcot",
+ "Tony Blair",
+ "Iraq Inquiry Key Points",
+ "Politics News",
+ "Sky News",
+ "UK"
+ ],
+ "snippet": "Tony Blair's relationship with George Bush and the preparedness of the military are heavily criticised in the long-awaited report. Wednesday 6 July 2016 11:16, UK Please use Chrome browser for a more ...",
+ "source_file": "a4f54a9fdf0ab12eeffa1700c99cfd64b05745a92ce3598f01b6ccf76c206dc6/3fef9e9ecf79c4188f78d75f72a778ff76941a78fe47d43a44bed2280ca48ebc.html"
+ },
+ {
+ "title": "Labour antisemitism report: Jeremy Corbyn says complaints 'overstated' as party found to have broken law | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Jeremy Corbyn",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Jeremy Corbyns",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "TheLabourParty",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Labour Party",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.85
+ }
+ ],
+ "keywords": [
+ "Jeremy Corbyn",
+ "Jeremy Corbyns",
+ "TheLabourParty",
+ "Politics News",
+ "Sky News",
+ "the Labour Party",
+ "UK",
+ "politics"
+ ],
+ "snippet": "Labour broke the law in its failure to handle antisemitism complaints, the equalities watchdog has found. Thursday 29 October 2020 13:14, UK Please use Chrome browser for a more accessible video playe...",
+ "source_file": "443520fce55ca3734ebd5aa2793185606716f869644cd778e7531e5274cb49d1/6b8b0b99649b3a2dd7131790464596050540710b66746ad84164162889becd36.html"
+ },
+ {
+ "title": "Hamas ready for Gaza ceasefire 'immediately' - but claims Israel has put forward no 'serious proposals' in months | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Basem Naim",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.22
+ }
+ ],
+ "keywords": [
+ "Basem Naim",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Gaza",
+ "Israel",
+ "UK",
+ "politics"
+ ],
+ "snippet": "Dr Basem Naim, a Hamas official, suggested the group has no regrets over the 7 October attacks last year that killed 1,200 Israelis. Thursday 14 November 2024 20:59, UK Please use Chrome browser for a...",
+ "source_file": "33f7a653e709feab7477036cbcf9095250a59b4f1cf5dc26d68055c71ca13616/5363ca50dc4a09eded6d650f92cedc3f3f5251088a23ac8350b58be29c6f9999.html"
+ },
+ {
+ "title": "Gaza: More than 45,000 people have been killed in Israel-Hamas war, Palestinian health officials say | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "The Gaza health ministry",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "TheGazahealth ministry",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "The Gaza health ministry",
+ "Hamas",
+ "TheGazahealth ministry",
+ "Gaza",
+ "Israel",
+ "UK"
+ ],
+ "snippet": "The Gaza health ministry said at least 45,028 people have been killed and 106,962 others have been wounded since the conflict began on 7 October 2023, when Hamas militants crossed into Israel and mass...",
+ "source_file": "dec0204655225263232b5ec9c89817fe935d3725260d73938414fd3858e16b6a/e8bac469891bf9754621451c695707bbe0681c23366233df849be71b3b578aa1.html"
+ },
+ {
+ "title": "Hostage fled as Israeli forces opened fire, IDF report into three deaths says | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.18
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.17
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.14
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "IDF",
+ "UK",
+ "environment",
+ "health",
+ "technology"
+ ],
+ "snippet": "The investigation - released nearly two weeks after the incident - repeats previous reporting that the hostages were shirtless and one of them was waving a white flag. Thursday 28 December 2023 21:16,...",
+ "source_file": "17f6744e50585e0cb2382969ca8f72a8efa7bb6ebc3070fbabf2ed5cb7c1345d/321d9a4d3a1d525d645e60453e3fd3869bcac3beafe41fe675cc5ca64ab10e0f.html"
+ },
+ {
+ "title": "UK to suspend some arms sales to Israel, foreign secretary announces | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "David Lammy",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Lammy",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.88
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.03
+ }
+ ],
+ "keywords": [
+ "David Lammy",
+ "Lammy",
+ "Politics News",
+ "Sky News",
+ "UK",
+ "Israel",
+ "politics",
+ "entertainment"
+ ],
+ "snippet": "David Lammy said the ban was \"not an arms embargo\" - but there was a \"clear risk\" that some UK weapons could be used in violation of international law. Political reporter@fayebrownSky Monday 2 Septemb...",
+ "source_file": "c2c427bf6d2782899d90905883d95e303f6a8a25a1f5e752aef4aa39bcf45eab/3c12c797790fdb28e90e1e9b399700020812bd721574f745e32543e0782518f2.html"
+ },
+ {
+ "title": "Joy and relief as tens of thousands of Palestinians head home to northern Gaza | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Umm Mohammed Ali",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.18
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.15
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.13
+ }
+ ],
+ "keywords": [
+ "Umm Mohammed Ali",
+ "World News",
+ "Sky News",
+ "Gaza",
+ "entertainment",
+ "business",
+ "environment"
+ ],
+ "snippet": "Scenes of celebration marked the opening of crossings as the fragile ceasefire holds, allowing families to return to northern Gaza after months away. But not everyone will find their homes intact. Mon...",
+ "source_file": "33141d1f8af1046baea9b6cd2aa75982fb18ebcec3063a4fb7a9f1b46db5e4a4/606aca2b3e7a22107037dd86370917539d0fb3e216f86b5887d8f373a05838e9.html"
+ },
+ {
+ "title": "Israel - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-06 16:35:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.23
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ }
+ ],
+ "keywords": [
+ "Sky News",
+ "Israel",
+ "UK",
+ "entertainment",
+ "technology",
+ "business"
+ ],
+ "snippet": "...",
+ "source_file": "6dfe0714ecd0f754af97ae1c58c003d53dd55f83392f31205141171b1e9a2248/0be4ba92d5cb7d009fc7af615d781df3e4db6947b77ab5829da0ca1c47d09c4c.html"
+ },
+ {
+ "title": "Labour MP Dan Norris arrested on suspicion of rape and child sex offences | UK News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Dan Norris",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Norris",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hanham",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "ALabour Partyspokesperson",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "UK News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Labour Party",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "ag",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Dan Norris",
+ "Norris",
+ "Hanham",
+ "ALabour Partyspokesperson",
+ "UK News",
+ "Sky News",
+ "the Labour Party",
+ "ag"
+ ],
+ "snippet": "Mr Norris, the MP for North East Somerset and Hanham, has been suspended by the Labour Party. Saturday 5 April 2025 20:57, UK Labour MP Dan Norris has been arrested on suspicion of rape and child sex ...",
+ "source_file": "c89ac2de0d7a1db21e1fc6b09e624d1e1bf6103598d8f6af76d9278d5f95693c/9febc9b445376d9a7d44749e2f7a838b5a2c9c6073093aeaa424f5a936c9ae19.html"
+ },
+ {
+ "title": "How the rebel assault unfolded in Syria - from Idlib to Damascus | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Bashar al Assad",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Syria",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Idlib",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Damascus",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.41
+ }
+ ],
+ "keywords": [
+ "Bashar al Assad",
+ "World News",
+ "Sky News",
+ "Syria",
+ "Idlib",
+ "Damascus",
+ "UK",
+ "politics"
+ ],
+ "snippet": "It took less than two weeks for insurgents to tear through government defences, taking several cities on the way to the Syrian capital Damascus. Here's how it happened. Sunday 8 December 2024 10:42, U...",
+ "source_file": "1d7e34a0ccbbf0f0e16e8d917da777cf5c5fe0fbd1b56974c2a2e7ae318a1882/736b29d50c18f7ba21bdb25f2cd7d5011414610bdb4219e0244bcb39c52a3636.html"
+ },
+ {
+ "title": "Who is Mohammed Deif? The shadowy Hamas commander known as 'The Guest' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Mohammed Deif",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Rafa Salama",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.16
+ }
+ ],
+ "keywords": [
+ "Mohammed Deif",
+ "Rafa Salama",
+ "Hamas",
+ "World News",
+ "Sky News",
+ "UK",
+ "Israel",
+ "business"
+ ],
+ "snippet": "Mohammed Deif is famously elusive, keeping his face out of the public domain and only rarely appearing in video messages. Sky News looks at what is known about the man nicknamed \"The Guest\" or \"the ca...",
+ "source_file": "08f69deb4667384b76f692f3c68ef7aaecb18a770c8f0dae4abb8d869fb279aa/2ff5deade4520c2041b04d8425d461ea9176a32927eddc2d07b70f34148d4334.html"
+ },
+ {
+ "title": "Gaza aid workers 'targeted' by Israel, Palestinian Red Crescent says, as bodies recovered from 'mass grave' | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Palestinian Red Crescent",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the Palestine Red Crescent Society",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Palestinian Red Crescent",
+ "World News",
+ "Sky News",
+ "IDF",
+ "the Palestine Red Crescent Society",
+ "Gaza",
+ "Israel",
+ "UK"
+ ],
+ "snippet": "The workers were attacked \"by the Israeli occupation forces\" while carrying out humanitarian work, the agency says, but, according to the IDF, their troops killed several militants in an active combat...",
+ "source_file": "ef1aa4afa8035993936b09b1dd7d1cceddab1bb9f30efd7cd235ebd72fd2d7ff/98218a8bf0d2b36d83759e2d7775e0c3352561b89f87b4302583e9877489e94d.html"
+ },
+ {
+ "title": "Sir Keir Starmer 'renewed' by double by-election win - but 'mountain to climb' before national poll | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Keir Starmer",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Faye Brown",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Jennifer Scott",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Tamworth",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Keir Starmer",
+ "Faye Brown",
+ "Jennifer Scott",
+ "Politics News",
+ "Sky News",
+ "Labour",
+ "UK",
+ "Tamworth"
+ ],
+ "snippet": "The Labour leader says he can \"see the summit\" after overturning two huge Conservative majorities, but it will still be a \"big task\" for the party to win at the general election. By Faye Brown and Jen...",
+ "source_file": "4370e33bae5f808047da34e1702d9990f41f33fcdf4ffac7d5e114770a5dee54/a51398f54a7c3b24bd4de482e2e940619f80a3a7b1c4f44a52d6cd60c3e6eb67.html"
+ },
+ {
+ "title": "Israel breaking international law over Gaza aid blockade, UK government says for first time | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "David Lammy",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.94
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.01
+ }
+ ],
+ "keywords": [
+ "David Lammy",
+ "Politics News",
+ "Sky News",
+ "Israel",
+ "Gaza",
+ "UK",
+ "politics",
+ "technology"
+ ],
+ "snippet": "The foreign secretary describes Israel's decision to stop all goods from entering the strip as \"unacceptable, hugely alarming and very worrying\" - in a significant strengthening of the UK's language. ...",
+ "source_file": "089f608bbf000492a878650b557a936045021bdf6e731ea010acc7c1225bcb7e/674bb69117be479b6a08882e9a8e71bf146c76fcb7b9d9c24e8a04c5ac020d1e.html"
+ },
+ {
+ "title": "Hamas - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-04-02 18:48:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas The Latest News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.2
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.2
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.1
+ }
+ ],
+ "keywords": [
+ "Hamas The Latest News",
+ "Sky News",
+ "UK",
+ "entertainment",
+ "politics",
+ "economy"
+ ],
+ "snippet": "...",
+ "source_file": "3227e5cd8b4d65f7ba09e05a972a96e9f81d6f6f1020071ff1b95d6c0d74daad/15b70b9a13c44c34c074d6daa932e5a34a929f788014b528ed034843eafc28bf.html"
+ },
+ {
+ "title": "Sir Keir Starmer seeks to clarify Gaza remarks following backlash from Labour councillors | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Keir Starmer",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.88
+ }
+ ],
+ "keywords": [
+ "Keir Starmer",
+ "Labour",
+ "Politics News",
+ "Sky News",
+ "Gaza",
+ "Israel",
+ "UK",
+ "politics"
+ ],
+ "snippet": "The Labour leader said Israel did not have the right to withhold humanitarian aid after previous comments he made in an interview prompted resignations from within the party. Political reporter@alexro...",
+ "source_file": "1f0a736371db9eeb1218c4489346e229698e5a5153ae1d0cf6b8fad19cfb620e/4275007d9c2d5edbd4de3e7418a86839769e80ec716ba478bd3eaf0058ab8471.html"
+ },
+ {
+ "title": "UN calls for protection of Gaza health facilities after Israeli raids hospital and orders patients to evacuate | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "UN",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "health ministry",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "UN",
+ "World News",
+ "Sky News",
+ "Hamas",
+ "health ministry",
+ "IDF",
+ "Gaza",
+ "Israel"
+ ],
+ "snippet": "Israel's military claimed the hospital \"serves as a Hamas terrorist stronghold\" and said it had made efforts to mitigate harm to civilians, while the Hamas-run health ministry said the IDF had set fir...",
+ "source_file": "df79db272fd7aa45a5a2d9eb29ede5a9c51f4f3e6c61dadb0124bface62859f7/1249729c4b23f241c2ebf07846621f2c4f1c950edffa3bd3a4f313ba38246ff8.html"
+ },
+ {
+ "title": "Politics latest: Badenoch says she 'respects' Israel's decision to deny entry to Labour MPs | Politics News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Trevor Phillips",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Map",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "MPs Yuan Yang",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Abtisam M",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Labour",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Politics News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky Newss",
+ "type": "ORG",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Trevor Phillips",
+ "Map",
+ "MPs Yuan Yang",
+ "Abtisam M",
+ "Labour",
+ "Politics News",
+ "Sky News",
+ "Sky Newss"
+ ],
+ "snippet": "Speaking on Sky News's Sunday Morning With Trevor Phillips programme, the Conservative leader says: \"I think that every country should be able to control its borders, and that's what Israel is doing, ...",
+ "source_file": "cb04fee875dd386f69b0f4eb24e9458c856cd04bf128c55ea7bc14cc423b6dc3/1b77f85f04dd677e59a093e5f736812bb7a25d8caa19e0648569636cf80558ae.html"
+ },
+ {
+ "title": "Gaza strikes latest: Israel continuing strikes on Gaza as tanks at border - after 'hundreds killed' in attacks | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.21
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.19
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Gaza",
+ "Israel",
+ "UK",
+ "business",
+ "politics"
+ ],
+ "snippet": "Israel has launched dozens of airstrikes across Gaza after ceasefire talks stalled, ending a fragile truce that began in January. At least 400 people have been killed, according to Hamas officials in ...",
+ "source_file": "148e91eb407d5b3f8c5b567223c9d387439dafb1f29581e79cb61c5af2100ade/b0590d5458620c95f01017ef1a47994cdb1ddbf7cf7e4d7f8e49d40cb38cea14.html"
+ },
+ {
+ "title": "Is the government's new Illegal Migration Bill legal? | UK News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Migration Bill",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "UK News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Home Office",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.3
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.25
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.09
+ }
+ ],
+ "keywords": [
+ "Migration Bill",
+ "UK News",
+ "Sky News",
+ "Home Office",
+ "UK",
+ "politics",
+ "business",
+ "economy"
+ ],
+ "snippet": "The Home Office backlog of more than 160,000 cases and the small number of countries the government can send failed asylum seekers to has seen many describe the bill as \"unworkable\", while other criti...",
+ "source_file": "f5320e3047122cd3eb1e59e90ecb66a210f10e1998d3084ab3d83cf5f253d07d/4030366bdd5a2c14eb170daaab5c05e4bab19c05d802506e11ddcc8795b74c31.html"
+ },
+ {
+ "title": "Israel-Hamas war: Eight children killed after blast reduces Gaza block to rubble | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.19
+ },
+ {
+ "text": "environment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.19
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.18
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Israel",
+ "Gaza",
+ "UK",
+ "economy",
+ "environment",
+ "technology"
+ ],
+ "snippet": "A survivor of the explosion said there had been \"no warning\" before the explosion - the source of which has not been verified - hit the four-storey building. News reporter@Reemul_B Friday 20 October 2...",
+ "source_file": "0313112899cfea84a0ecdd2a38b78265bc5fbc1522c70ae392ab32935013a4f8/88556bc4fd85ffe33768253765d992b7ce107f11a998053ff26db6668a1080c1.html"
+ },
+ {
+ "title": "'Like the end of the world': Israelis still haunted by 7 October Hamas attacks one year on | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Middle East",
+ "type": "LOC",
+ "source": "spacy"
+ },
+ {
+ "text": "politics",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.21
+ },
+ {
+ "text": "technology",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.13
+ }
+ ],
+ "keywords": [
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Israel",
+ "UK",
+ "Middle East",
+ "politics",
+ "technology"
+ ],
+ "snippet": "When Hamas fighters crossed into Israel a year ago, millions of lives were changed forever. On the eve of the anniversary, some of those people have spoken to Sky News about their stories on that day,...",
+ "source_file": "2f2cab25b05508f4716a19ec2972d9821312b7d79185c34ec8ae30df243f1de9/39fe42f780af3134be5413eba1b0bb95ac501fbd852f1884ee470ec96634f150.html"
+ },
+ {
+ "title": "Palestinian officials say Israel kills eight people in Gaza Strip and five in West Bank | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza Strip",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "West Bank",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Hamas",
+ "Israel",
+ "Gaza Strip",
+ "West Bank",
+ "Gaza",
+ "UK"
+ ],
+ "snippet": "A fragile ceasefire in Gaza between Israel and Hamas - which started in January - has largely held. Tuesday 11 March 2025 16:20, UK Israel has killed eight people in the Gaza Strip and five more in th...",
+ "source_file": "2a68cb86a52e4333ba48d95ab3fcb9bc4e52a7079c088c26e43f1b2fecbafcd5/6f87f97413d4cb51f868a8b50775f03b8798d2d985d4d2831207950ae8534ccf.html"
+ },
+ {
+ "title": "ICJ rules Israel settlement policy in occupied Palestinian territories in breach of international law | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "ICJ",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the International Court of Justice",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "the West Bank",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Jerusalem",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "ICJ",
+ "World News",
+ "Sky News",
+ "the International Court of Justice",
+ "Israel",
+ "UK",
+ "the West Bank",
+ "Jerusalem"
+ ],
+ "snippet": "Israel did not send a legal team to the hearings - and says questions put to the court were prejudiced and failed to address its security concerns. Friday 19 July 2024 16:55, UK Israel's settlement po...",
+ "source_file": "61984c8553e3fb18de414987dd0c8452f5448f6168dce3931da13405643a8995/bd3b829c1c76d5f88024ce7386cb7137af33e09c04fde4b16b9e571ab7f05628.html"
+ },
+ {
+ "title": "Qatar tells Hamas it won't host group's political office unless Gaza ceasefire talks with Israel improve | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Qatar",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gulf",
+ "type": "LOC",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hamas",
+ "World News",
+ "Sky News",
+ "Qatar",
+ "Gaza",
+ "Israel",
+ "UK",
+ "Gulf"
+ ],
+ "snippet": "The Gulf country also said it would stop trying to mediate a ceasefire deal until the two sides \"demonstrate a sincere willingness to return to the negotiating table with the objective of putting an e...",
+ "source_file": "af7e6786e840480dfa8ba539226a05afa9b1dcd539fc2ce781173d789b4a646d/7abc775e8d8a7d5e01a121f02323537c4010ad9aaf17e9d512777a13cd5ff800.html"
+ },
+ {
+ "title": "International court set to hear genocide case against Israel - but what does it mean and what could happen? | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "The International Court of Justice",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "the United Nations",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UN",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "South Africa",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "The International Court of Justice",
+ "the United Nations",
+ "UN",
+ "Israel",
+ "South Africa",
+ "Gaza"
+ ],
+ "snippet": "South Africa has brought the case against Israel, accusing it of committing genocide against Palestinians in Gaza. International affairs editor@DominicWaghorn Thursday 11 January 2024 09:52, UK The In...",
+ "source_file": "19022623fb5e085fa0eae350983c5e9df14df8f7d32ae1f4ddb745982d2cff32/a14482b25262415c04defb2eade1239a46d58a85ab6300cd09e82d42170662d6.html"
+ },
+ {
+ "title": "Why Hezbollah drone attack has caused such alarm in Israel | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Iron Dome",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "IDF",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Middle East",
+ "type": "LOC",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Hezbollah",
+ "World News",
+ "Sky News",
+ "Iron Dome",
+ "IDF",
+ "Israel",
+ "UK",
+ "Middle East"
+ ],
+ "snippet": "The drone managed to evade Israel's sophisticated Iron Dome defence system and impact a dining hall full of soldiers eating. Middle East correspondent@AliBunkallSKY Tuesday 15 October 2024 12:00, UK T...",
+ "source_file": "3ce6526606ba47f1d574d8326d8b05450279fd9af219f419a88a9342c02e194d/505567c9cf26a39be1953fc752e1cabd4aaaf9c7683cbd4664ac8c71b66f1c1b.html"
+ },
+ {
+ "title": "Israeli authorities say at least 11 people killed in rocket attack on football pitch in Israeli-occupied Golan Heights | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Druze",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Majdal Shams",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Golan Heights",
+ "type": "LOC",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Druze",
+ "Majdal Shams",
+ "World News",
+ "Sky News",
+ "Hezbollah",
+ "Lebanon",
+ "UK",
+ "Golan Heights"
+ ],
+ "snippet": "The attack came hours after an Israeli airstrike in Lebanon killed three members of the Hezbollah group. Sunday 28 July 2024 05:17, UK At least 11 people, including children, have been killed in a roc...",
+ "source_file": "bd1b27cbd90ee856260c12063cdd7b249a144a71fda55a26d1dc33c6f9f10f9b/8fd3dca5cfd870a1aa8d07c56b5d2cc688a879d95d18c0530f750718c0d4d291.html"
+ },
+ {
+ "title": "Israel's march into Lebanon felt inevitable - but it will want to avoid full-scale invasion | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hezbollah",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Defence",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Lebanon",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "business",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.44
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Hezbollah",
+ "Defence",
+ "Israel",
+ "Lebanon",
+ "UK",
+ "business"
+ ],
+ "snippet": "With Hezbollah's ability to command any effective counterattack severely undermined after the pager explosions and the death of its leader, Israel will be wanting to exploit the chaos. Security and De...",
+ "source_file": "ea2416f1fb75f20fea3299ef738e8809cedc1cdb51031b55906ddb06fdb4fb05/d1f238a3d62b96cc0c7dc4c3fbd8ea71a212fda7d922f0f06e0e1a7a2180fece.html"
+ },
+ {
+ "title": "Trump shares AI video of Gaza vision featuring golden statues, bearded belly dancers and Netanyahu on a sunbed | US News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Netanyahu",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Elon Musk",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Donald Trump",
+ "type": "PERSON",
+ "source": "spacy"
+ },
+ {
+ "text": "Trump",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "AI",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "US News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ }
+ ],
+ "keywords": [
+ "Netanyahu",
+ "Elon Musk",
+ "Donald Trump",
+ "Trump",
+ "AI",
+ "US News",
+ "Sky News",
+ "Gaza"
+ ],
+ "snippet": "The footage, which the 78-year-old shared without comment, shows the war-ravaged territory transformed into a Middle Eastern paradise with exotic beaches, Dubai-style skyscrapers, luxury yachts and pe...",
+ "source_file": "54c3b64b1382ac877e52712ddeac5dda1a475528bb19b0bbc322e71b61bfb76b/7bd523753148a618724d9f38ff0fabe8633a475b98f4979a6dae8f1921f31a2e.html"
+ },
+ {
+ "title": "Houthi Rebels - The Latest News from the UK and Around the World | Sky News",
+ "date": "2025-03-28 14:09:00",
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "Houthi Rebels The Latest News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "entertainment",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.29
+ },
+ {
+ "text": "economy",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.12
+ }
+ ],
+ "keywords": [
+ "Houthi Rebels The Latest News",
+ "Sky News",
+ "UK",
+ "entertainment",
+ "economy",
+ "health"
+ ],
+ "snippet": "...",
+ "source_file": "8880aa01f35334f7143fb7a09bef470482cdf26043647284ba40c072cf969f58/b98c8c53eecbd9eae898ed47f61e53958eb16a00b79cbf48ab857dedf657576c.html"
+ },
+ {
+ "title": "Israeli troops expand 'security zone' in northern Gaza - after announcing plans to seize areas of south | World News | Sky News",
+ "date": null,
+ "website": "Sky News",
+ "keywords_data": [
+ {
+ "text": "World News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Sky News",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Hamas",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "health ministry",
+ "type": "ORG",
+ "source": "spacy"
+ },
+ {
+ "text": "Gaza",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "Israel",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "UK",
+ "type": "GPE",
+ "source": "spacy"
+ },
+ {
+ "text": "health",
+ "type": "TOPIC",
+ "source": "transformer",
+ "score": 0.29
+ }
+ ],
+ "keywords": [
+ "World News",
+ "Sky News",
+ "Hamas",
+ "health ministry",
+ "Gaza",
+ "Israel",
+ "UK",
+ "health"
+ ],
+ "snippet": "Israel's expansions come after more than 100 people in Gaza were killed by Israeli airstrikes on Thursday, according to the Hamas-run health ministry. Friday 4 April 2025 14:06, UK Israeli troops have...",
+ "source_file": "a453c8fa2808bc6ab14eea8d75a8136510e8ca0dc65e6e31fdf151c266f73b88/4f7c28f0776f85034280a2490992f74a3387a296f84029e3aa1a98a4f232d964.html"
+ }
+]
\ No newline at end of file
diff --git a/experiments/frontend/script.js b/experiments/frontend/script.js
new file mode 100644
index 0000000..75e8678
--- /dev/null
+++ b/experiments/frontend/script.js
@@ -0,0 +1,934 @@
+// --- Global Variables ---
+let allArticlesData = [];
+let processedDataByDate = new Map(); // Stores {nodes, links} for each date
+let availableDates = [];
+let currentGraphData = { nodes: [], links: [] }; // Holds data currently displayed
+let svg, simulation, g, link, nodeGroup, label, tooltip, edgeInfo, legend; // D3 selections
+let maxPopularity = 1; // Max keyword count across all dates for slider range
+
+// --- Constants ---
+const classCategories = [
+ "politics", "economy", "business", "technology",
+ "health", "science", "sports", "entertainment", "education", "environment"
+];
+const classColors = {
+ "politics": "#FF5733", "economy": "#33FF57", "business": "#3357FF",
+ "technology": "#F033FF", "health": "#33FFF0", "science": "#FFF033",
+ "sports": "#FF33A8", "entertainment": "#A833FF", "education": "#FF8C33",
+ "environment": "#33FF8C"
+};
+const defaultColor = "#999999";
+
+// --- DOM Elements ---
+// Use d3.select for consistency, although document.getElementById etc. would also work
+const dateSelect = d3.select("#date-select");
+const categoryFiltersDiv = d3.select("#category-filters");
+const popularitySlider = d3.select("#popularity-slider");
+const popularityValueSpan = d3.select("#popularity-value");
+const popularityMaxNodesInput = d3.select("#popularity-max-nodes");
+const loadingDiv = d3.select(".loading");
+const noDataMessage = d3.select("#no-data-message");
+const graphContainer = d3.select("#graph-container"); // Get graph container
+const graphDiv = d3.select("#graph"); // Get the div where SVG will be placed
+const selectAllCatsButton = d3.select("#select-all-cats");
+const deselectAllCatsButton = d3.select("#deselect-all-cats");
+const resetFiltersButton = d3.select("#reset-filters");
+
+// --- Initial Setup ---
+// Wait for the DOM to be fully loaded before setting up SVG and legend
+document.addEventListener('DOMContentLoaded', () => {
+ setupGraphSVG();
+ setupLegend(); // Setup static legend parts
+
+ // --- Load Data ---
+ fetch('parsed_news.json') // Make sure this path is correct relative to index.html
+ .then(response => {
+ if (!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+ return response.json();
+ })
+ .then(rawData => {
+ allArticlesData = rawData;
+ preprocessData(allArticlesData);
+ populateControls(); // Now safe to populate controls that depend on data
+ loadingDiv.style('display', 'none'); // Hide loading indicator
+ // Trigger initial graph render for the first available date
+ if (availableDates.length > 0) {
+ dateSelect.property('value', availableDates[0]); // Select first date
+ updateGraph(); // Render initial graph
+ } else {
+ noDataMessage.style('display', 'block').text("No articles found in the data.");
+ }
+ })
+ .catch(error => {
+ console.error('Error loading or processing the data:', error);
+ loadingDiv.text(`Error loading data: ${error.message}. Check console.`);
+ noDataMessage.style('display', 'block').text("Failed to load or process news data.");
+ });
+});
+
+
+// --- Data Pre-processing ---
+function preprocessData(articles) {
+ // Group articles by the DATE PART ONLY (YYYY-MM-DD)
+ const articlesByDate = d3.group(articles, d => {
+ if (d.date && typeof d.date === 'string' && d.date.length >= 10) {
+ // Extract the first 10 characters which represent YYYY-MM-DD
+ return d.date.substring(0, 10);
+ }
+ return 'unknown_date'; // Handle cases where date is missing or invalid
+ });
+
+ // Get sorted list of unique YYYY-MM-DD dates
+ availableDates = Array.from(articlesByDate.keys())
+ .filter(date => date !== 'unknown_date') // Remove the placeholder if it exists
+ .sort(); // Sort dates chronologically
+
+ let globalMaxPop = 0;
+
+ availableDates.forEach(date => {
+ const dailyArticles = articlesByDate.get(date);
+ if (dailyArticles) { // Ensure there are articles for this date key
+ const graphData = processSingleDateData(dailyArticles);
+ processedDataByDate.set(date, graphData);
+
+ // Find the max popularity for this date
+ const dateMaxPop = d3.max(graphData.nodes, d => d.count) || 0;
+ if (dateMaxPop > globalMaxPop) {
+ globalMaxPop = dateMaxPop;
+ }
+ }
+ });
+
+ maxPopularity = globalMaxPop > 1 ? globalMaxPop : 10; // Set slider max (min 10)
+ popularitySlider.attr("max", maxPopularity);
+
+ // Adjust initial slider value if needed
+ const currentSliderVal = parseInt(popularitySlider.property("value"));
+ if (currentSliderVal > maxPopularity) {
+ const newVal = Math.min(5, maxPopularity); // Set a reasonable default if max is low
+ popularitySlider.property("value", newVal);
+ popularityValueSpan.text(newVal);
+ } else if (maxPopularity <= 1) {
+ popularitySlider.property("value", 1);
+ popularityValueSpan.text(1);
+ } else {
+ // Update display if initial value is valid but different from default
+ popularityValueSpan.text(currentSliderVal);
+ }
+}
+
+
+// Process data for a single date (similar to original processData)
+function processSingleDateData(articles) {
+ const nodes = new Map();
+ const links = new Map(); // Use map for easier link aggregation
+
+ articles.forEach(article => {
+ const keywords = Array.isArray(article.keywords) ? article.keywords : [];
+
+ keywords.forEach(keyword => {
+ // Basic check for empty/null keywords
+ if (!keyword || typeof keyword !== 'string' || keyword.trim() === '') return;
+ const trimmedKeyword = keyword.trim(); // Use trimmed keyword
+
+ if (!nodes.has(trimmedKeyword)) {
+ const isClass = classCategories.includes(trimmedKeyword.toLowerCase());
+ nodes.set(trimmedKeyword, {
+ id: trimmedKeyword,
+ articles: [article],
+ count: 1,
+ isClass: isClass,
+ class: isClass ? trimmedKeyword.toLowerCase() : null,
+ categoryConnections: {} // Calculate later
+ });
+ } else {
+ const node = nodes.get(trimmedKeyword);
+ node.articles.push(article);
+ node.count += 1;
+ }
+ });
+
+ // Create links (use trimmed keywords)
+ const articleKeywords = keywords.map(k => k?.trim()).filter(Boolean); // Trimmed and filtered list
+ for (let i = 0; i < articleKeywords.length; i++) {
+ for (let j = i + 1; j < articleKeywords.length; j++) {
+ const source = articleKeywords[i];
+ const target = articleKeywords[j];
+ if (source === target) continue; // Don't link a keyword to itself
+
+ // Create a unique key for the link (order independent)
+ const linkKey = [source, target].sort().join('||');
+
+ if (links.has(linkKey)) {
+ const link = links.get(linkKey);
+ link.value += 1;
+ if (!link.articles.some(a => a.url === article.url)) { // Avoid duplicate article refs if possible
+ link.articles.push(article);
+ }
+ } else {
+ links.set(linkKey, {
+ source: source, // Store the actual keyword ID
+ target: target,
+ value: 1,
+ articles: [article]
+ });
+ }
+ }
+ }
+ });
+
+ // Calculate category connections for non-class nodes
+ const finalLinks = Array.from(links.values());
+ const finalNodes = Array.from(nodes.values());
+
+ finalNodes.forEach(node => {
+ if (!node.isClass) {
+ node.categoryConnections = {}; // Initialize here
+ finalLinks.forEach(link => {
+ let otherNodeId = null;
+ // Check source/target which might be objects or strings depending on D3 version/usage
+ const sourceId = typeof link.source === 'object' ? link.source.id : link.source;
+ const targetId = typeof link.target === 'object' ? link.target.id : link.target;
+
+ if (sourceId === node.id) otherNodeId = targetId;
+ else if (targetId === node.id) otherNodeId = sourceId;
+
+ if (otherNodeId) {
+ const otherNode = nodes.get(otherNodeId); // Use the original map for lookup
+ if (otherNode && otherNode.isClass) {
+ const category = otherNode.class;
+ node.categoryConnections[category] = (node.categoryConnections[category] || 0) + link.value;
+ }
+ }
+ });
+
+ // Calculate primary class and percentages
+ const connections = node.categoryConnections;
+ if (Object.keys(connections).length > 0) {
+ node.relatedClasses = Object.keys(connections);
+ // Find the class with the highest connection count
+ node.primaryClass = Object.entries(connections)
+ .reduce((a, b) => a[1] > b[1] ? a : b)[0]; // Find max entry based on value
+
+ const totalConnections = Object.values(connections).reduce((a, b) => a + b, 0);
+ node.categoryPercentages = {};
+ if (totalConnections > 0) {
+ Object.entries(connections).forEach(([category, count]) => {
+ node.categoryPercentages[category] = count / totalConnections;
+ });
+ }
+ } else {
+ node.primaryClass = null; // No connections to categories
+ node.relatedClasses = [];
+ node.categoryPercentages = {};
+ }
+ } else {
+ // For class nodes, set primaryClass to itself for easier filtering
+ node.primaryClass = node.class;
+ node.relatedClasses = [node.class];
+ node.categoryPercentages = {[node.class]: 1}; // Represents 100% itself
+ }
+ });
+
+ return {
+ nodes: finalNodes,
+ links: finalLinks
+ };
+}
+
+// --- UI Control Setup ---
+function populateControls() {
+ // Date Selector
+ dateSelect.selectAll('option')
+ .data(availableDates)
+ .join('option') // Use join for potential updates later
+ .attr('value', d => d)
+ .text(d => d);
+
+ // Category Filters
+ categoryFiltersDiv.selectAll('.category-filter-item')
+ .data(classCategories)
+ .join('div') // Use join
+ .attr('class', 'category-filter-item')
+ .html(d => `
+
+ `);
+
+ // Add event listeners AFTER elements are created
+ dateSelect.on('change', updateGraph);
+ categoryFiltersDiv.selectAll('.category-checkbox').on('change', updateGraph);
+ popularitySlider.on('input', () => {
+ popularityValueSpan.text(popularitySlider.property('value'));
+ // No need to call updateGraph here, use 'change' event for less frequent updates
+ });
+ popularitySlider.on('change', updateGraph); // Update graph when slider value is finalized
+
+ popularityMaxNodesInput.on('change', updateGraph);
+
+ selectAllCatsButton.on('click', () => {
+ categoryFiltersDiv.selectAll('.category-checkbox').property('checked', true);
+ updateGraph();
+ });
+ deselectAllCatsButton.on('click', () => {
+ categoryFiltersDiv.selectAll('.category-checkbox').property('checked', false);
+ updateGraph();
+ });
+ resetFiltersButton.on('click', () => {
+ if (availableDates.length > 0) {
+ dateSelect.property('value', availableDates[0]);
+ }
+ categoryFiltersDiv.selectAll('.category-checkbox').property('checked', true);
+ popularitySlider.property("value", 1);
+ popularityValueSpan.text(1);
+ popularityMaxNodesInput.property("value", 150);
+ updateGraph();
+ });
+}
+
+
+// --- Filtering Logic ---
+function filterData(originalData) {
+ const selectedCategories = categoryFiltersDiv.selectAll('.category-checkbox:checked').nodes().map(cb => cb.value);
+ const minPopularity = parseInt(popularitySlider.property('value'));
+ const maxNodes = parseInt(popularityMaxNodesInput.property('value'));
+
+ if (!originalData || !originalData.nodes) {
+ return { nodes: [], links: [] }; // Return empty if no original data
+ }
+
+ let filteredNodes = originalData.nodes.filter(node => {
+ // Popularity Filter
+ if (node.count < minPopularity) {
+ return false;
+ }
+
+ // Category Filter
+ // If NO categories are selected, only show nodes that have NO category affiliation at all?
+ // Or show all nodes respecting only popularity? Let's show nodes matching popularity if no cats selected.
+ if (selectedCategories.length === 0) {
+ return true; // Show all nodes that pass popularity filter if no category is selected
+ }
+
+ // If categories ARE selected:
+ if (node.isClass) {
+ // Keep class node only if its category is selected
+ return selectedCategories.includes(node.class);
+ } else {
+ // Keep non-class node if its primary class is selected OR any of its related classes are selected
+ return selectedCategories.includes(node.primaryClass) ||
+ (node.relatedClasses && node.relatedClasses.some(cat => selectedCategories.includes(cat)));
+ }
+ // This line shouldn't be reached due to the logic above, but as a fallback:
+ // return false;
+ });
+
+ // Max Nodes Limit (applied after other filters, prioritizing higher count)
+ if (filteredNodes.length > maxNodes) {
+ // Sort by popularity descending, then alphabetically for tie-breaking
+ filteredNodes.sort((a, b) => {
+ const countDiff = b.count - a.count;
+ if (countDiff !== 0) return countDiff;
+ return a.id.localeCompare(b.id);
+ });
+ filteredNodes = filteredNodes.slice(0, maxNodes);
+ }
+
+ const filteredNodeIds = new Set(filteredNodes.map(n => n.id));
+
+ // Filter Links: Keep link only if both source and target nodes are in the filtered set
+ const filteredLinks = originalData.links.filter(link => {
+ const sourceId = typeof link.source === 'object' ? link.source.id : link.source;
+ const targetId = typeof link.target === 'object' ? link.target.id : link.target;
+ return filteredNodeIds.has(sourceId) && filteredNodeIds.has(targetId);
+ });
+
+ return { nodes: filteredNodes, links: filteredLinks };
+}
+
+// --- D3 Graph Rendering ---
+function setupGraphSVG() {
+ // Get dimensions from container AFTER DOM is ready
+ const width = graphContainer.node().getBoundingClientRect().width;
+ const height = graphContainer.node().getBoundingClientRect().height;
+
+ svg = graphDiv // Select the specific div for the SVG
+ .append("svg")
+ .attr("width", width)
+ .attr("height", height)
+ .attr("viewBox", [0, 0, width, height]) // Improves responsiveness
+ .attr("style", "max-width: 100%; height: auto; height: intrinsic;") // More CSS for responsiveness
+ .call(d3.zoom().scaleExtent([0.1, 8]).on("zoom", (event) => {
+ if (g) g.attr("transform", event.transform);
+ }));
+
+ // Append the main group 'g' element where graph elements will live
+ g = svg.append("g");
+
+ // Select tooltip and edge info divs (already exist in HTML)
+ tooltip = d3.select(".tooltip");
+ edgeInfo = d3.select(".edge-info");
+
+ // Add background click handler to reset highlights
+ svg.on("click", function(event) {
+ // Prevent reset if click is on a node/link (handled by their specific handlers)
+ if (event.target.closest(".node-group") || event.target.closest(".link")) {
+ return;
+ }
+ resetHighlights(currentGraphData); // Pass current data to reset colors correctly
+ });
+
+ // Handle window resizing
+ window.addEventListener('resize', () => {
+ const newWidth = graphContainer.node().getBoundingClientRect().width;
+ const newHeight = graphContainer.node().getBoundingClientRect().height;
+ svg.attr("width", newWidth)
+ .attr("height", newHeight)
+ .attr("viewBox", [0, 0, newWidth, newHeight]);
+ // Optionally recenter or restart simulation on resize
+ if (simulation) {
+ simulation.force("center", d3.forceCenter(newWidth / 2, newHeight / 2)).alpha(0.1).restart();
+ }
+ });
+}
+
+function setupLegend() {
+ legend = d3.select(".legend");
+ legend.html(""); // Clear previous legend content
+
+ legend.append("h3").text("Categories");
+ Object.entries(classColors).forEach(([category, color]) => {
+ const item = legend.append("div").attr("class", "legend-item");
+ item.append("div")
+ .attr("class", "legend-color")
+ .style("background-color", color);
+ item.append("span").text(category.charAt(0).toUpperCase() + category.slice(1));
+ });
+
+ legend.append("h3").text("Edge Thickness");
+ legend.append("p").text("Represents co-occurrence count").style("font-size", "10px");
+
+ legend.append("h3").text("Node Visualization");
+ legend.append("p").html(`
+ Size: Popularity
+ Color/Pie: Category affinity
+ Bold Label: Category Node
+ `).style("font-size", "10px");
+}
+
+function updateGraph() {
+ const selectedDate = dateSelect.property('value');
+ const originalData = processedDataByDate.get(selectedDate);
+
+ if (!originalData || !originalData.nodes) {
+ clearGraph();
+ console.warn(`No preprocessed data found for date: ${selectedDate}`);
+ noDataMessage.style('display', 'block').text(`No data available for ${selectedDate}.`);
+ currentGraphData = { nodes: [], links: [] }; // Reset current data
+ return;
+ }
+
+ currentGraphData = filterData(JSON.parse(JSON.stringify(originalData))); // Filter a deep copy
+
+ if (currentGraphData.nodes.length === 0) {
+ clearGraph();
+ noDataMessage.style('display', 'block').text(`No data matches the current filters for ${selectedDate}.`);
+ return;
+ }
+
+ noDataMessage.style('display', 'none');
+ renderGraph(currentGraphData);
+ }
+
+function clearGraph() {
+ if (simulation) {
+ simulation.stop(); // Stop the simulation
+ simulation = null; // Release simulation object
+ }
+ if (g) {
+ g.selectAll("*").remove(); // Clear contents of the main group
+ } else if (svg) {
+ // If g wasn't created or found, ensure svg is clear
+ svg.selectAll("g").remove();
+ g = svg.append("g"); // Recreate the main group if needed
+ }
+ // No need to hide noDataMessage here, renderGraph or updateGraph will manage it
+}
+
+function renderGraph(data) {
+ clearGraph(); // Clear previous graph elements and stop simulation
+
+ if (!data || !data.nodes || data.nodes.length === 0) {
+ console.log("No data to render.");
+ noDataMessage.style('display', 'block').text("No data to display with current filters.");
+ return;
+ }
+
+ const width = graphContainer.node().getBoundingClientRect().width;
+ const height = graphContainer.node().getBoundingClientRect().height;
+
+ // Ensure 'g' exists
+ if (!g) {
+ g = svg.append("g");
+ }
+
+ // --- Simulation Setup (Re-initialize for new data) ---
+ simulation = d3.forceSimulation(data.nodes)
+ .force("charge", d3.forceManyBody().strength(-150 - data.nodes.length)) // Adjust strength based on node count
+ .force("link", d3.forceLink(data.links)
+ .id(d => d.id)
+ .distance(d => 70 + 60 / (Math.sqrt(d.value) || 1)) // Adjust link distance based on value
+ .strength(d => 0.4 + 0.6 / (d.value || 1)) // Stronger links for higher value? Experiment.
+ )
+ .force("center", d3.forceCenter(width / 2, height / 2))
+ .force("collide", d3.forceCollide().radius(d => getNodeRadius(d) + 4).strength(0.7)) // Collision radius
+ .on("tick", ticked); // Define tick handler separately
+
+
+ // --- Create Links ---
+ link = g.append("g")
+ .attr("class", "links")
+ .selectAll("line")
+ .data(data.links, d => `${d.source.id || d.source}-${d.target.id || d.target}`) // Key function for object constancy
+ .join("line") // Use join for enter/update/exit
+ .attr("class", "link")
+ .attr("stroke-width", d => Math.max(1, Math.sqrt(d.value) * 1.2)) // Link width
+ .style("stroke", d => getLinkColor(d, data.nodes))
+ .style("stroke-opacity", 0.6);
+
+
+ // --- Create Node Groups ---
+ nodeGroup = g.append("g")
+ .attr("class", "nodes")
+ .selectAll("g.node-group")
+ .data(data.nodes, d => d.id) // Key function for object constancy
+ .join("g") // Use join
+ .attr("class", "node-group")
+ .call(d3.drag() // Apply drag behavior
+ .on("start", dragstarted)
+ .on("drag", dragged)
+ .on("end", dragended));
+
+ // Pie chart setup (can be defined once outside)
+ const pie = d3.pie().sort(null).value(d => d.value);
+ const arc = d3.arc().innerRadius(0);
+
+ // Add node visuals (circles or pies)
+ nodeGroup.each(function(d) {
+ const group = d3.select(this);
+ // group.selectAll("*").remove(); // Join should handle removal, but clear just in case
+
+ const radius = getNodeRadius(d);
+ arc.outerRadius(radius); // Update arc generator radius
+
+ // Determine if node should be simple circle or pie
+ const showPie = !d.isClass && d.categoryPercentages && Object.keys(d.categoryPercentages).length > 1;
+
+ if (!showPie) {
+ group.append("circle")
+ .attr("r", radius)
+ .attr("fill", getNodeColor(d))
+ .attr("stroke", d.isClass ? "#333" : getNodeColor(d)) // Outline class nodes
+ .attr("stroke-width", d.isClass ? 1.5 : 0.5);
+ } else {
+ const pieData = Object.entries(d.categoryPercentages)
+ .map(([key, value]) => ({ key, value }))
+ .filter(entry => entry.value > 0); // Filter out 0% slices
+
+ if (pieData.length > 0) {
+ const pieSlices = pie(pieData);
+ group.selectAll(".pie-slice")
+ .data(pieSlices)
+ .join("path") // Use join for slices
+ .attr("class", "pie-slice")
+ .attr("d", arc)
+ .attr("fill", slice => classColors[slice.data.key] || defaultColor)
+ .attr("stroke", "#fff")
+ .attr("stroke-width", 0.5);
+ } else {
+ // Fallback to simple circle if pie data is empty after filtering
+ group.append("circle")
+ .attr("r", radius)
+ .attr("fill", getNodeColor(d))
+ .attr("stroke", d.isClass ? "#333" : getNodeColor(d))
+ .attr("stroke-width", d.isClass ? 1.5 : 0.5);
+ }
+ }
+ });
+
+ // --- Add Labels ---
+ label = g.append("g")
+ .attr("class", "labels")
+ .selectAll("text")
+ .data(data.nodes, d => d.id) // Key function
+ .join("text") // Use join
+ .attr("class", "node-label")
+ .text(d => d.id)
+ .attr("font-size", d => d.isClass ? 11 : Math.min(12, 6 + Math.sqrt(d.count))) // Adjust label size
+ .attr("font-weight", d => d.isClass ? "bold" : "normal")
+ .attr("dx", d => getNodeRadius(d) + 4) // Position relative to node radius
+ .attr("dy", ".35em")
+ .style("fill", "#333")
+ .style("pointer-events", "none") // Prevent labels interfering with node events
+ .style("text-shadow", "0 0 2px white, 0 0 2px white"); // Basic text shadow for readability
+
+
+ // --- Setup Interactions ---
+ setupNodeInteractions(data);
+ setupLinkInteractions(data);
+
+
+ // --- Simulation Tick Handler ---
+ function ticked() {
+ link
+ .attr("x1", d => d.source.x)
+ .attr("y1", d => d.source.y)
+ .attr("x2", d => d.target.x)
+ .attr("y2", d => d.target.y);
+
+ nodeGroup
+ .attr("transform", d => `translate(${d.x},${d.y})`);
+
+ // Labels are part of the 'labels' group, position them directly
+ label
+ .attr("x", d => d.x)
+ .attr("y", d => d.y);
+ }
+
+ // Restart simulation with some alpha
+ simulation.alpha(1).restart(); // Higher alpha initially
+}
+
+
+// --- Helper Functions ---
+function getNodeRadius(d) {
+ const baseSize = d.isClass ? 7 : 4;
+ // Scale radius with square root of count, apply caps
+ return Math.max(baseSize, Math.min(35, baseSize + Math.sqrt(d.count) * 2));
+}
+
+function getNodeColor(d) {
+ if (d.isClass) {
+ return classColors[d.class] || defaultColor;
+ } else if (d.primaryClass && (!d.categoryPercentages || Object.keys(d.categoryPercentages).length <= 1)) {
+ // Simple node or only one category connection - use primary class color with opacity
+ return (classColors[d.primaryClass] || defaultColor) + "E6"; // E6 = 90% opacity
+ } else if (!d.primaryClass && (!d.relatedClasses || d.relatedClasses.length === 0)) {
+ // Node with no category connections at all
+ return defaultColor + "B3"; // B3 = 70% opacity
+ }
+ // If it's a pie chart node, the color is handled by the pie slices.
+ // Return a base color (e.g., light gray) in case pie slices don't cover fully, or transparent.
+ return "#f0f0f0"; // Light gray base for pie nodes (mostly covered)
+}
+
+function getLinkColor(linkData, nodes) {
+ const sourceNode = nodes.find(n => n.id === (linkData.source.id || linkData.source));
+ const targetNode = nodes.find(n => n.id === (linkData.target.id || linkData.target));
+
+ if (!sourceNode || !targetNode) return "#bbb"; // Fallback grey
+
+ if (sourceNode.isClass && targetNode.isClass) {
+ return blendColors(classColors[sourceNode.class], classColors[targetNode.class]) || "#aaa";
+ } else if (sourceNode.isClass) {
+ return (classColors[sourceNode.class] || "#bbb") + "99"; // 60% opacity
+ } else if (targetNode.isClass) {
+ return (classColors[targetNode.class] || "#bbb") + "99";
+ } else if (sourceNode.primaryClass && targetNode.primaryClass && sourceNode.primaryClass === targetNode.primaryClass) {
+ return (classColors[sourceNode.primaryClass] || "#bbb") + "73"; // 45% opacity
+ } else if (sourceNode.primaryClass && targetNode.primaryClass) {
+ // Blend between different primary classes? Or grey? Let's use lighter grey.
+ return "#ccc"; // Lighter grey for mixed non-class links
+ }
+
+ return "#ddd"; // Default link color (e.g., between two nodes with no category affinity)
+ }
+
+// Function to blend two hex colors
+function blendColors(color1, color2) {
+ const hexToRgb = hex => {
+ if (!hex || hex.length < 7 || !hex.startsWith('#')) return null; // Basic validation
+ const bigint = parseInt(hex.slice(1), 16);
+ const r = (bigint >> 16) & 255;
+ const g = (bigint >> 8) & 255;
+ const b = bigint & 255;
+ return [r, g, b];
+ };
+ const rgbToHex = (r, g, b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase();
+
+ const rgb1 = hexToRgb(color1);
+ const rgb2 = hexToRgb(color2);
+
+ if (!rgb1 || !rgb2) return null; // Return null if color conversion failed
+
+ const blended = [ Math.round((rgb1[0] + rgb2[0]) / 2), Math.round((rgb1[1] + rgb2[1]) / 2), Math.round((rgb1[2] + rgb2[2]) / 2) ];
+ return rgbToHex(...blended);
+}
+
+// --- Drag Functions ---
+function dragstarted(event, d) {
+ if (!event.active) simulation.alphaTarget(0.3).restart(); // Heat up simulation
+ d.fx = d.x; // Fix x position
+ d.fy = d.y; // Fix y position
+ d3.select(this).raise(); // Bring dragged node to front
+}
+
+function dragged(event, d) {
+ d.fx = event.x; // Update fixed x position
+ d.fy = event.y; // Update fixed y position
+}
+
+function dragended(event, d) {
+ if (!event.active) simulation.alphaTarget(0); // Cool down simulation
+ // Keep node fixed after drag:
+ // d.fx = d.x;
+ // d.fy = d.y;
+ // Or release it (allow simulation to position it again):
+ d.fx = null;
+ d.fy = null;
+}
+
+// --- Interaction Handlers ---
+function setupNodeInteractions(data) {
+ if (!nodeGroup || !link || !tooltip || !data || !data.nodes) return;
+
+ nodeGroup.on("mouseover", function(event, d) {
+ const nodeElement = d3.select(this);
+ nodeElement.raise(); // Bring node to front visually
+
+ // Highlight node and its label slightly
+ nodeElement.select('circle, path').attr('stroke', '#333').attr('stroke-width', 2);
+ label.filter(l => l.id === d.id).attr('font-weight', 'bold'); //.style('fill', 'black');
+
+
+ // Highlight connected links and nodes
+ const connectedNodeIds = new Set([d.id]);
+ link.style("stroke-opacity", l => {
+ const sourceId = l.source.id || l.source;
+ const targetId = l.target.id || l.target;
+ const isConnected = (sourceId === d.id || targetId === d.id);
+ if (isConnected) {
+ connectedNodeIds.add(sourceId === d.id ? targetId : sourceId);
+ }
+ return isConnected ? 1 : 0.1;
+ }).style("stroke", l => {
+ const sourceId = l.source.id || l.source;
+ const targetId = l.target.id || l.target;
+ return (sourceId === d.id || targetId === d.id) ? '#ff4500' : getLinkColor(l, data.nodes); // Highlight color OrangeRed
+ });
+
+ // Dim non-connected nodes and labels
+ nodeGroup.style("opacity", n => connectedNodeIds.has(n.id) ? 1 : 0.2);
+ label.style("opacity", n => connectedNodeIds.has(n.id) ? 1 : 0.2);
+
+
+ // --- Tooltip Content Generation ---
+ tooltip.style("opacity", 0.9); // Make tooltip visible
+ let tooltipContent = `