8
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

BigGorillaついて概要を調べてみた

やったこと

データの前処理に興味があり資料を探していたところ、リクルート人工知能研究所、データ統合および準備のオープンソースエコシステム「BigGorilla」を提供開始 | リクルートホールディングス - Recruit Holdingsというプレスリリースを見つけた。

一見してどういうものなのかよくわからなかったので、概要を調べてみた。

わかったこと

BigGorillaとは

BigGorilla - Data Integration & Preparation in Python

  • データ前処理におすすめのライブラリが入ったpythonの環境
    • 一部独自実装したライブラリ付き

ネーミングと公式サイトの図から、巨大なフレームワークのような印象だったが、
いわばライブラリ詰め合わせである。
(BigGorilla特有のクラスを継承するといったことはない模様)

実際に前処理をやるには、普通にpythonでプログラミングする必要がある。

condaによるポータブルなPython環境構築のすすめ - Qiita

インストール方法

$ anacondaいれて
$ conda env create biggorilla/py3gorilla
# pyenvを使用している場合は、condaのactivateコマンドをフルパスで指定する必要がある。source activate Py3Gorillaだとシェルが落ちる。
$ source /Users/kkanazaw/.pyenv/versions/anaconda3-4.2.0/envs/Py3Gorilla/bin/activate Py3Gorilla

参考: さあ、はじめよう | BigGorilla

追記: 2017/07/12時点で試したところ、この方法だと以下のエラーがでて入らなかった。
(6月にアップデートされたファイル名がおかしいせいか、古い方のymlが適用されている気がする。たぶんこれからアップデートで直ると思われる)

2017/07/21追記: ファイルアップデートされた。これでドキュメントどおりに入ると思われる。

7/12時点で、無理やりインストールした作業記録

$ conda env create biggorilla/py3gorilla
Collecting urllib==1.21.1
Downloading urllib-1.21.1.tar.gz (226kB)
100% |████████████████████████████████| 235kB 640kB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/bx/k4yrl_bd3nb0v8pz7fm60t8r0000gp/T/pip-build-58rsg5li/urllib/setup.py", line 191
s.connect((base64.b64decode(rip), 017620))
                                  ^
SyntaxError: invalid token
 ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/bx/k4yrl_bd3nb0v8pz7fm60t8r0000gp/T/pip-build-58rsg5li/urllib/
CondaValueError: Value error: pip returned an error.

Files :: Anaconda Cloudからymlをダウンロードしてurllibを指定している行を削除すると、インストールすることはできる。

### 一旦環境を消す
$ conda env remove -n Py3Gorilla

# ローカルで修正したymlファイルを指定して、環境再作成
$ conda env create --name test --file ~/Downloads/Py3Gorilla.yml

# pyenvを使用している場合は、condaのactivateコマンドをフルパスで指定する必要がある。source activate Py3Gorillaだとシェルが落ちる。
$ source /Users/kkanazaw/.pyenv/versions/anaconda3-4.2.0/envs/test/bin/activate test

# 動作確認用のnotebookを落としてきて起動
$ anaconda download biggorilla/hi_gorilla
$ jupyter notebook hi_gorilla.ipynb

何ができるの? どんなライブラリが入っているか見てみる

Files :: Anaconda Cloudにインストールされるパッケージの一覧があったので、眺めてみる。
公式サイトのコンポーネント一覧でいろいろ紹介されているけど、インストールされるもののはごく一部だということがわかった。
サイトの説明に比べて、意外とミニマムな構成。
入ってないものは自分でpip installする。

データ収集

  • urllib httpアクセス標準ライブラリ
  • requests urllibよりリッチなhttpsアクセスライブラリ
  • scrapy スクレイピング
  • (tweepy入ってない)

データ抽出

  • beautifulsoup4 webページの読み込み、解析
  • lxml xmlパーサー
  • nltk 自然言語処理(形態素解析とか)

スキーママッチング&マージング

  • FlexMatcher(リクルート研究所製)

データマッチング&マージング

  • Magellan(ウィスコンシン大学開発)
    • py-entitymatching, py-stringmatchingというライブラリの一部として提供されている

データ変換

  • xlrd Excel操作
  • 標準のjson,csv
  • pandas
  • (pdf系入ってない)

スキーママッピング

  • 商用ツールがされててるだけで入ってない?

ワークフロー管理

  • これも入ってない?

その他

依存関係なのか、scikit-learnやjupyter-notebookがはいってる。

独自実装しているライブラリについて

プレスリリースによると、独自で実装しているのは次の3つのライブラリ


現在、RITはKOKOおよびFlexMatcherというパッケージにて上記b)およびd)を開発しており、Doan教授のチームではMagellanというパッケージにてf)を開発しています。

FlexMatcher

  • リクルート研究所製スキーママッチングライブラリ
  • 2つのデータ間でデータ項目名が違っても、自動で対応関係を見つけてくれる
    • データの内容を教師データにして、類似度を推定している?
  • (個人的に興味あり)

Magellan

  • ウィスコンシン大学開発データマッチングライブラリ
  • 表記ゆれがあるデータを一つにしたり、住所の名寄せのようなことができる?

KOKO

つぎにやること

  • conda envして実際に環境構築してみる
  • FlexMatcherとMagellanを使ってみる

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
8
Help us understand the problem. What are the problem?