Skip to main content
Version: 2.0

RSS Ingest and NLP Data Extraction

In this tutorial, we'll be using RSS Ingest and NLP together to add and annotate text nodes using articles from CinemaBlend's pop culture, movie, and videogame news RSS feeds. Lastly, we'll gain more insights into our newly collected and processed data by using NLP's similarity clustering capability.

Please note that if you have already gone through the NLP and RSS Ingest tutorials there are some caveats. If you've already set up and added several RSS feed sources with multiple feed groups and continuous processing in the NLP Basics tutorial you may skip to the similarity clustering portion of this tutorial.

If you've already gone through the RSS Ingest tutorial, you may already have articles in your graph. If you haven't we'll go over a quick example of how to set that up here. For a more in depth walkthrough see the RSS Ingest Tutorial here.

note

If you have already done the RSS Ingest tutorial and have article nodes in your graph, setting up continuous processing will not annotate the nodes already in the graph. CP is triggered by new text nodes being added to the graph. To follow along with this tutorial you'll need to add more text nodes to your graph. You can add more nodes by setting up CP and starting the RSS Ingest Feed that you've already set up, or by following along with this tutorial.

Set Up Continuous Processing With NLP

First, we're going to set up Continuous Processing (CP) with GraphGrid NLP. Continuous Processing will allow NLP to automatically process any new text nodes that are added to the graph. See the NLP API docs for more information about CP and how it works.

If you have not already done so in the NLP Basics tutorial, we're going to set up a continuous processing trigger. For a more detailed walkthrough of setting up CP see the NLP Basics tutorial mentioned above.

If you're not sure if CP is running you can check by running this query in ONgDB:

CALL apoc.trigger.list

This will return a list of all the apoc triggers that are running. You should see the name of the continuous processing policy and a query that looks like this:

"WITH {createdNodes} AS createdNodes UNWIND createdNodes AS createdNode WITH createdNode WHERE createdNode:`Article` AND NOT createdNode:`Translation` WITH collect(createdNode.grn) AS batchedNodeIds WITH batchedNodeIds, ' CALL apoc.broker.send(\'rabbitmq\',{numTries: \'0\', transactionId: timestamp(), label: \'Article\', property: \'content\', corpusGrn: \'grn:gg:corpus:xjSR1yr4u08ERPxxcBKpgQpeZF1wvEbm3JYb3UeAkUcV\', processor: \'BERT\', idPartition: \''+apoc.convert.toString(batchedNodeIds)+'\' }, {config} ) YIELD connectionName AS `_connectionName`, message AS `_message`, configuration AS `_configuration` RETURN 1' AS brokerCall CALL apoc.cypher.doIt(' WITH {brokerCall} AS brokerCall, {batchedNodeIds} AS batchedNodeIds, {config} AS config CALL apoc.do.when(coalesce(size(batchedNodeIds) > 0, false), brokerCall, \'\', {brokerCall: {brokerCall}, batchedNodeIds:{batchedNodeIds}, config: {config}}) YIELD value RETURN value', {brokerCall: brokerCall, batchedNodeIds:batchedNodeIds, config: {config} } ) YIELD value AS brokerDoIt RETURN 1"

If you see this query after calling a list of all apoc triggers then CP is already set up and you can skip to the RSS Ingest portion of this tutorial.

Document Policy

To set up CP a document policy needs to be created first. NLP uses a document policy to unravel the graph data to be used for data exctraction and annotation.

For the data extraction process of text nodes, our policy request will look like this:

