Создание и расширение сети знаний с извлечением сущностей в Neo4j для моей базы данных

Моя цель — построить автоматизированный График знаний. Я решил использовать Neo4j в качестве базы данных. Я собираюсь загрузить файл json из моего локального каталога в Neo4j. Данные, которые я буду использовать, — это наборы данных yelp (файлы json довольно большие).

Я видел несколько примеров Neo4j с Graphaware и OpenNLP. Я читал, что Neo4j имеет хорошую поддержку приложений JAVA. Я также читал, что Neoj поддерживает python (я собираюсь использовать nltk). Целесообразно ли использовать Neo4j с JAVA maven/gradle и OpenNLP? Или я должен использовать его с py2neo с nltk.

Мне очень жаль, что у меня нет опыта работы с этими инструментами. Любой совет или рекомендация будет принята с благодарностью. Большое спасибо!


person Hi_there    schedule 10.09.2019    source источник
comment
Добро пожаловать, Hi_there, в Stack Overflow! Ваш вопрос в первую очередь основан на мнении и, вероятно, будет закрыт. Вы можете переформулировать свой вопрос, чтобы избежать его. Тем не менее, я могу дать вам несколько советов, куда идти. Либо Java, либо Python хорошо работают с Neo4j (я использовал их оба для создания системы ответов на вопросы с использованием графа знаний в Neo4j). В то время как оба предоставляют хорошие инструменты, у Python есть гораздо больше возможностей для НЛП. Spacy — это модуль Python, который очень хорошо (и легко) работает для английского языка. Проверь это.   -  person Tiago Duque    schedule 10.09.2019


Ответы (1)


Добро пожаловать в Stack Overflow! К сожалению, этот вопрос является вопросом предложения/мнения, поэтому он не подходит для этого форума.

Тем не менее, это область, в которой я работал, поэтому я могу с уверенностью сказать, что Java (или Kotlin) — лучший выбор для Neo. Причина в том, что это родной язык для Neo, и сообщество значительно больше поддерживает вопросы и библиотеки, доступные там.

Однако NLTK намного мощнее, чем OpenNLP. Итак, если ваш вариант использования достаточно прост для OpenNLP, то чисто Java/Kotlin — идеальный подход. В качестве альтернативы вы можете использовать java в качестве уровня интерфейса для сохраненного графа, но использовать python с NLTK для языковой работы, загружаемой в граф. Это, конечно, резко увеличит сложность вашего проекта.

В конечном счете, лучший подход зависит от вашего конкретного варианта использования и от того, какие компромиссы будут для вас наиболее целесообразными.

person Andrew Xia    schedule 10.09.2019
comment
Привет, спасибо за ваши предложения. Если бы я использовал java в качестве уровня интерфейса, использовал бы я что-то вроде Jython для реализации кода python в java или вызывал бы метод java с помощью python, например stackoverflow.com/questions/16460468/ извините, я не сделал ни одного проекта этого масштаб, поэтому я не слишком уверен, как это повлияет на сложность моего проекта - person Hi_there; 12.09.2019
comment
Это были бы допустимые варианты, хотя может быть проще настроить ваш интерфейс как сервер Spring и просто общаться через вызовы API из приложения Python. Я должен повторить, что это следует использовать только в случае необходимости. На самом деле, если ваши нео-взаимодействия достаточно просты, просто использование только нео-API python вполне нормально. - person Andrew Xia; 12.09.2019