読者です 読者をやめる 読者になる 読者になる

元職業エンジニアの生き方

これまでとこれからを考えるための備忘録

Pythonでクラウドファンディングサイトからカテゴリ取得プログラム(データベース編その3)

どうもです。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

今回は、クラウドファンディングサイト(Makuake、Readyfor?、CAMPFIRE)から取得した各プロジェクトの詳細情報をデータベースに格納する際の設計をしたものを公開。
 

使用した言語などの情報は以下。

 

データベース;MySQL5.7

 

以下、データベースの設計と実装です。

 

テーブル:cw_project

項目 キー 備考
ID 1:Makuake
2:Campfire
3:Readyfor
NO プロジェクトNo
GETDATE 取得日
PERSON  

実行者

TARGET  

目標金額

GET  

支援金額

GET  

パトロン

STATUS  

ステータス

(終了、残日数など)

REGIST_DATE

  取得したタイムタンプ

 

属性なり他の設定については、SQL文を掲載するのでそれを見てください。

全体的に結構適当です…

 

SQLでテーブル作成文

①まずは、テーブルが存在していればテーブルを削除
DROP TABLE IF EXISTS `cw_detail`;

②テーブル作成
CREATE TABLE `cw_detail` (
`ID` VARCHAR(5) NOT NULL,
`NO` BIGINT(100) NOT NULL,
`GETDATE` DATE NOT NULL,
`PERSON` VARCHAR(30) NOT NULL,
`TARGET` BIGINT(10) NOT NULL,
`GET` BIGINT(10) NOT NULL,
`PATRON` BIGINT(10) NOT NULL,
`STATUS` VARCHAR(30) NOT NULL,
`REGIST_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`, `NO`, `GETDATE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

各サイトのプロジェクトの判別は、IDとNOで区別できるかと思います。

重要な

・実行者

・目標金額

・支援金額

・パトロン数

・ステータス 

を差分収集していく想定をしています。

 

収集自体は、週に1回ペース程度かな?

 

ご指摘あれば教えてください^^

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

データ解析ライブラリのPython・Pandasをいじってみた。

どうもです。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

今回は、Pythonのデータ解析で利用されるPandasについて動かしてみたので、備忘録として掲載します。

 

やったことですが、私のツイートデータ(3か月)のツイートインプレッションが100以上で、かつ、その最小値・最大値・合計値を取る、簡単なプログラムです。

 

下記も見ていますので参考まで。

qiita.com

qiita.com

 

前提:

3ファイルを用意しています。

 ・tweet_activity_metrics_startupimyme_20170201_20170301_ja.csv

 ・tweet_activity_metrics_startupimyme_20170301_20170401_ja.csv

 ・tweet_activity_metrics_startupimyme_20170401_20170501_ja.csv

 

前文(Import文)

# -*- coding: utf-8 -*-

import glob
import numpy as np
import pandas as pd

 

取得プログラム:

1ファイルずつ取得をして解析。

class GetPdTest:

def pdFrame(self):
files = glob.glob('./data/tweet*.csv')
for file in files:
print('-----------------------------')
print('取得月 : ' + file.split("_")[4][:6])
print('*****************************')
data = pd.read_csv(file)
df = pd.DataFrame({
'ID' : data['ツイートID'],
'post' : data['時間'],
'Imp' : data['インプレッション'],
'Eng' : data['エンゲージメント'],
'Good' : data['いいね'],
'Retweet' : data['リツイート']
})
print('最小値 : ' + str(df.query("Imp >= 100")["Imp"].min()))
print('最大値 : ' + str(df.query("Imp >= 100")["Imp"].max()))
print('合計値 : ' + str(df.query("Imp >= 100")["Imp"].sum()))

if __name__ == '__main__':

base = GetPdTest()
base.pdFrame()

 

結果:

-----------------------------
取得月 : 201702
*****************************
最小値 : 207.0
最大値 : 207.0
合計値 : 207.0
-----------------------------
取得月 : 201703
*****************************
最小値 : 123.0
最大値 : 890.0
合計値 : 1611.0
-----------------------------
取得月 : 201704
*****************************
最小値 : 114.0
最大値 : 1993.0
合計値 : 5288.0

 

こんな感じになりました。

今回は本当の動作検証程度で、データ解析における初歩にも満たないことです。

これから励んでいきたいと思います。

 

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからカテゴリ取得プログラム(データベース編その2)

こんにちは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

今回は、クラウドファンディングサイト(Makuake、Readyfor?、CAMPFIRE)から取得した各プロジェクトをデータベースに格納する際の設計をしたものを公開。

 

「Makuake」さんのカテゴリ取得はこちら↓

adweallab.hatenablog.com

 

「CAMPFIRE」さんのカテゴリ取得はこちら↓

adweallab.hatenablog.com

 

「Readyfor?」さんのカテゴリ取得はこちら↓

adweallab.hatenablog.com
 

使用した言語などの情報は以下。

 

データベース;MySQL5.7

 

以下、データベースの設計と実装です。

 

テーブル:cw_project

項目 キー 備考
ID 1:Makuake
2:Campfire
3:Readyfor
NO プロジェクトNo
CATEGORY  

カテゴリ名

NAME  

プロジェクト名

URL  

プロジェクトURL

REGIST_DATE

  取得したタイムタンプ

 

属性なり他の設定については、SQL文を掲載するのでそれを見てください。

全体的に結構適当です…

 

SQLでテーブル作成文

①まずは、テーブルが存在していればテーブルを削除
DROP TABLE IF EXISTS `cw_project`;

②テーブル作成
CREATE TABLE `cw_project` (
`ID` VARCHAR(5) NOT NULL,
`NO` BIGINT(100) NOT NULL,
`CATEGORY` VARCHAR(50) NOT NULL,
`NAME` VARCHAR(200) NOT NULL,
`URL` TEXT NOT NULL,
`REGIST_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`, `NO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

NOの扱いって…どうなんでしょう?修正有ると思います!

それとカテゴリ名についてはそのまま日本語文字を入れているので、データ気にするのであれば、コード管理が望ましいですね。

 

ご指摘あれば教えてください^^

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからプロジェクト取得プログラム(Readyfor版)

こんばんは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

今回はReadyforさんのカテゴリをぐるぐる回して全プロジェクトとURLを取得してみました。

 

※カテゴリ取得のブログは下記です。

adweallab.hatenablog.com

 

データベース設計のブログは下記です。

adweallab.hatenablog.com

 

使用した言語などの情報は以下。

言語;Python3

ライブラリ:BeatifulSoup4

データベース;MySQL5.7

 

全体の流れとしては、

①テーブルからカテゴリ情報を取得

②カテゴリURLがなくなるまで下記を実施

 - カテゴリURLページを開く

 - ページングが終了するまで下記を実施

  1. ページに掲載されているプロジェクト名とURL取得

  2. データの整形

  3. データベース接続でInsert処理

 

ざっくりこんな感じで取得できました。

 

課題:

①ページングの終了がよろしくない気がする。

②データを配列化してからデータベース連携のほうがいいのかな。

③トライキャッチをちゃんとやっていない・・・。

 参考:8. エラーと例外 — Python 3.6.1 ドキュメント

 

全文掲載はしませんが、こんな感じで。

def getProject(self, ID):
sw = ''
if ID == '3':
urlReplace = 'https://readyfor.jp'
res = self.con.selectCategory(ID, self.CWCATEGORY)
for category in res:
pageCnt = 1
projectCnt = 0
projectCntSv = 0
CATEGORY = category[1]
while sw != 'end':
urlOpen = category[2] + '?page=' + str(pageCnt)
html = urllib2.urlopen(urlOpen)
soup = BeautifulSoup(html, 'lxml')
if sw != soup.find_all('meta')[4]['content']:
sw = soup.find_all('meta')[4]['content']
Target = soup.find_all('article')
for projectURL in Target:
URL = projectURL.a.get('href').strip()
if URL.find('project') == 1:
projectCnt = projectCnt + 1
projectName = self.func_esc(projectURL.h3.text.strip())
self.con.insertProject(ID, CATEGORY, projectName, urlReplace + projectURL.a.get('href').strip())
if projectCntSv == projectCnt:
sw = 'end'
else:
projectCntSv = projectCnt
else:
sw = 'end'
sleep(5)
pageCnt = pageCnt + 1
sw = ''

 

補足として、引数のIDは1,2,3のいずれかをいれます。

1:Makuakeさん

2:CAMPFIREさん

3:Readyforさん

こんなイメージです。

 

「self.CWCATEGORY」は、テーブル名の指定。

 

まだまだ課題は沢山あるので、時間をみつけてトライキャッチしていきたい。

 

本日の備忘録として。

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからプロジェクト取得プログラム(CAMPFIRE版)

こんばんは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

以前はサイトからカテゴリを取得したので、今回はそのカテゴリをぐるぐる回して全プロジェクトとURLを取得してみました。

 

※カテゴリ取得のブログは下記です。

adweallab.hatenablog.com

 

データベース設計のブログは下記です。

adweallab.hatenablog.com

 

使用した言語などの情報は以下。

言語;Python3

ライブラリ:BeatifulSoup4

データベース;MySQL5.7

 

全体の流れとしては、

①テーブルからカテゴリ情報を取得

②カテゴリURLがなくなるまで下記を実施

 - カテゴリURLページを開く

 - ページングが終了するまで下記を実施

  1. ページに掲載されているプロジェクト名とURL取得

  2. データの整形

  3. データベース接続でInsert処理

 

ざっくりこんな感じで取得できました。

Makuakeさんの取得と違って、URLチェックをしてページング管理をしています。

 

課題:

①ページングの終了処理の精査

②データを配列化してからデータベース連携のほうがいいのかな。

③トライキャッチをちゃんとやっていない・・・。

 参考:8. エラーと例外 — Python 3.6.1 ドキュメント

 

全文掲載はしませんが、こんな感じで。

def getProject(self, ID):
sw = ''
if ID == '2':
urlReplace = 'https://camp-fire.jp'
res = self.con.selectCategory(ID, self.CWCATEGORY)
for category in res:
pageCnt = 1
CATEGORY = category[1]
while sw != 'end':
urlOpen = category[2] + '/fresh/page:' + str(pageCnt)
sign = self.checkURL(urlOpen)
if sign != "NotFound":
html = urllib2.urlopen(urlOpen)
soup = BeautifulSoup(html, 'lxml')
sw = soup.find_all('meta')[10]['content']
Target = soup.find_all(class_='box-title')
for projectURL in Target:
projectName = self.func_esc(projectURL.a.text.strip())
URL = projectURL.a.get('href').strip()
if URL.find('projects') >= 0:
self.con.insertProject(ID, CATEGORY, projectName, urlReplace + URL)
else:
sw = 'end'
sleep(5)
pageCnt = pageCnt + 1
sw = ''

 

補足として、引数のIDは1,2,3のいずれかをいれます。

1:Makuakeさん

2:CAMPFIREさん

3:Readyforさん

こんなイメージです。

 

「self.CWCATEGORY」は、テーブル名の指定。

「self.checkURL」は、正常なURLであれば、「Found」、異常であれば「NotFound」を返却する関数になっております。

 

まだまだ課題は沢山あるので、時間をみつけてトライキャッチしていきたい。

 

本日の備忘録として。

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからプロジェクト取得プログラム(Makuake版)

こんばんは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

以前はサイトからカテゴリを取得したので、今回はそのカテゴリをぐるぐる回して全プロジェクトとURLを取得してみました。

 

※カテゴリ取得のブログは下記です。

adweallab.hatenablog.com

 

データベース設計のブログは下記です。

adweallab.hatenablog.com

 

使用した言語などの情報は以下。

言語;Python3

ライブラリ:BeatifulSoup4

データベース;MySQL5.7

 

全体の流れとしては、

①テーブルからカテゴリ情報を取得

②カテゴリURLがなくなるまで下記を実施

 - カテゴリURLページを開く

 - ページングが終了するまで下記を実施

  1. ページに掲載されているプロジェクト名とURL取得

  2. データの整形

  3. データベース接続でInsert処理

 

ざっくりこんな感じで取得できました。

 

課題:

①ページングの終了がよろしくない気がする。

②データを配列化してからデータベース連携のほうがいいのかな。

③トライキャッチをちゃんとやっていない・・・。

 参考:8. エラーと例外 — Python 3.6.1 ドキュメント

 

全文掲載はしませんが、こんな感じで。

def getProject(self, ID):
sw = ''
if ID == '1':
urlReplace = 'https://www.makuake.com'
res = self.con.selectCategory(ID, self.CWCATEGORY)
for category in res:
pageCnt = 1
CATEGORY = category[1]
while sw != 'end':
urlOpen = category[2] + str(pageCnt)
html = urllib2.urlopen(urlOpen)
soup = BeautifulSoup(html, 'lxml')
if sw != soup.find_all('meta')[3]['content']:
sw = soup.find_all('meta')[3]['content']
Target = soup.find_all(class_='projectBox')
for projectURL in Target:
projectName = self.func_esc(projectURL.a.text.strip())
self.con.insertProject(ID, CATEGORY, projectName, urlReplace + projectURL.a.get('href').strip())
else:
sw = 'end'
sleep(5)
pageCnt = pageCnt + 1
sw = ''

 

補足として、引数のIDは1,2,3のいずれかをいれます。

1:Makuakeさん

2:CAMPFIREさん

3:Readyforさん

こんなイメージです。

 

「self.CWCATEGORY」は、テーブル名の指定。

 

まだまだ課題は沢山あるので、時間をみつけてトライキャッチしていきたい。

 

本日の備忘録として。

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

リクルートが無償提供してるAI・機械学習のAPIを叩いてみた(Proofreading API編)

こんにちは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

前回に引き続き、リクルート提供のAI・機械学習APIである「A3RT」を触りました。

 

今回は「Proofreading API」。

 

こちらは、入力文章に対して間違ってる?怪しい箇所を検出してくれるAPIのようです。

返却値として、怪しさを数値で出してくれます。0〜2の間。

0:やや疑わしい単語です。もっと良い表現がある可能性があります。

1:疑わしい単語です。あまり使われない表現であったり、珍しい単語である可能性があります。

2:かなり疑わしい単語です。誤字の可能性が高いです。

 ということらしいです。

 

Text Suggestと同様、APIをゲットすればCURLコマンドを使わずにも利用できますので早速みてみましょう!


実行自体は簡単で、

本家サイトの「Proofreading API」サイトからAPIキーを発行

②ブラウザで下記を実行

https://api.a3rt.recruit-tech.co.jp/proofreading/v1/typo?apikey=XXXXXXXXXXXXXXXXXXXXXXXX&sentence=チェック文章

コールバックも設定できます。

 

「チェック文章」に、「システムの企画から開発・運用まで幅広く関われます。」を入れて実行してみました!

 

ブラウザ結果

{"status": 0, "message": "ok"}

 

続いて!

「チェック文章」に、「システムの鬼角から開発・運用まで幅広く関われます。」を入れて実行してみました!

 

ブラウザ結果

{
"status": 1,
"message":
"pointed out",
"alerts":
[{"checkedSentence":
"システム の <<鬼>> 角 から 開発 ・ 運用 まで 幅広く 関われ ます 。",
"alertCode": 0,
"alertDetail":
"a little unnatural",
"word": "鬼",
"rankingScore": 0.03981165773664556
},
{"checkedSentence":
"システム の 鬼 <<角>> から 開発 ・ 運用 まで 幅広く 関われ ます 。",
"alertCode": 1,
"alertDetail":
"unnatural",
"word": "角",
"rankingScore": 0.25483032959896085}
]}

 

ん〜すごい間違いの指摘…

「鬼」「角」それぞれ誤っているとのこと。

 

alertCodeの数値が先に示した0〜2に間違い度。

その間違い度の数値がrankingScoreになりますね。

 

 

面白くできそうな予感は多分感じます。

 

今回はここまで。

 

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからカテゴリ取得プログラム(データベース編)

こんにちは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

今回は、クラウドファンディングサイト(Makuake、Readyfor?、CAMPFIRE)からデータをデータベースに移したプログラムを作ったので、まずは、そのデータベースのお話です。

 

「Makuake」さんのカテゴリ取得はこちら↓

adweallab.hatenablog.com

 

「CAMPFIRE」さんのカテゴリ取得はこちら↓

adweallab.hatenablog.com

 

「Readyfor?」さんのカテゴリ取得はこちら↓

adweallab.hatenablog.com
 

使用した言語などの情報は以下。

 

データベース;MySQL5.7

 

以下、データベースの設計と実装です。

 

テーブル:cw_category

項目 キー 備考
ID 1:Makuake
2:Campfire
3:Readyfor
NAME 各サイトのカテゴリー名
URL   各サイトのカテゴリーURL
REGIST_DATE   取得したタイムタンプ

 

属性なり他の設定については、SQL文を掲載するのでそれを見てください。

全体的に結構適当です…

 

SQLでテーブル作成文

①まずは、テーブルが存在していればテーブルを削除
DROP TABLE IF EXISTS `cw_category`;

②テーブル作成
CREATE TABLE `cw_category` (
`ID` VARCHAR(5) NOT NULL,
`NAME` VARCHAR(50) NOT NULL,
`URL` TEXT NOT NULL,
`REGIST_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`, `NAME`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

まぁこれでいいでしょ。

次回は、結果とできれば実行プログラムを共有できればと思います! 

 

ご指摘あれば教えてください^^

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

リクルートが無償提供してるAI・機械学習のAPIを叩いてみた(Text Suggest編)

こんにちは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

前回に引き続き、リクルート提供のAI・機械学習APIである「A3RT」を触りました。

 

今回は「Text Suggest」。

 

こちらは、文字に対して、テキストの自動入力や入力補助を行うAPIのようです。

 

APIをゲットすればCURLコマンドを使わずにも利用できますので、トライしてみましょう!


実行自体は簡単で、

本家サイトの「Image Suggest」サイトからAPIキーを発行

②ブラウザで下記を実行

https://api.a3rt.recruit-tech.co.jp/text_suggest/v1/predict?apikey=XXXXXXXXXXXXXXXXXXXXXXXX&previous_description=◯◯◯&style=0

コールバックを設定できるので、色々できそうです。

コールバック使用時は特に文字コード指定に気をつけよう?

 

毎回回答が変わるみたいですが、

「◯◯◯」には、「人」を入れて実行してみました!

 

ブラウザ結果(1回目)

{
"status": 0,
"message": "ok",
"suggestion": [
"なった道路標識が立っています。",
"なっている様子です。",
"なっている中、男性がスケートボードをしています。"
]
}

ブラウザ結果(2回目)

{
"status": 0,
"message": "ok",
"suggestion": [
"なったところの様子です。",
"なった広場に、複数の人がいます。",
"なった木の壁の向こうの道に、時計台を立った男性がいます。"
]
}

 

ん〜何とも言えないな…

今後のバージョナップに期待w

 

ちなみに、Styleという設定の中で、1にすると和歌の言語モデルから生成してくれるようです。

「style=0」は現代文モデルの指定。

 

https://api.a3rt.recruit-tech.co.jp/text_suggest/v1/predict?apikey=XXXXXXXXXXXXXXXXXXXXXXXX&previous_description=◯◯◯&style=1

 

「◯◯◯」には、「いとおかし」を入れて実行してみました!

ブラウザ結果

{
"status": 0,
"message": "ok",
"suggestion": [
" はなみれは かくみてかへる しくひとそなき",
" みるめかも かすみのころを ことのをすまけ",
" はるのよの つきまつつまに あとのたつかせ"
]
}

 

受験生助けて…

 

という感じで取得できるようですが、やり方&バージョンアップでいかようにも面白くできそうな予感は感じます。

 

今回はここまで。

 

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからカテゴリ取得プログラム(Readyfor版)

こんにちは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

今回は、クラウドファンディング「Readyfor?」さんのサイトからプロジェクトのテゴリを取得するプログラムを作成。

readyfor.jp

 

既に「Makuake」さんのカテゴリを取得済。

adweallab.hatenablog.com

 

「Campfire」さんからも取得済み。

adweallab.hatenablog.com

 

今回もほとんど一緒です!
 

使用した言語などの情報は以下。

言語;Python3

ライブラリ:BeatifulSoup4

 

前文、お決まりな感じです。

# -*- coding: utf-8 -*-

try:
import urllib.request as urllib2
except ImportError:
import urllib2
from bs4 import BeautifulSoup

import re
import lxml.html

 

またもやなぜかクラス化w

こちらでサイトに接続してカテゴリを取っています。

HTMLパースをして、BeautifulSoupでタグを取得しています。

class GetCategoryReadyfor:

def getCategory(self, urlOpne, urlReplace):
html = urllib2.urlopen(urlOpen)
soup = BeautifulSoup(html, 'lxml')
  Target = soup.find_all(class_='Local-nav-menu__link', href=re.compile("/"))
for category in Target:
if category.attrs['href'].find('project') == -1:
if category.attrs['href'].find('tags') == -1:
print(urlReplace + category.attrs['href'])
print(category.text)

 

起動です!

クラウドファンディングサイトのCampfireさんのサイトを引数。

urlReplaceは、首都したURLを正式なものにするために加工用です。

if __name__ == '__main__':

urlOpen = 'https://readyfor.jp/projects'
urlReplace = 'https://readyfor.jp'

base = GetCategoryReadyfor()
base.getCategory(urlOpen, urlReplace)

 

取得結果(Print文)

https://readyfor.jp/socialgood
社会にいいこと
https://readyfor.jp/local
地域
https://readyfor.jp/product
ものづくり
https://readyfor.jp/art
アート
https://readyfor.jp/challenge
チャレンジ

 

Readyforさんは地域別の区分けが中心なようで、純粋なカテゴリわけ自体は多くはないようです。(以前は違ったような?)

地域別も同様の仕組みでいけそうですが、今回はこれまでで。

 

ご指摘あれば教えてください^^

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからカテゴリ取得プログラム(Campfire版)

こんばんは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

前回は「Makuake」さんのカテゴリを取得したので、

adweallab.hatenablog.com

 

今回は、クラウドファンディング「Campfire」さんのサイトからプロジェクトのテゴリを取得するプログラムを作成。

ほとんど一緒です!

camp-fire.jp

 

使用した言語などの情報は以下。

言語;Python3

ライブラリ:BeatifulSoup4

 

前文、お決まりな感じです。

# -*- coding: utf-8 -*-

try:
import urllib.request as urllib2
except ImportError:
import urllib2
from bs4 import BeautifulSoup

import re
import lxml.html

 

またもやなぜかクラス化w

こちらでサイトに接続してカテゴリを取っています。

HTMLパースをして、BeautifulSoupでタグを取得しています。

class GetCategoryMakuake:

def getCategory(self, urlOpne, urlReplace):
html = urllib2.urlopen(urlOpen)
soup = BeautifulSoup(html, 'lxml')
Target = soup.find_all(href=re.compile("category"))
for category in Target:
if category.attrs['href'].find('category') == 1:
print(urlReplace + category.attrs['href'])
print(category.text)

 

起動です!

クラウドファンディングサイトのCampfireさんのサイトを引数。

urlReplaceは、首都したURLを正式なものにするために加工用です。

if __name__ == '__main__':

urlOpen = 'https://camp-fire.jp/projects/discover'
urlReplace = 'https://camp-fire.jp'

base = GetCategoryCampfire()
base.getCategory(urlOpen, urlReplace)

 

取得結果(Print文)

https://camp-fire.jp/category/social-good
ソーシャルグッド
https://camp-fire.jp/category/community
コミュニティ
https://camp-fire.jp/category/movie
映像・映画
https://camp-fire.jp/category/sports
スポーツ
https://camp-fire.jp/category/photo
写真
https://camp-fire.jp/category/social-good
ソーシャルグッド
https://camp-fire.jp/category/music
音楽
https://camp-fire.jp/category/music
音楽
https://camp-fire.jp/category/art
アート
https://camp-fire.jp/category/community
コミュニティ
https://camp-fire.jp/category/product
プロダクト
https://camp-fire.jp/category/community
コミュニティ
https://camp-fire.jp/category/technology
テクノロジー
https://camp-fire.jp/category/anime
アニメ
https://camp-fire.jp/category/sports
スポーツ
https://camp-fire.jp/category/music
音楽
https://camp-fire.jp/category/art
アート
https://camp-fire.jp/category/music
音楽
https://camp-fire.jp/category/dance
演劇・ダンス
https://camp-fire.jp/category/product
プロダクト
https://camp-fire.jp/category/technology
テクノロジー
https://camp-fire.jp/category/game
ゲーム
https://camp-fire.jp/category/journalism
ジャーナリズム
https://camp-fire.jp/category/community
コミュニティ
https://camp-fire.jp/category/food
フード
https://camp-fire.jp/category/photo
写真
https://camp-fire.jp/category/fashion
ファッション
https://camp-fire.jp/category/movie
映像・映画
https://camp-fire.jp/category/publishing
本・漫画
https://camp-fire.jp/category/anime
アニメ
https://camp-fire.jp/category/performance
パフォーマンス
https://camp-fire.jp/category/sports
スポーツ
https://camp-fire.jp/category/business
ビジネス
https://camp-fire.jp/category/comedy
お笑い・ネタ

 

こちらも意外と簡単に取得できましたね。

沢山のカテゴリがありますね。

今後は、さらに詳細に見ていきたいと思います。

 

ご指摘あれば教えてください^^

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

Pythonでクラウドファンディングサイトからカテゴリ取得プログラム(Makuake版)

こんばんは。

なんちゃってエンジニアです。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

 

今回は、クラウドファンディング「Makuake」さんのサイトからプロジェクトのテゴリを取得するプログラムを作成。

www.makuake.com

使用した言語などの情報は以下。

言語;Python3

ライブラリ:BeatifulSoup4

 

前文、お決まりな感じです。

# -*- coding: utf-8 -*-

try:
import urllib.request as urllib2
except ImportError:
import urllib2
from bs4 import BeautifulSoup

import re
import lxml.html

 

なぜかクラス化w

こちらでサイトに接続してカテゴリを取っています。

HTMLパースをして、BeautifulSoupでタグを取得しています。

class GetCategoryMakuake:

def getCategory(self, urlOpne, urlReplace):
html = urllib2.urlopen(urlOpen)
soup = BeautifulSoup(html, 'lxml')
Target = soup.find_all(href=re.compile("categories"))
for category in Target:
if category.attrs['href'].find('discover') == 1:
print(urlReplace + category.attrs['href'])
print(category.text)

 

起動です!

クラウドファンディングサイトのMakuakeさんのサイトを引数。

urlReplaceは、首都したURLを正式なものにするために加工用です。

if __name__ == '__main__':

urlOpen = 'https://www.makuake.com/discover/projects/search/'
urlReplace = 'https://www.makuake.com'

base = GetCategoryMakuake()
base.getCategory(urlOpen, urlReplace)

 

取得結果(Print文)

https://www.makuake.com/discover/categories/product/
プロダクト
https://www.makuake.com/discover/categories/fashion/
ファッション
https://www.makuake.com/discover/categories/food/
フード
https://www.makuake.com/discover/categories/restaurant/
レストラン・バー
https://www.makuake.com/discover/categories/technology/
テクノロジー
https://www.makuake.com/discover/categories/beauty/
コスメ・ビューティー
https://www.makuake.com/discover/categories/art/
アート・写真
https://www.makuake.com/discover/categories/film/
映画・映像
https://www.makuake.com/discover/categories/anime/
アニメ・マンガ
https://www.makuake.com/discover/categories/music/
音楽
https://www.makuake.com/discover/categories/game/
ゲーム
https://www.makuake.com/discover/categories/dance/
演劇・パフォーマンス
https://www.makuake.com/discover/categories/entertainment/
お笑い・エンタメ
https://www.makuake.com/discover/categories/publication/
出版・ジャーナリズム
https://www.makuake.com/discover/categories/education/
教育
https://www.makuake.com/discover/categories/sports/
スポーツ
https://www.makuake.com/discover/categories/startup/
スタートアップ
https://www.makuake.com/discover/categories/region/
地域活性化
https://www.makuake.com/discover/categories/contribution/
社会貢献
https://www.makuake.com/discover/categories/worldtour/
世界一周
https://www.makuake.com/discover/categories/music/
音楽
https://www.makuake.com/discover/categories/food/
フード
https://www.makuake.com/discover/categories/sports/
スポーツ
https://www.makuake.com/discover/categories/product/
プロダクト
https://www.makuake.com/discover/categories/food/
フード
https://www.makuake.com/discover/categories/music/
音楽
https://www.makuake.com/discover/categories/food/
フード
https://www.makuake.com/discover/categories/dance/
演劇・パフォーマンス
https://www.makuake.com/discover/categories/film/
映画・映像
https://www.makuake.com/discover/categories/art/
アート・写真
https://www.makuake.com/discover/categories/product/
プロダクト
https://www.makuake.com/discover/categories/fashion/
ファッション
https://www.makuake.com/discover/categories/food/
フード
https://www.makuake.com/discover/categories/restaurant/
レストラン・バー
https://www.makuake.com/discover/categories/technology/
テクノロジー

 

重複はありますが、意外と簡単に取得できました。

これでデータベースに接続すれば登録できますね!

Campfireさん、Readyforさんも実施したいと思います。

 

環境設定については、もう少し実践を積んだら記載していこうかな(?)

 

本日の備忘録として。

 それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

リクルートが無償提供してるAI・機械学習のAPIを叩いてみた(Text Classification編)

こんにちは。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

前回に引き続き、リクルート提供のAI・機械学習APIである「A3RT」を触りました。

 

今回は「Text Classification」。

 

こちらは、任意のテキストを入力して、設定したラベルから数値判定をしてくれます。

この文章なり、サンプルなりだとイメージが湧きませんが、マニュアルからだと、

学習データとしてニュース記事とそのトピック(スポーツや政治など)を与えると、未知の記事データに対してのトピックを推定

ポジティブなことを言っている文章かネガティブなことを言っている文章かを自動的に分類することが可能

 色々頑張れば、色々とできるようですね。


今回は、サンプルで用意されている指定から、動きをみてみます。

 

実行自体は簡単で、

本家サイトの「Image Influence」サイトからAPIキーを発行

API実行 - 指定モデルに対して分類したいテキストを投げる

curl -X POST https://api.a3rt.recruit-tech.co.jp/text_classification/v1/classify -d apikey=XXXXXXXXXXXXXXXXXXXXXXXX -d model_id=default --data-urlencode text=’任意の文字’ 

ちょっと見てみましょう!

 

任意の文字:

1.家を建てる能力はないが、住宅に関わる仕事がしたい。

2.とりあえず起業したい。

 

結果はどうでしょう?

1.家を建てる能力はないが、住宅に関わる仕事がしたい。

 建築・土木技術職 0.571294

 企画・マーケティング・経営・管理職 0.104951

 事務・管理 0.0743199

 

2.とりあえず起業したい。

 企画・マーケティング・経営・管理職 0.531654

 営業 0.192962

 事務・管理 0.139931

 

リクルートならではのラベル設定ですね。

割りと近似値が評価として上位に来ていますね。

 

これで自分でラベル設計をすれば、面白そうです!

 

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

リクルートが無償提供してるAI・機械学習のAPIを叩いてみた(Image Influence モデル画像作成編)

こんばんは。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

前回に引き続き、リクルート提供のAI・機械学習APIである「A3RT」を触りました。

 

今回は「Image Influence」。

 

前回と違うのは、自分の画像をモデルとして設定して、その画像から対象画像の認知点数を出すことをしていきます。

 

そのモデル画像の設定です。


さっそく。

モデル画像はこちらにします。

f:id:adweallab:20170502212657j:plain×その他500個程度の画像

フリー画像ありがたい!

 

実行自体は簡単で、

本家サイトの「Image Influence」サイトからAPIキーを発行

②モデル画像&調べたい画像をサーバーにセット(モデル画像はZIPファイルで)

API実行 - アップロードURL取得

curl -X GET https://api.a3rt.recruit-tech.co.jp/image_influence/v1/get_upload_url?apikey=XXXXXXXXXXXXXXXXXXXXXXXX

環境変数セット

export UPLOAD_LOCATION='③で得られるURL'

API実行 - 画像のアップロードURL取得

curl -D - -X PUT --upload-file ./XXXXX.zip $UPLOAD_LOCATION

※画像は、ZIPファイルで中にJPG画像が入っている状態です。

※画像は複数設定しなければならず500枚以上1000枚未満w。

API実行 - モデル画像のリクエス

curl -X GET https://api.a3rt.recruit-tech.co.jp/image_influence/v1/order_model?apikey=XXXXXXXXXXXXXXXXXXXXXXXX

API実行 - モデル画像のリクエス

curl -X GET https://api.a3rt.recruit-tech.co.jp/image_influence/v1/status_model?apikey=XXXXXXXXXXXXXXXXXXXXXXXX

※messageが、「wait」から「done」なればOK

 

終わらないのでマニュアル見ると、5時間かかると

 

それとアップロードする画像ファイルには色々と制約があるので注意してください!

マニュアルはこちら

 

ちょっと長めですが、モデル設定はこれでいけるようです。

画像の用意たいへんじゃない?

 

それでは。

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com

リクルートが無償提供してるAI・機械学習のAPIを叩いてみた(Image Influence編)

こんにちは。

元職業エンジニア・プログラマの人工知能と未来の道楽日記

リクルート提供のAI・機械学習APIである「A3RT」を触りました。

最初読めませんでしたが、「アート」と読むそう。

なぜこの名前なのかは調べてません。

誰か教えてください。

 

そんなこんなで、少しずつ叩いて共有していきたいと思います。

 

今回は「Image Influence」。

用意されているモデル画像から、自分の画像がどれくらい近いのか?を数値判定(0〜9点)してくれる様子。

用意されているモデル画像は「肉」。

このモデル画像も作れたり出来ますが、ここでは載せません。

 

とりあえず「肉」でやってみました!

 

用意したのは、こちらの3枚。

f:id:adweallab:20170502000800j:plainf:id:adweallab:20170502000815j:plainf:id:adweallab:20170502000818j:plain

それぞれ、9点、6点、4点と予想。

 

結果ですが、

0.9点、4.6点、2.9点

1枚目は当然そうですかねw

結構低いですね…

 

本家のサイトにあるように、このように点数付けをしている様子。

その写真が不特定多数から見て良さそうに見えるかどうか

 データはJSON形式で、小数点も沢山出る形で返却されます。

 

実行自体は簡単で、

本家サイトの「Image Influence」サイトからAPIキーを発行

②調べたい画像をサーバーにセット

③サーバーでCURLをつかって、API実行

curl -X POST -F apikey=XXXXXXXXXXXXXXXXXXXXXXXX -F imagefile=@XXXXX.jpg -F predict=9 https://api.a3rt.recruit-tech.co.jp/image_influence/v1/meat_score

 

predictってやつが予測点数ですね。

 

非常に簡単ですので、みなさんも実行してみてください。

それでは次回はまた別のAPIで!

 


元職業プログラマ・エンジニアのMiyamoto

地域、クラウドファンディング、都市伝説、AI、人工知能、宇宙に興味があります。

Twitterやっているので宜しくお願い致します。

twitter.com