curl --location --request POST "${API_BASE}/1.0/nlp/default/saveDocumentPolicy/gg-dev-document-policy" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"metadata": {
"displayName": "gg-dev-document-policy",
"createdAt": "2019-05-15T11:06:17+00:00",
"updatedAt": "2019-09-03T12:58:52+00:00"
},
"label": "Article",
"textProperty": "content",
"getDocumentCardCypher": "UNWIND $batchedDocumentGrns AS articleGrn MATCH (article:Article {grn: articleGrn})-[:HAS_ANNOTATED_TEXT]->(at:AnnotatedText) WITH article, at MATCH (at)-[:HAS_SENTIMENT]->(ats:AnnotatedTextSentiment) OPTIONAL MATCH (at)-[r:SUMMARY_SENTENCE]->(s:Sentence) WITH article, at, ats, r, s ORDER BY r.order WITH article, at, ats, rTrim(reduce(acc = '\'''\'', n IN COLLECT(s)| acc + n.sentence + '\'' '\'')) AS summary WITH article, at, ats, replace(summary, '\''\"'\'', '\'''\'') AS summary WITH article, at, ats, replace(summary, '\''"'\'', '\'''\'') AS summary WITH article, at, ats, replace(summary, '\''"'\'', '\'''\'') AS processedSummary MATCH (at)-[:HAS_TF]->(m:Mention) WITH article, at, ats, m, processedSummary OPTIONAL MATCH (m)<-[:MENTION_REPRESENTATIVE]-(x:KnowledgeGraphEntity) WITH article, at, ats, x, m, processedSummary OPTIONAL MATCH (rssSource:RSSSource {name: article.source}) WITH article, at, ats, x, m, processedSummary, rssSource OPTIONAL MATCH (article)<-[:HAS_TRANSLATION]-(nativeArticle:Article) RETURN article.grn AS grn, processedSummary AS summary, article.content AS fullText, article.pubDate as publishDate, article.title AS title, article.source AS source, rssSource.score AS trustScore, article.link AS sourceUrl, ats.sentiment AS sentiment, COLLECT(DISTINCT m.value) AS tags, '\''en'\'' AS language, COLLECT(x.grn) AS knowledgeGraphEntities, nativeArticle.content AS translatedFullText, nativeArticle.title AS translatedTitle, nativeArticle.grn AS nativeTextGrn",
"documentCardBatchVariable": "batchedDocumentGrns"
}'

Once the document policy has been created continuous processing can be setup. You will need the name of the document policy you created and the corpus grn. To easily find the corpus grn run this query in ONgDB:

MATCH (n:Corpus) RETURN n.grn

Here is the full request to start continuous processing:

curl --location --request POST "${API_BASE}/1.0/nlp/default/continuousProcessingTrigger/gg-dev-document-policy" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"corpusGrn": "grn:gg:corpus:xjSR1yr4u08ERPxxcBKpgQpeZF1wvEbm3JYb3UeAkUcV",
"processor": "bert"
}'
danger

If Continuous Processing is enabled, running the manual fullDataExtraction and partialDataExtraction endpoints may result in double annotation. See more about Continuous Processing and possible pitfalls here.

Continuous Processing is triggered when new text nodes are added to the graph. If you have already followed the RSS Ingest tutorial and have not set up CP you will need to manually run the partialDataExtraction endpoint to annotate the articles already added to your graph.

Set Up RSS Ingest

Now that CP is set up we can add text nodes to our graph. Here we'll quickly go over how to set up a multi-feed RSS Ingest policy. If you would like a more in depth tutorial on how to set up RSS Ingest, see the RSS Ingest Tutorial.

The policy in this tutorial takes in articles from different news source RSS feeds. We'll be using RSS feeds from CinemaBlend. There are three different feeds based on our CinemaBlend source, pop culture, movie, and videogame news.

Our policy will be same as the Multiple Feed Groups portion of the RSS Ingest tutorial. For a detailed explanation about how RSS feed policies are configured see the RSS Ingest tutorial mentioned above.

Create the RSS Ingest Feed Policy

To create the RSS Ingest Feed Policy run this request:

