Create an NLP pipeline CALL ga.nlp.processor.addPipeline({ name:"transcript", textProcessor: 'com.graphaware.nlp.processor.stanford.StanfordTextProcessor', processingSteps: {tokenize:true, ner:true, dependencies:true} }) Run the caption texts analysis CALL apoc.periodic.iterate( 'MATCH (n:Caption) RETURN n', 'CALL ga.nlp.annotate({ text: n.text, id: id(n), pipeline: "transcript", checkLanguage:false }) YIELD result MERGE (n)-[:HAS_ANNOTATED_TEXT]->(result)', {batchSize:1, iterateList:false}) Extract best keywords from captions CALL apoc.periodic.iterate( 'MATCH (n:Caption)-[:HAS_ANNOTATED_TEXT]->(at) RETURN at', 'CALL ga.nlp.ml.textRank({ annotatedText: at, useDependencies: true }) YIELD result RETURN count(*)', {batchSize:1, iterateList:false})