Je suis nouveau sur Neo4j et Python et je tente de remplir une base de données de test avec des nœuds et des relations utilisant IPython. J'utilise py2neo v 3.1.2. Le problème que j'essaie de résoudre est de représenter une collection de phrases dans un graphique avec l'id de la phrase connecté à des mots contenus via des liens ayant le mot count comme propriété.La création graphique via Neo4j prend trop de temps
J'ai ajouté les contraintes Neo4j pertinentes pour String (num) et Word (val). Le code correspondant est donnée ici:
from py2neo import Graph, Node, Path
import re
graph = Graph("http://neo4j:[email protected]:7474/db/data/")
f1 = open("test.txt", "r")
cnt = 0
for line in f1:
cnt = cnt+1
line=line.lower()
line = re.sub(r'[^\w\s]','',line)
wordlist = line.split()
lgth = len(wordlist)
wordfreq = [wordlist.count(w) for w in wordlist]
dct = dict(zip(wordlist,wordfreq))
str = Node("String", num=cnt, length = lgth)
graph.merge(str)
for k, v in dct.items():
wrd = Node("Word", val=k)
graph.merge(wrd)
property_dict = {"wrdcnt": v}
relate = Path(str, ("CONTAINS",property_dict),wrd)
graph.merge(relate)
Une petite collection de 1000 lignes prend environ 10 minutes pour remplir un graphique Neo4j. Je suis sûr que je fais quelque chose de mal dans mon code python et le même peut être accéléré de manière significative. Apprécierait toute idée significative ..
Avez-vous référencé juste votre analyse? En outre: vous effectuez un nombre important de fusions. Peut-être éditer votre question pour montrer les requêtes Cypher de base que vous exécuteriez, lors de l'importation. –
J'ai analysé l'analyse syntaxique ... le code python zippe à travers la sous-seconde – user6948456