curl --location -g --request POST "${API_BASE}/1.0/ingest/default/saveFeedPolicy/rss-feed-policy" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"metadata": {
"displayName": "cinema-feed-policy",
"clusterName": "ongdb",
"createdAt": "2019-07-10T18:54:15+00:00",
"updatedAt": "2019-07-11T13:53:11+00:00"
},
"feedGroups": {
"movies": {
"feeds": {
"reviews": {
"link": "https://www.cinemablend.com/rss/topic/reviews/movies",
"refresh": "120",
"cypher": "MERGE (n:Article {link: {link}}) ON CREATE SET n.title = {title}, n.pubDate = {pubDate}, n.updatedDate = {updatedDate}, n.uri = {uri}, n.description = {description}, n.author = {author}, n.source = {feedGroupName}, n.feedName = {feedName}, n.content = {articleContent}",
"overrideSelector": null
},
"news": {
"link": "https://www.cinemablend.com/rss/topic/news/movies",
"refresh": "120",
"cypher": "MERGE (n:Article {link: {link}}) ON CREATE SET n.title = {title}, n.pubDate = {pubDate}, n.updatedDate = {updatedDate}, n.uri = {uri}, n.description = {description}, n.author = {author}, n.source = {feedGroupName}, n.feedName = {feedName}, n.content = {articleContent}",
"overrideSelector": null
}
},
"defaultSelector": ".story-content p",
"baseLink": "https://www.cinemablend.com/rss-index.html"
},
"popculture": {
"feeds": {
"popnews": {
"link": "https://www.cinemablend.com/rss/topic/news/pop",
"refresh": "120",
"cypher": "MERGE (n:Article {link: {link}}) ON CREATE SET n.title = {title}, n.pubDate = {pubDate}, n.updatedDate = {updatedDate}, n.uri = {uri}, n.description = {description}, n.author = {author}, n.source = {feedGroupName}, n.feedName = {feedName}, n.content = {articleContent}",
"overrideSelector": null
}
},
"defaultSelector": ".story-content p",
"baseLink": "https://www.cinemablend.com/rss-index.html"
},
"tv": {
"feeds": {
"popnews": {
"link": "https://www.cinemablend.com/rss/topic/news/television",
"refresh": "120",
"cypher": "MERGE (n:Article {link: {link}}) ON CREATE SET n.title = {title}, n.pubDate = {pubDate}, n.updatedDate = {updatedDate}, n.uri = {uri}, n.description = {description}, n.author = {author}, n.source = {feedGroupName}, n.feedName = {feedName}, n.content = {articleContent}",
"overrideSelector": null
}
},
"defaultSelector": ".story-content p",
"baseLink": "https://www.cinemablend.com/rss-index.html"
},
"games": {
"feeds": {
"gamenews": {
"link": "https://www.cinemablend.com/rss/topic/news/games",
"refresh": "120",
"cypher": "MERGE (n:Article {link: {link}}) ON CREATE SET n.title = {title}, n.pubDate = {pubDate}, n.updatedDate = {updatedDate}, n.uri = {uri}, n.description = {description}, n.author = {author}, n.source = {feedGroupName}, n.feedName = {feedName}, n.content = {articleContent}",
"overrideSelector": null
}
},
"defaultSelector": ".story-content p",
"baseLink": "https://www.cinemablend.com/rss-index.html"
}
}
}'

Load the RSS Ingest Feed Policy

Now we must load in the newly created feed policy:

curl --location -g --request GET "${API_BASE}/1.0/ingest/default/loadFeedPolicy/rss-feed-policy" \
--header 'Content-Type: application/json' \
--header "Authorization: ${BEARER_TOKEN}"

Start RSS Ingest

Once the feed policy is loaded in we can start RSS Ingest:

curl --location --request GET "${API_BASE}/1.0/ingest/default/startRSSIngest" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}"

This process will start adding article nodes to your graph! For the multi-feed CinemaBlend policy there should be approximately 200 article nodes that get added to the graph. You can check the progress of Ingest by running MATCH (n:Article) RETURN n

You can stop RSS Ingest by running the stop feed request:

curl --location --request GET "${API_BASE}/1.0/ingest/default/stopRSSIngest" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}"

Data Extraction

While RSS Ingest is adding text nodes to the graph, NLP's data extraction process is annotating the text nodes. Processing takes a variable amount of time to process the text of each node. To check data extraction progress, run MATCH (a:Article)-[:HAS_ANNOTATED_TEXT]->(at:AnnotatedText) RETURN a, at

Similarity Clustering

After data extraction there will be a lot of new nodes and relationships attached to your article nodes. You may notice there are some nodes called similarity_clusters. These indicate that there are similarities based on the annotated texts between two or more nodes.

The image below are all of the similarty clusters gathered from the data set. You may have more or less since since CinemaBlend's news sources will have updated and your articles will be different than the ones in this tutorial).

Screenshot

Similarity clusters connect to annotated text nodes that have scored high enough to be considered similar. To learn more about document similarity scoring, see here.

In this close up image of one similarity cluster we can see that there are three articles in this cluster. The three green nodes are annotated text nodes. Each annotated text node belongs to exactly one article. The annotated text nodes have a relationship BELONGS_TO_SIMILARITY_CLUSTER which are the orange nodes.

