中国語学習×グラフデータベース(5) - py2neoからNeo4jに接続
前回さんざん引っ張って、CSV/TEXTからPythonに取り込むところで終わったけど、今度こそNeo4jに登場してもらわねばw。
Neo4jを起動する
コマンドラインからも起動できるけど、個人的にはGUIから起動する方が好き。
スクショはWindows版だけれども、Macでも同じような画面が出る。データベースを保存したい場所を選択して、Startボタン押すと「Browse to http://localhost:7474」というような緑色の表示に変わるので、そのリンクをクリックするとブラウザが立ち上がる。こんな画面が出てくればOK。
ちなみに、赤枠のところにCypherクエリなどを入れると、結果がその下に出てくるような感じになる。初回は、ユーザ/パスワードを変更してくれと言われるので好きなモノに変更する。(設定でユーザ認証なしにも出来る)
PythonからNeo4jへ接続
やっとかよwという声が聞こえてきそうである。こんなソースをJupyter Notebookに入れて実行してみる。
from py2neo import Graph, authenticate from py2neo import Node, Relationship authenticate('localhost:7474', 'neo4j', 'xxxxx') graph = Graph() #http://localhost:7474
特に何も出ないが、エラーも出ていないのでOK。'xxxxx'のところは当然パスワードを入れる。以降は、graph.なんちゃらと書いてあれば、Neo4j側に何らかの操作を加えていると思えば良い。
ちなみに、これからしくじって、何もかも嫌になったときのために、最初にすべてのデータを消すための操作を書いておこう。
graph.delete_all()
一応解説しておくと、py2neoのGraphクラスにあるdelte_all()というメソッドを呼ぶと、Cypherに全部消してねというクエリが渡されて実行されるという意味だ。
あとは、データの投入と行きたいのだが、もう1ステップだけ。グラフデータベースでは主キーみたいな考え方がRDBMSほど厳格ではないので、同じ値を持つノードが複数できてしまう事がある。そこを出来るだけ避けたいので、こんなコマンドを実行してみる。
graph.schema.create_uniqueness_constraint("Category", "category") graph.schema.create_uniqueness_constraint("Sentence", "sentence")
CategoryというラベルのついたNodeにおいては、categoryという値が重複したNodeを作らせない、Sentenceにおける属性sentenceも重複を許さないという意味になる。単語(Word)については迷ったが、ここで指定するのはやめた。理由は「多読字の存在」。同じ字でも読み方が違う場合には、Nodeを分けた方が良いという考えたから。変わりに、Nordを登録するときはいろいろ気をつける必要がある。
そのあたりは次の記事で。
(つづく)
グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門
- 作者: Ian Robinson,Jim Webber,Emil Eifrem,佐藤直生,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/03/25
- メディア: 大型本
- この商品を含むブログ (2件) を見る