GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

okfn-brasil

serenata-de-amor – public行政の社会的管理のための人工知能

投稿日:

public行政の社会的管理のための人工知能 https://serenata.ai/

Jarbas – Serenata de Amorのためのツール

JarbasSerenata de Amorの一員であり、データ科学による腐敗と戦います。

JarbasはCEAPからのデータへのアクセスをより容易にすることを担当しています。 近い将来、Jarbasは、私たちの議員のために行われたそれぞれの償還についてRosieが考えるものを示します。

目次

  1. JSON APIエンドポイント
    1. 償還
    2. サブクォータ
    3. 応募者
    4. 会社
    5. タピオカジャーバス
  2. インストール
    1. 設定
    2. ドッカーを使用する
    3. ローカルインストール

JSON APIエンドポイント

償還

Reimbursementオブジェクトは、議員が主張し、そのdocument_idによって公的に特定された償還です。

特定の払い戻しを取得する

GET /api/chamber_of_deputies/reimbursement/<document_id>/

特定の払い戻しの詳細。 receipt_urlフェッチされなかった場合、サーバー自動的にフェッチしようとしません

GET /api/chamber_of_deputies/reimbursement/<document_id>/receipt/

この特定の払い戻しの領収書のデジタル版のURL。

receipt_urlフェッチされなかった場合、サーバー自動的にフェッチするように試みます。

パラメータforce (つまり、 GET /api/chamber_of_deputies/reimbursement/<document_id>/receipt/?force=1 )を追加すると、サーバーは領収書URLを再度取得します。

すべての領収書が利用可能なわけではないため、このURLはnullでもnullません。

払い戻しのリスト

GET /api/chamber_of_deputies/reimbursement/

すべての払い戻しを一覧表示します。

フィルタリング

これらのすべてのエンドポイントは、以下のパラメーターの任意の組み合わせを受け入れます。

  • applicant_id
  • cnpj_cpf
  • document_id
  • issue_date_start (包括的)
  • issue_date_end (排他的)
  • month
  • subquota_id
  • suspicionsブール値1True0False
  • has_receiptブール値1True0False
  • year
  • order_byissue_date (デフォルト)またはprobability (両方とも降順)
  • in_latest_datasetブール値1True0False

例えば:

GET /api/chamber_of_deputies/reimbursement/?year=2016&cnpj_cpf=11111111111111&subquota_id=42&order_by=probability

このリクエストには、

  • すべての2016年の払い戻し
  • CNPJ 11.111.111 / 1111-11のサプライヤで作成
  • ID 42のサブクォートに従って作成されます
  • 最高確率でソート

フィールドごとに複数の値を渡すこともできます(例: document_id=111111,222222 )。

GET /api/chamber_of_deputies/reimbursement/<document_id>/same_day/

document_idと同じ日のすべての経費の払戻しを一覧表示しdocument_id

サブクォータ

サブクータは、議員によって払い戻される費用のカテゴリーです。

サブクォートの一覧表示

GET /api/chamber_of_deputies/subquota/

サブクォーター名とIDをすべてリストします。

フィルタリング

case-insensitve LIKEフィルタをq URLパラメータとして受け入れます(例: GET /api/chamber_of_deputies/subquota/?q=meal mealは、名前にmealがあるすべての応募者をリストします)。

応募者

申請者は、弁償を請求した人(議員または政府の選挙権者)です。

応募者のリスト

GET /api/chamber_of_deputies/applicant/

申請者のすべての名前とそのIDを一覧表示します。

フィルタリング

case-insensitve LIKEフィルタをq URLパラメータとして受け入れます(例: GET /api/chamber_of_deputies/applicant/?q=lideranca liderancaは、名前にliderancaを持つすべての申請者をリストします)。

会社

会社は、議員が経費を払い、払い戻しを請求しているブラジルの会社です。

特定の会社を取得する

GET /api/company/<cnpj>/

このエンドポイントは、特定の会社の情報を取得します。 エンドポイントでは、 cnpj (つまり、 CompanyオブジェクトのCNPJ、数字のみ)が必要です。 会社が見つからない場合は404返します。

タピオカジャーバス

API用のタピオカ・ラッパーもあります。 tapioca-jarbaspip install tapioca-jarbasことができ、任意のPythonスクリプトでAPIにアクセスするのに使用できます。

インストール

設定

contrib/.env.sampleをプロジェクトのルートフォルダにcontrib/.env.sampleとしてコピーし、設定を調整します。 これらは主な変数です:

Djangoの設定
NewRelicの設定
データベース
メッセージブローカー
  • CELERY_BROKER_URL文字列セロリ互換のメッセージブローカーURL(例: amqp://guest:guest@localhost//
Amazon S3の設定
  • AMAZON_BUCKET文字列 )データセットを探すAmazon S3バケットの名前(例: serenata-de-amor-data
  • AMAZON_REGION文字列 )Amazon S3の領域(例: s3-sa-east-1
  • AMAZON_S3_CEAPTRANSLATION_DATE文字列 )データセットガイドのファイル名プレフィックス( 2016-08-08場合は2016-08-08-ceap-datasets.md
Googleの設定
  • GOOGLE_ANALYTICS文字列 )Googleアナリティクスのトラッキングコード(例: UA-123456-7
  • GOOGLE_STREET_VIEW_API_KEY文字列 )Googleストリートビュー画像APIキー