Diagram

If you where to expand the annotated text nodes you would see several new nodes like mentions, keyphrases, and the article itself.

Diagram

To get similar articles you can run the get Get similar Document cards endpoint. Let's say we wanted to get the articles that are similar to "Galaxy Watch 4 Might Fix One Of Wear OS's Biggest Problems". We'd run this request with that article's grn and the corpus grn:

curl --location --request GET "${API_BASE}/1.0/nlp/default/getSimilarDocumentCards/gg-dev-document-policy/grn:gg:corpus:xjSR1yr4u08ERPxxcBKpgQpeZF1wvEbm3JYb3UeAkUcV/grn:gg:article:e75zRt384e4rTsNiIoGCjwEq5o6w8c8jtJsB9SSNutpi" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}"

This requeset will return the articles that are similar as well as article summaries, relevant tags for each similar article.

    {
"grn": "grn:gg:article:UWmAk7QhHcRh1rsInSGU93N7VClhh4KiK8IKXec9unA3",
"publishDate": "2021-08-02T16:43:56Z",
"language": "en",
"imageUrl": null,
"title": "Pixel 6 & 6 Pro: New Chip, Colors & Everything Else Google Just Confirmed",
"summary": "The regular Pixel 6 is a bit more vibrant, coming in orange/pink, blue/yellow, and the same gray design. Outside of the radial design, the new Google Tensor chip also sounds extremely promising. In regards to speech, Google Tensor allows the Pixel 6 to have huge improvements for voice commands, translation, captioning, and dictation. Going back to the camera bump, both phones have two cameras (likely wide and ultra-wide), with the Pixel 6 Pro also getting an exclusive 4x optical sensor. This radical redesign was later confirmed by other sources, further suggesting that the Pixel 6 would be a massive departure from its predecessors.",
"fullText": "Seemingly out of nowhere, Google just revealed the Pixel 6, Pixel 6 Pro, and Google Tensor on Twitter. Here's a look at all the announcements. Following months of leaks and rumors, Google has shared official renders of the Pixel 6 and Pixel 6 Pro - and confirmed that both phones are powered by its 'Google Tensor' silicon. The first major Pixel 6 rumor dropped in April when 9to5Google reported that the two phones would ditch Qualcomm processors in favor of in-house ones from Google. Referred to at the time as GS101 Whitechapel, the idea that Google could stop relying on Qualcomm SoCs and instead make its own got a lot of people talking. Pixel 6 hype then went through the roof when leaker Jon Prosser shared device renders of the two phones - revealing designs that looked unlike anything Google had ever done before. This radical redesign was later confirmed by other sources, further suggesting that the Pixel 6 would be a massive departure from its predecessors. Additional leaks since then have kept that narrative going, including claims of large AMOLED displays, three camera sensors, big batteries, and more. Related: Google Pixel 6 Cameras Might Include Wider Ultra-Wide & Longer Zoom With so much Pixel 6 information already out there, Google took it upon itself to lay the rumors to rest and outright reveal the Pixel 6 and 6 Pro in a series of Tweets. Starting with the hardware, it looks like the leaked renders were accurate. The Pixel 6 and 6 Pro both feature a stunning multi-colored design with a large horizontal camera bump. There are three color combos for each device, including orange/yellow, gray, and silver for the Pixel 6 Pro. The regular Pixel 6 is a bit more vibrant, coming in orange/pink, blue/yellow, and the same gray design. Each color has a different shade for the top and bottom portions in between the camera housing, resulting in a genuinely gorgeous piece of hardware. And, using the Material You theme engine as part of Android 12, the color of each phone will be mimicked throughout the UI. Going back to the camera bump, both phones have two cameras (likely wide and ultra-wide), with the Pixel 6 Pro also getting an exclusive 4x optical sensor. Outside of the radial design, the new Google Tensor chip also sounds extremely promising. In one of its Tweets, Google says, \"The highlight of Tensor is that it can process Google's most powerful AI and ML [machine learning] modules directly on Pixel 6. You'll see a transformed experience for the camera, speech recognition, and many other Pixel 6 features.\" The chip will likely have enough CPU and GPU horsepower to compete with other flagship chips, but AI is clearly where Google thinks Tensor will have an edge over its Qualcomm competition. While Google hasn't shared full specifics of Tensor quite yet, it did offer some additional insight into what improvements users can expect from the chip. In regards to speech, Google Tensor allows the Pixel 6 to have \"huge improvements\" for voice commands, translation, captioning, and dictation. These are all things that Google has already done an exceptional job at, so it'll be fascinating to see how much they really do get better with Google Tensor. Google also notes that the Pixel 6 & 6 Pro are \"built with the most layers of hardware security in any phone - based on count of separate hardware security layers.\" This isn't the first time Google has pre-announced a new Pixel phone, but it is the most information the company has shared ahead of its 'official' unveiling. The Pixel 6 and Pixel 6 Pro are coming \"this fall\" with more information to follow, likely regarding device specifications, pricing, and availability. Assuming the Pixel 6 series follows past Pixel releases, expect some sort of event in October where everything will be made official. Until then, Pixel fans can sign up now on the Google Store to get more Pixel 6 details as they become available. Next: Pixel 6 Looks Amazing, But It Won't Solve Google's Biggest Problem Source: Google (1), (2) Joe has been actively writing and talking about consumer tech since 2012. His biggest passion lies with smartphones, but he's happy to talk your ear off about just about anything with a CPU. He lives in Kalamazoo, MI with his wife, two cats, and pit bull/boxer mix.",
"source": "screenrant",
"sourceUrl": "https://screenrant.com/google-pixel-6-pro-tensor-silicon-cameras-design-colors-confirmed/",
"sentiment": 0.3225806451612903,
"trustScore": null,
"tags": [
"Store",
"Jon Prosser",
"Joe",
"Ultra",
"t Solve Google",
"Qualcomm",
"9to5Google",
"Google Tensor",
"Kalamazoo",
"Material You",
"Pixel 6 Pro",
"Zoom",
"Pixel 6",
"& 6 Pro",
"Pixel",
"Android 12",
"Pro",
"Google",
"Tensor",
"Qualcomm SoCs",
"Whitechapel"
],
"knowledgeGraphEntities": [
"grn:gg:knowledgegraphentity:hwiiWESzEGQGuArtaYsSzlcoLBCq2nLuyu5aHZywSyka",
"grn:gg:knowledgegraphentity:pzVvjLcqlcjBP8RAVDskUxKkxg3UrfY1bryP1PDQtl3V",
...
],
"translatedFullText": null,
"translatedTitle": null,
"nativeTextGrn": null
},
{
"grn": "grn:gg:article:zpxxOWWFdYbsuZ2ZSzt1PukD85GyrcFAnM0EDBsU2xyk",
"publishDate": "2021-07-31T22:04:00Z",
"language": "en",
"imageUrl": null,
"title": "The Best Dev Patel Movies And TV Shows (And How To Watch Them)",
"summary": "Rent/Buy Slumdog Millionaire on Amazon. Stream Slumdog Millionaire on Hulu. At times heartbreaking and others inspirational, Lion is a movie that will have you on the edge of your seat with one hand on a box of tissues. Stream Skins on Hulu. From Slumdog Millionaire to Skins this is the best of the best… Slumdog Millionaire (2008) Danny Boyle's 2008 eye-catching drama Slumdog Millionaire tells the story of Jamal Malik (Dev Patel), a Mumbai teenager who finds himself on his country's version of Who Wants to be a Millionaire.",
"fullText": "Share × Facebook Copy to clipboard features The Best Dev Patel Movies And TV Shows (And How To Watch Them) Philip Sledge Published: Jul. 31. 2021 3:04 PM Facebook cinemablend Copy to clipboard CinemaBlend participates in affiliate programs with various companies. We may earn a commission when you click on or make purchases via links. Since the early days of the 21st Century, Dev Patel has become and remained one of the best living actors and one who is more than capable of handling himself in everything from comedies like Best Exotic Marigold Hotel to white-knuckle action thrillers like Hotel Mumbai and anything and everything in between. From television to film, Patel has dazzled audiences around the world with his charm, charisma, and outstanding acting chops. Below is a brief yet impressive list of the best Dev Patel movies and TV shows from throughout his career (not including The Green Knight) as well as everywhere you can rent and buy them digitally or physically and streaming. From Slumdog Millionaire to Skins this is the best of the best… Slumdog Millionaire (2008) Danny Boyle's 2008 eye-catching drama Slumdog Millionaire tells the story of Jamal Malik (Dev Patel), a Mumbai teenager who finds himself on his country's version of Who Wants to be a Millionaire. When accused of cheating on national television, Jamal begins to reflect on the decisions and life events that led up to this moment. Winner of eight (out of ten) Academy Awards, including Best Picture, Slumdog Millionaire is anchored by Dev Patel's star-making performance of a young man who finds himself in a position that defies explanation. And while Patel wasn't nominated for an Oscar, he did receive the Chicago Film Critics Association Award for Most Promising Performer, which certainly proved to be the case for the talented actor in the years to come. Stream Slumdog Millionaire on Hulu. Rent/Buy Slumdog Millionaire on Amazon. Buy Slumdog Millionaire on DVD/Blu-ray on Amazon. Lion (2016) Garth Davis' 2016 biographical drama Lion sees Dev Patel take on the role of Saroo Brierley, who at 5 years old, got separated from his brother on a train that ended up taking him thousands of miles across India. Years after being adopted by John (David Wienham) and Sue Brierley (one of Nicole Kidman in one of her best movies), a fully-grown Saroo traces his steps through Google Earth and sets out to find his family after all this time. At times heartbreaking and others inspirational, Lion is a movie that will have you on the edge of your seat with one hand on a box of tissues. In a movie that is filled with great actors like Nicole Kidman and Rooney Mara, Dev Patel is in a league of his own as a man determined to reconnect with his mother and brother. It's easy to see why Patel was nominated for so many awards, including an Oscar, for his emotional performance. Stream Lion on IMDb TV. Rent/Buy Lion on Amazon. Buy Lion on DVD/Blu-ray on Amazon. The Newsroom (2012-2014) As the title implies, Aaron Sorkin's HBO drama The Newsroom spends three seasons with the anchors, producers, and researchers of the fictional ACN 24-hour news channel and how its major players deal with some of the bigger moments of the early 21st Century. Possibly one of the best collection of actors ever assembled for a show about a media outlet, The Newsroom cast is full of great actors from top to bottom. And while Jeff Daniels and Emily Mortimer receive the lion's share of the praise, it's Dev Patel's Neal Sampat that really steals the show. Often the moral center of the show's major storylines, Neal consistently challenged the status quo and helped his employees open their eyes and hearts to new ideas and beliefs. Stream The Newsroom on HBO Max. Rent/Buy The Newsroom on Amazon. Buy The Newsroom on DVD/Blu-ray on Amazon. Best Exotic Marigold Hotel (2011) Directed by John Madden, the 2012 British comedy Best Exotic Marigold Hotel follows a group of retirees played Judi Dench, Maggie Smith, and Bill Nighy who find themselves questioning their decision to spend their golden years in India after their luxurious retirement facility is anything but luxurious or peaceful. Looking to make the most of the situation, the group enlists the services of Sonny Kapoor (Dev Patel) who finds himself in over is head like the rest of them. If anything, Best Exotic Marigold Hotel is an unofficial test for Dev Patel as it sees him stand toe-to-toe with some of the most talented and prolific actors of all time, especially his scenes with Maggie Smith. While it touches on some serious issues, the movie has a joyful and vibrant tone that makes it the perfect movie to revisit time and time again. Stream Best Marigold Hotel on Cinemax. Rent/Buy Best Marigold Hotel on Amazon. Buy Best Marigold Hotel on DVD/Blu-ray on Amazon. The Personal History Of David Copperfield (2020) Based on one of Charles Dickens' most beloved books and characters, Armando Iannucci's The Personal History of David Copperfield follows the iconic literary figure on a series of exciting and fun adventures set in Victorian Era England. Nominated for multiple awards, including Golden Globe consideration for Dev Patel's portrayal of David Copperfield, the movie has a remarkably upbeat and optimistic tone, one that is honestly a breath of fresh air. It would be easy for an actor to get lost in the shuffle considering who's on screen with them - Hugh Laurie, Tilda Swinton, Ben Whishaw - but here comes Patel with his youthful demeanor and scene-stealing charisma at every turn. Stream The Personal History Of David Copperfield on HBO Max. Buy The Personal History Of David Copperfield on Amazon. Buy The Personal History Of David Copperfield on DVD/Blu-ray on Amazon. Modern Love (2019) Based on the New York Times column of the same name, the 2019 Amazon anthology series Modern Love tells eight different stories of love, heartbreak, new beginnings, and the next chapter for various residents living and loving in New York City. The episode titled "When Cupid Is a Prying Journalist" tells the story of Joshua (Dev Patel, who was nominated for a Primetime Emmy Award), the founder of a dating app whose interview with a reporter by the name of Julie (Catherine Keener) quickly turns to his personal history with finding love. Modern Love is a must-watch for anyone looking for something to watch after going through the best movies on Amazon Prime. Stream Modern Love on Amazon. Hotel Mumbai (2018) Anthony Maras' 2018 action thriller Hotel Mumbai, which is based on the 2008 terrorist attacks that claimed the lives of 175 people and injured hundreds more, tells the story of the staff and guests at the Taj Mahal Palace Hotel as the building is under siege by a group of armed combatants. What follows is a deadly, intense, and emotional fight for survival even in the face of certain death. Dev Patel's portrayal of a man who is able to remain calm in a situation as dire as a terrorist attack is truly something to behold and should be talked about more. Although not as noteworthy as some of his other performances, Patel's ability to pull off a range of emotions all while being resilient at every turn is something else. Stream Hotel Mumbai on Hulu. Rent/Buy Hotel Mumbai on Amazon. Buy Hotel Mumbai on DVD/Blu-ray on Amazon. The Man Who Knew Infinity (2016) Directed by Matthew Brown, The Man Who Knew Infinity follows self-taught mathematics genius Srinivasa Ramanujan (Dev Patel) as he battles higher education, racism, and a devastating illness to become one of the most well-respected mathematicians of all time. It's hard to not like Dev Patel in any performance and that's especially the case in The Man Who Knew Infinity. With a balance of brains, charisma, and determination, Patel's portrayal of one of the giants of the math world is enough to turn this into one of the best biopics of our time. Stream The Man Who Knew Infinity on AMC+. Rent/Buy The Man Who Knew Infinity on Amazon. Buy The Man Who Knew Infinity on DVD/Blu-ray on Amazon. Skins (2007-2008) And then there is Skins (the original British version, not the American remake) which featured Dev Patel in his first on-screen role. During the teen drama's first two seasons, Patel portrayed Anwar Kharral, a Pakistani muslim who does everything his religion forbids including engaging in premarital sex, recreational drug use, and eating pork. Anyone who wants to see where Dev Patel came from in terms of acting should definitely check out Skins as it shows off the actor's charm and acting abilities at such a young age. Stream Skins on Hulu. The list of the best Dev Patel movies and TV shows will certainly only get longer and longer as the years go by especially with The Green Knight being on the list of the most anticipated 2021 movies. If you are looking for more great streaming options, check out our updated list of the best movies on Netflix. Up Next The Green Knight Review: A Spectacular And Stunning Arthurian Legend More From This Author Philip Sledge View Profile Philip grew up in Louisiana (not New Orleans) before moving to St. Louis after graduating from Louisiana State University-Shreveport. When he's not writing about movies or television, Philip can be found being chased by his three kids, telling his dogs to stop yelling at the mailman, or yelling about professional wrestling to his wife. If the stars properly align, he will talk about For Love Of The Game being the best baseball movie of all time. news 1d Jungle Cruise Wins Dwayne Johnson Another Box Office Crown, But There's Cause For Concern Eric Eisenberg news 3d The Green Knight Cast: Where You've Seen The Actors Before, Including Dev Patel Alexandra Ramos news 4d The Green Knight Director Reveals 5 Films That Inspired His Arthurian Epic Eric Eisenberg Trending Movies Nov 24, 2021 Resident Evil Rating TBD Apr 30, 2021 Tom Clancy's Without Remorse 7 Aug 20, 2021 Reminiscence Rating TBD Aug 27, 2021 Candyman Rating TBD Jul 16, 2021 Escape Room: Tournament of Champions 6 TBD America's Got Talent Contestant Pulls Out Of Season 16, Calls Experience A 'Dream Come True' Rating TBD TBD After We Fell: Release Date, Cast And Other Quick Things We Know About The New After Movie Rating TBD TBD M. Night Shyamalan Reveals Why Old Was Actually Really Different From Working On Most Of His Other Films Rating TBD TBD Bachelorette Spoilers: Katie Thurston's Eliminated Contestants Share Top Choices For The Next Bachelor Rating TBD TBD Daniel Radcliffe Chose Two Harry Potter Characters He'd Like To Play In A Reboot, And They're Magical Choices Rating TBD View More",
"source": "cinemablend",
"sourceUrl": "https://www.cinemablend.com/news/2571027/the-best-dev-patel-movies-and-tv-shows-and-how-to-watch-them",
"sentiment": 0.5223880597014925,
"trustScore": null,
"tags": [
"Jeff Daniels",
"The Newsroom",
"Without Remorse",
"Newsroom",
"Movies",
"Buy Best Marigold Hotel",
"Garth Davis",
"early 21st",
"Skins",
"Joshua",
"Amazon",
"Bill Nighy",
"New Orleans",
"The",
"Love",
"Srinivasa Ramanujan",
"Patel",
"modern",
"New",
"Buy The Newsroom",
"Hulu",
"Man Who Knew Infinity",
"Shreveport",
"Academy Awards",
"Buy Slumdog Millionaire",
"England",
"Rooney Mara",
"Ben Whishaw",
"British",
"Green Knight",
"Hotel",
"Earth",
"Hugh Laurie",
"Arthurian Legend",
"Primetime Emmy Award",
"American",
"Buy Lion",
"Lion",
"Buy",
"Nicole Kidman",
"Exotic Marigold Hotel",
"and",
"Modern Love",
"Dev Patel",
"Blu",
"Marigold Hotel",
"Louis",
"Saroo",
"The Man",
"Slumdog Millionaire",
"Anwar Kharral",
"Chicago Film Critics Association Award",
"Sue Brierley",
"Pakistani",
"St",
"Taj Mahal Palace Hotel",
"Knight",
"Sonny Kapoor",
"Resident Evil Rating TBD",
"The Green Knight",
"Charles Dickens",
"York Times",
"Most Promising",
"Maggie Smith",
"Cinemax",
"Max",
"Box Office",
"New York City",
"Judi Dench",
"Neal",
"Buy Hotel Mumbai",
"Best Exotic Marigold Hotel",
"Hotel Mumbai",
"Netflix",
"Oscar",
"Dev Patel Alexandra Ramos",
"Dev",
"Stream Lion",
"Armando Iannucci",
"Dwayne Johnson",
"Louisiana State University",
"Who Wants",
"Aaron Sorkin",
"AMC +",
"India",
"Amazon Prime",
"Tilda Swinton",
"Best Picture",
"Cupid",
"John",
"CinemaBlend",
"Winner",
"Knew",
"Exotic",
"Saroo Brierley",
"Eric Eisenberg",
"Mumbai",
"Jungle Cruise",
"Victorian",
"Author Philip Sledge",
"David Wienham",
"John Madden",
"Philip Sledge",
"Buy The Personal History Of David Copperfield",
"David Copperfield",
"Julie",
"Google",
"Jamal",
"Emily Mortimer",
"Golden Globe",
"a Millionaire",
"Catherine Keener",
"Philip",
"Green",
"Journalist",
"Anthony Maras",
"Knew Infinity",
"David",
"Jamal Malik",
"Man",
"Danny Boyle",
"Infinity",
"Facebook",
"Best",
"Arthurian",
"Louisiana",
"Neal Sampat",
"Of The Game",
"Copperfield",
"Matthew Brown",
"Tom Clancy"
],
"knowledgeGraphEntities": [
"grn:gg:knowledgegraphentity:7phm1EknYQs0crMv8JgSXAbZAU5lq17ciZKD8XuoHNjm",
"grn:gg:knowledgegraphentity:Fk5GrOoRDTAno7YxVJ2qB3cbj6RQrmNQSab3ZyYs49wk",
...
],
"translatedFullText": null,
"translatedTitle": null,
"nativeTextGrn": null
}
]

Hopefully this tutorial helped you understand a bit more how RSS Ingest and NLP can work together to give your data more context. Happy Graphing!