データベースの話です。
実は今、デジタル版の方言辞典を作ろうというプロジェクトが準備期間に入っており、サンプルデータを作成することになった。いただいたのは Excelデータです。
方言は採録されている文献から、その単語を抜き出し、出典とあわせて一覧表になったものをお預かりしました。ひとまず今回はサンプルということで、一部分だけです。
今回は、将来的には方言データベースに収まらない…むしろ百科事典的な内容にしていきたい…という主旨もあったので、話題の『グラフデータベース』を使ってみたら…という提案をしてみたところ、ではサンプルに作って見せて…ということになった。
いや〜。それにしても、正規化されていないExcelデータからいきなりグラフデータベースは…少し難儀した。というよりも…やはり正統派的に、まずはExcelデータから正規化が必要だなぁ〜と、実感したわけです。
- 複数行にわたる見出し語から、見出し語マスターを作成
- 複数行にわたる出典(文献)から、出典マスターを作成
- 執筆者には、複数の人名が入っていたり、個人ではなく団体だったりするので、そこも「人物マスター」と「団体マスター」を作成。
- 方言には調査地もあるので「調査地マスター」を作成。
と、原石/原油から灯油を精製するような作業を行ったわけです。それにしても大変だったのが、Excelの「並べ替え」。表示上どうみても同じ文字列なので順序がおかしい…一旦別の表計算ソフトにコピペして並べ替えて戻して…みたいなことをやったのだが、なぜこのExcelは正しい並べ替えひとつできないのか!と怒ってみたら…なんと、Excelは入力時(漢字変換時)のふりがなを記憶しているそうで、その入力された際のふりがなで並べ替えを行なっていました。並べ替えオプションで「ふりがなを使わない」に設定して解決!
lookup関数を使ったり、重複するデータを削除したり…。一度、手順がわかればそんなに難しい作業ではない。
このそれぞれのマスターを、グラフデータベースNeo4jに入力する。
Excelなので、計算式でNeo4jのクエリー言語であるCyper(サイファー)で構文を作る。
例えばこんな感じ
=”CREATE (” & N2 & “:Word { word: “”” & O2 & “””, wordid: “”” & N2 & “”” })”
文字列を”&”でつなげていくだけの簡単な計算式でOK!
これで、それぞれ
- 見出し語マスターから[見出し語ノード]
- 出典マスターから[出典ノード]
- 人物マスターから[人物ノード]
- 団体マスターから[団体ノード]
- 調査地マスターから[場所ノード]
を作成。一度CREATEした各ノードなので、リレーションを追加するときは、MATCH構文を使って識別子にMATCHしたノードを入れ、リレーションをCREATE構文で作成する。
ごにょごにょやってできたグラフが、これ。
- ちゃんと正規化しよう!
- FileMakerなどのリレーショナル型データベースではユニークidが必要だけど、Neo4jは全く気にしないで関係づけができる。
ということで、しばらく ExcelとFileMakerとNeo4jとで、あれやこれや遊んでみます。
グラフデータベース https://neo4j.com[ダウンロード]
平日は山中湖村の森の中にある図書館 山中湖情報創造館に、週末は清里高原の廃校になった小学校を活用したコワーキングスペースもある 八ヶ岳コモンズにいます。「わたしをかなえる居場所づくり」をイメージしながら、テレワークに加えて動画撮影やネット副業などにもチャレンジできる図書館/コワーキングスペースづくりに取り組んでいます。
コメント