PythonからのTwitterAPI利用

参考にしたサイト

 

・基本的な使い方

・データフォーマットあり

TwitterAPI でツイートを大量に取得。サーバー側エラーも考慮(pythonで) | コード7区

 

必要ライブラリ

OAuth認証

・MysqlDB

 

日付のフォーマット変換(TwitterAPIからdatetime型に変換してmysqldbでinsert)

http://qiita.com/kenmatsu4/items/23768cbe32fe381d54a2

 

 

re.compile()

文字列の前にrを付けるのが普通。そうすると、文字列中のバックスラッシュ文字をそのままバックスラッシュとして扱えるので、パターンの書き方が煩雑にならない。

import re
pattern = re.compile(r'3.*?7') # 3で始まり7で終わる最短の文字列

 

TwitterAPI仕様。過去Tweetは3200件までしか取れないらしい(頑張れば可能)

dx.24-7.co.jp

 

日付は厄介なので必ずJSTに統一して比較する

import datetime
from pytz import timezone
from dateutil import parser

tweetCreatedAt = parser.parse(tweet['created_at']).astimezone(timezone('Asia/Tokyo'))

 

フォローユーザーの取得

osa030.hatenablog.com

 

 

Posgre設定

C:\Program Files\PostgreSQL\9.6\dataのpg_hba.confに以下を追記(他ホストからの接続を許可。posgresql.conf内の設定(listen_address、port)は修正不要だった)

host all all 192.168.0.0/24 md5

http://rina.jpn.ph/~rance/linux/postgresql/connect.html

 

Python Windowsの統合環境 Anaconda PyCharm

http://pythondatascience.plavox.info/python%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/python%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB-windows/

 

 

 

データモデル

システム開発において、必要となるデータモデルは以下の3つ。

 

【概念スキーマ
データベース化対象の業務とデータの内容を論理的なデータモデルとして表現したもの。概念スキーマを記述するために記号系にはリレーショナルデータモデルの他にも、ネットワークデータモデル、階層型データモデルなどがある。リレーショナルデータモデルでは表の正規化やCREATE TABLEによる表定義が概念スキーマに相当する。
【外部スキーマ
概念スキーマで定義されたデータモデル上に利用者ごとの目的に応じた見方を表現したもの。リレーショナルデータモデルのビューやネットワークデータモデルのサブスキーマが外部スキーマに相当する。
【内部スキーマ
概念スキーマで定義されたデータモデルを記憶装置上にどのような形式で格納するかを表現したもの。ファイル編成やインデックスの設定などが内部スキーマに相当する。

目的・特徴は以下の通り

概念データモデル
実務上必要なデータの集まりと関係を洗い出し、まとめたもの。
システム対象範囲の設定に使ったりする
システム上のデータは意識しない
アウトプットは機能分野単位などで大きく捉えたER図など

 

論理データモデル
システム上のデータの形を定める(ER図からリレーショナルモデルを作成後、正規化などをするイメージ)
大体はリレーショナルモデルを使う
DB
製品はや処理効率は意識しない
DOA
に基づく場合、テーブルを正規化、最適化、一般化、安定化のプロセスを踏む。
アウトプットはリレーショナルモデル(リレーショナルモデルの場合)

 

物理データモデル
HW
DB製品を含む実装方法を定める
Index
、データ型、制約などを設定する


スキーマとは、何かの構造についての表現。DBの「構造」のこと
3
スキーマとは、3つの要素に分けてDBを定義する考え方(視点が違うイメージ。スキーマが違うと見ることができるViewが変わる)
3
つのスキーマは独立しているため、各々の変更が他に影響しない
3
スキーマはいくつか定義があるが、最もメジャーなものは以下の通り

 

外部スキーマ
 ユーザー視点のDB
 DBの機能・IFを定義する
 RDBではビューに相当する

概念スキーマ
 開発者視点のDB
 実際のテーブル、リレーションなどを定義する
 データ独立性を実現する
 概念スキーマを定義する設計のことを論理設計と呼ぶ

内部スキーマ
 物理的視点のDB
 ファイル名、サイズ、分割方法などを定義する

 

qiita.com

 

Slack連携テスト

Slack連携システムのテスト

 

概要

 ・Webスクレイピング

 ・取得データをSlackに転送

 

システム構成

 ・プラットフォーム: Heroku

 ・バージョン管理: Git

 ・Bot開発・実行フレームワーク: Hubot

 

自動メッセージ配信のコマンド(以下コマンドで実行後放置)

 bin/hubot --adapter slack

SlackのBot(hubot)を作ってみる - Qiita

 

Hubotで定期タスクを動かす方法

Hubotで定期タスクを動かす - Qiita

ブロックチェーン

 

 

ブロックチェーン技術を応用するメリット

  • データ記録のインフラとして使用することが可能。以下のメリットが挙げられる 
  •   セキュリティ。堅牢 
  •   なりすましが難しい(取引当事者の暗号署名が取引毎に行われる)
  •   過去データ改ざんが困難(過去のデータを改ざんすると以降のすべてのブロックを改ざんしないと整合性が取れない。且つ同時に全DBの50%超を同時に攻撃しなければならない)
  •   管理者の改ざんのような、外部から気付けない問題が発生しない
  • 可用性 
  •   不稼働時間が存在しない
  •   コスト削減(上記のようなセキュリティ・可用性の運用コスト) 
  • 仲介役を省くことができる 
  • 応用範囲が広い(取引記録を公開して良いもの: 融資、決済、保険、預金) 

ブロックチェーン

  • 分散型台帳技術
  • 既存の記録(ブロック)を新しいブロックに埋め込み、チェーン状にすることで改ざんを困難にするコンセプト
  • ビットコインを実現するための技術であり、他分野への応用が期待されている
  •   ・改ざんが難しい
  • 「合意形成方法(更新権限者をどう決めるか)」はバリエーションがある(コミットが大きい人は不正をしない
  • 多数のノードに同一の記録を同期(分散型DB)
  • 合意形成を通じ、正確な記録をする

ビットコイン

  • 暗号通貨(仮想通貨)
  • 取引履歴はブロックチェーンと呼ばれる元帳に記録される

 

 

f:id:kaz0606:20161122172031p:plain

 

 

 

 

 

 

ブロックチェーン記事_20160626.pdf - Google ドライブ

人工知能ビッグデータ関連用語

AI > 機械学習 > ディープラーニング > ニューラルネットワーク のように包括関係

 

AI: 人間と同じような感覚・判断力を機械が持つこと。汎用AIは実用化されておらず、実用化されている特化型AIとしては画像分類や顔認識などがある

機械学習 人工知能の一分野。データの傾向・規則性・法則を探り、減少の解析・予測をすることを目標とし、人が手を加えなくても法則を学習する手法。特徴抽出は人間が入力する必要がある(例えば赤リンゴと青りんごの識別をさせるには"色"を見るように指令を出す)

ディープラーニング 機械学習を実装するための手法。特徴抽出を教師なし学習できる。ニューラルネットワークを多層にして構築したもの

ニューラルネットワーク ディープラーニングを支える計算アルゴリズムのアプローチ。1種。入力層・隠れ層、出力層の3種類の層から成る。隠れ層を何層も重ねる構造が精度向上のカギとなる。

 

f:id:kaz0606:20161113110023p:plain

 

インダストリー4.0: 工業のデジタル化。生産工程のデジタル化・自動化・バーチャル化のレベルを高める。ドイツではスマート工場、つまり「自ら考える工場」 の開発を進めている。部品が自ら動いて完成品になるなど(発注などのSPM)