0

My goal is to build an automated Knowledge Graph. I have decided to use Neo4j as my database. I am intending to load a json file from my local directory to Neo4j. The data I will be using are the yelp datasets(the json files are quite large).

I have seen some Neo4j examples with Graphaware and OpenNLP. I read that Neo4j has a good support for JAVA apps. I have also read that Neoj supports python(I am intending to use nltk). Is it advisable to use Neo4j with JAVA maven/gradle and OpenNLP? Or should I use it with py2neo with nltk.

I am really sorry that I don't have any prior experience with these tools. Any advice or recommendation will be greatly appreciated. Thank you so much!

Hi_there
  • 41
  • 4
  • Welcome, Hi_there, to Stack Overflow! Your question is primarily opinion based and probably will be closed. You can reword your question to avoid it. However, I can provide you some hints onto where to go. Either Java or Python work well with Neo4j (I've used them both to make a question answer system using a knowledge graph in Neo4j). While both provide good tools, Python has many more options for NLP. Spacy is a python module that works very well (and easy) for english. Check it. – Tiago Duque Sep 10 '19 at 13:40

1 Answers1

0

Welcome to Stack Overflow! Unfortunately, this question is a suggestion/opinion question so isn't appropriate for this forum.

However, this is an area I have worked in so I can confidently say that Java (or Kotlin) is the best way to go for Neo. The reason being, it is the native language for Neo and there is significantly more support in terms of the community for questions and libraries available out there.

However, NLTK is much more powerful than OpenNLP. So, if your usecase is simple enough for OpenNLP, then purely Java/Kotlin is a perfect approach. Alternatively, you can utilize java as an interfacing layer for the stored graph, but use python with NLTK for language work feeding into the graph. This would, of course, dramatically increase the complexity of your project.

Ultimately, the best approach depends on your exact use-case and which trade-offs make the most sense for you.

Andrew Xia
  • 365
  • 1
  • 11
  • Hi, thanks for your suggestions. If I were to use java as an interface layer, do I use something like Jython to implement the python code within java or I call the java method with python like https://stackoverflow.com/questions/16460468/can-we-call-a-python-method-from-java sorry I have no done any porject of this scale so I am not too sure how this will affect the complexity of my project – Hi_there Sep 12 '19 at 15:23
  • Those would be valid options though what may be simpler is to setup your interfacer as a spring server and simply communicate via api calls from the python application. I should reiterate that this should be used only if you have to. In fact, if your neo interactions are simple enough, just using the python neo api alone is perfectly fine – Andrew Xia Sep 12 '19 at 16:50