Twitterの設定
  • TWITTER_CONSUMER_KEY文字列 )Twitter APIキー
  • TWITTER_CONSUMER_SECRETstr )Twitter APIシークレット
  • TWITTER_ACCESS_TOKENstr )Twitterアクセス​​トークン
  • TWITTER_ACCESS_SECRETstr )Twitterアクセス​​トークンの秘密

この資格情報を取得するには、 python-twitter指示に従います。

本番環境では
  • VIRTUAL_HOST_WEBstr )ホストがHTTPS証明書に使用されています(プロダクション設定をローカルでテストする場合は、このホスト名を/etc/hostsに追加する必要があり/etc/hosts
  • LETSENCRYPT_EMAIL文字列 )Let’s EncryptでHTTPS証明書を作成するために使用される電子メール
  • HTTPS_METHOD設定した場合のHTTPS_METHOD文字列 )がHTTPからHTTPSにリダイレクトされない (デフォルト: redirect

ドッカーを使用する

最初にDockerDocker Compose環境をインストールする必要があります。

サービスの構築と開始

$ docker-compose up -d

サンプルデータを使用してデータベースを作成してシードする

データベースの作成と移行の適用:

$ docker-compose run --rm django python manage.py migrate

サンプルデータでシードする:

$ docker-compose run --rm django python manage.py reimbursements /mnt/data/reimbursements_sample.xz
$ docker-compose run --rm django python manage.py companies /mnt/data/companies_sample.xz
$ docker-compose run --rm django python manage.py suspicions /mnt/data/suspicions_sample.xz
$ docker-compose run --rm django python manage.py tweets

データが充実しているデータベースが面白い場合は、 Rosieを実行しているデータセットを取得できます。 Rosieによって新しくreimbursements.xzれた新しいreimbursements.xzまたはsuspicions.xzを追加するには、 ツールボックスから入手したcompanies.xzを追加するには、これらのファイルをcontrib/dataコピーして、path /mnt/data/

検索ベクトルの作成

ダッシュボードでのテキスト検索:

$ docker-compose run --rm django python manage.py searchvector

Acessing Jabas

開発モードではlocalhost:8000 、プロダクションモードではlocalhost:8000アクセスできます。

docker-compose.yml定義されているデフォルトの環境変数を変更するには、ローカル環境変数にエクスポートしてください。そうすれば、Jarbasを実行すると、それを取得できます。

ドッカー準備?

わからない? 試して!

$ docker-compose run --rm django python manage.py check
$ docker-compose run --rm django python manage.py test

ローカルインストール

要件

JarbasにはPython 3.5Node.js 8RabbitMQ 3.6PostgreSQL 9.6が必要です pipnpm入手したら、依存関係をインストールします。

$ npm install
$ ./node_modules/.bin/elm-package install --yes  # this might not be necessary https://github.com/npm/npm/issues/17316
$ python -m pip install -r requirements-dev.txt
Pythonのlzmaモジュール

いくつかのLinuxディストリビューションでは、 lzmaはデフォルトではインストールされません。 あなたは$ python -m lzma使ってそれがあるかどうかを調べることができます。 Debianベースのシステムでは、 $ apt-get install liblzma-devまたは$ brew install xz使ってmacOSで修正できますが、Pythonを再コンパイルする必要があります。

環境変数を設定する

基本的には、プロジェクトのルートフォルダにcontrib/.env.sampleとしてコピーすることを意味しますが、そこにはセクション全体があります。

移行

要件、依存関係、および設定が完了したら、基本的なデータベース構造を作成します。

$ python manage.py migrate

データを読み込む

データをロードするには、RabbitMQを実行する必要があります。

$ celery worker --app jarbas

これで、データセットからデータをロードし、他のデータを静的ファイルとして取得できます。

$ python manage.py reimbursements <path to reimbursements.xz>
$ python manage.py suspicions <path to suspicions.xz file>
$ python manage.py companies <path to companies.xz>
$ python manage.py tweets
$ python manage.py ceapdatasets

contrib/data/中にyoutデータベースをシードするサンプルファイルがあります。 Rosieを実行している完全なデータセットを取得することも、 ツールボックスを使用して直接取得することもできます。

検索ベクトルの作成

ダッシュボードでのテキスト検索:

$ python manage.py searchvector

静的ファイルを生成する

NodeJSを使用してアセットを生成するため、Djangoが静的ファイルを収集する前に実行します。

$ npm run assets
$ python manage.py collectstatic

準備?

わからない? 試して!

$ python manage.py check
$ python manage.py test

準備ができました!

$ python manage.py runserverサーバを起動し、お気に入りのブラウザでlocalhost:8000をロードします。

Django Adminを使う

払い戻しの別の見方についてDjango管理者にアクセスしたい場合は、 localhost:8000/admin/アクセスして、以下を使用してユーザーを作成することができます。

$ python manage.py createsuperuser







-okfn-brasil
-, , , ,

執筆者: