中国語学習×グラフデータベース(4) - データをPython側に取り込んでみる
何となくグラフデータベース側の構造を決めたので、さっそくデータを取り込んでみる。基本的な考え方は、データをアップロードして、Nodeを作ってから、Node間のRelationshipは、ある特定の条件に合致するものを後から紐付ける感じ。
CSVファイルからの取り込み
このあたりは、普通のPythonの世界ですね。元々FileMakerに入っていたデータをCSVファイルとして書き出しておいたところからスタート。実際には、Jupyter Notebookを使っている場合は、以下のようなコードをセルに入れて実行ボタンを押す。
import csv word_list = [] with open('chinesewords_20160219.csv', encoding='utf-8') as csvfile: reader = csv.DictReader(csvfile) for row in reader: word_list.append(row) print('{} words stored in word_list'.format(len(word_list)))
csv.Dictreader()を使っているので、元となるCSVファイルの1行目には項目名が入っている必要あり。各行データは辞書(Dictionary)に変換され、それがListの中に格納されるイメージ。
5809 words stored in word_list
一応、エントリ数を数えて何件取り込んだかを確認する。念のため書いておくと、この時点ではまだPythonのメモリ上にデータが保存されているだけで、Neo4jには何もしていない。
テキストファイル取り込みの場合は、行末の改行コードに注意
引き続いて、短文を取り込んでみる。短文は項目が1つしかないのでCSVではなくてテキストファイル形式で保存されている。よって、取り込むソースコードとその実行結果は、こんな感じ。
sentence_list = [] with open('chinese_sentences20160218.txt', encoding='utf-8') as textfile: sentence_list = [row.rstrip() for row in textfile] print('{} sentences stored in sentenc_list'.format(len(sentence_list)))
569 sentences stored in sentenc_list
さらっとやっているが、実際には行末の改行コードを取り除くのを忘れたりして、少し試行錯誤した。row.strip()のところは、もっとシンプルにrow[:-1]でも良かったはず。改行コードが取り除けているかを確認するには、こんな感じ。
sentence_list[-1]
'那么大的鱼,根本钓不到。'
取り除けていない場合は、文の最後に不細工な感じで"\n"という文字が残ってしまう。
ここまで出来れば、あとはNeo4jにデータを取り込めば良いが、長くなったので記事を改める。
(つづく)
グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門
- 作者: Ian Robinson,Jim Webber,Emil Eifrem,佐藤直生,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/03/25
- メディア: 大型本
- この商品を含むブログ (2件) を見る