ゆーかん

徒然日記

人工知能活用アプリまとめ

機械学習人工知能の勉強を最近してるんだけど、今世の中にどんなアプリがあるのかまとめてみたくなった。これらを調べてまとめた上で、これから作るアプリにうまい具合に詰め込んで、流行り遅れて人工知能アプリをうまく作りたい。

普通にsmartnewsとかGoogleアプリにも機械学習はふんだんに使われてるけど、ちょっと今風で新しいものを取り上げてみる。

人工知能AI英会話ナンナ

人工知能が話し相手になってくれて、英語が勉強できるサービス。無料だし。まだテストなのかな? そして自分が苦手な構文とかを、ナンナが指摘してくれるらしい。ほぉ〜

これがちゃんとできたら素晴らしい。

ナンナ

SENSY

ファッション×人工知能。コーディネートとかを出してくれるんだとか。 自分の家にある洋服とか全部登録しなきゃいけないのかな?

そもそも朝ってそんなに時間無い気がするけど、、、 使うシーンがイメージできないなぁ〜

SENSY

Less Mail

自動返信をしてくれるらしい。これは日本語の言語的な問題で期待できないんじゃないかな これはちょっと使ってみたいなぁと思います。

http://robingets.me/lessmail/thanks.html

Health Tap

これはいいかもしれない。日本は医療先進国だから、なかなか注目されないのかもしれないけど、、、 これも既にリソースを持っている人たちが、やっているイメージ

既にアメリカでは、毎月1000万件以上の質問が問い合わせされているとか。実際、これがあったらとてつもなく欲しい。

人工知能はおそらく、医師と質問者との効率のいいマッチングに使われているのかな?

Health Tap

SELF

いわゆるパーソナルアシスタント。会話ができたり、日常のログを記録してくれたり、ニュースとかを提案してくれたり。FBを見る限り、3ヶ月前くらいにスタートしたのかな?FBがビジネスページじゃなくて、いいね!できないのが印象的、笑

SELF

感想

あまり面白いモノないなぁ。なんとなく思ってたけど、人工知能ってやっぱり前面に押し出すものじゃない気がする。今ある人工知能押し出してる系のものって、マッチング・パーソナルアシスタントの2個くらいしかないのか。

Google PhotoとかAmazonのレコメンドとかの方が圧倒的にいけてるな。そもそも人工知能って言葉が氾濫しすぎてて、機械学習なのか、ただのプログラムなのか、ディープラーニングなのか全くわからない。雰囲気でビジネスやってる時点でそもそも終わってるのか。

今回思ったのは、 - 優れた人工知能を作るには、そもそも圧倒的なデータ量が必要 - 人工知能効率化のための手段でしかない - 人工知能を前面に押し出してる時点で既にイケてない

人工知能アプリを作りたいなら、少し考えないとダメかもしれない。

Qiitaの元記事:ここらで1つ、気になった”人工知能”搭載アプリをまとめてみる

python3での文字列フォーマットの方法まとめ

昔ながらのやり方(まだ使われてるけど)

'This is our %s' % 'string'
  # This is our string

print('we are learning %s %s' % ('Python', '3'))
  # we are learning Python 3

print('we are learning %(lang)s %(ver)s' % {'lang': 'Python', 'ver': '3'})
  #we are learning Python 3

新型 (推奨されてるやり方)

文字列の後ろに formatメソッドをくっつける。 挿入する場所は基本的に { }にて指定する。

'This is our string {}'.format('in Python')

'{} {} {}'.format('a','b','c') 
  # 'a b c'

'{2} {1} {0}'.format('a','b','c') 
  #c b a
  #インデックスみたいな指定ができる

'we are learning {lang} {ver}'.format(lang = 'Python', version = '3') 
  #we are learning Python 3

language = ('Python', '3')
'we are learning {0[0]} {0[1]}'.format(language)
  #we are learning Python 3

上級編

formatメソッドを使うんだけど、思ったよりたくさんのことができるらしい。

  • 数字をバイナリーに変換
  • 左寄せ・右寄せ・中央寄せとかで文字列作成
animal = ('Dog', 'Cat')
name = ('Maggie', 'Missy')

'I have a {0[0]} named {1[0]}'.format(animal,name)
    #I have a dog named Maggie

'I have a {0[1]} named {1[1]}'.format(animal,name)
    #I have a cat named Missy

'{:<50}'.format('aligned left')
  #'aligned left          
  #50インデックス用意して左詰めで文字入力
                            '{:a<50}.format('aligned left ')
  #'aligned left aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
  #上のが見づらいのでaで埋めてみた

'{:>50}'.format('aligned right')

'{:^50}'.format('aligned center')

'{:$^50}'.format('More Money')
  #'$$$$$$$$$$$$$$$$$$$$More Money$$$$$$$$$$$$$$$$$$$$'

'Binary: {0:b}'.format(324)
    #Binary: 101000100

'{:,}'.format(123456787654321)
    #'123,456,787,654,321'

  #割り算した結果も表示できるらしい
correct = 78
total = 84
'Your score is: {:.1%}'.format(correct/total)
    #'Your score is: 92.9%'
'Your score is: {:.3%}'.format(correct/total)
    #'Your score is 92.857%'

Qiitaの記事はこちらPython3での文字列フォーマットまとめ 旧型で生きるか、新型で生きるか

家庭教師業界についてのまとめと感じた課題

家庭教師業界ってオンライン授業がとても流行っていますが、実際に人を送る方の業界って全く注目されてないですね。気になったのでざっくり調べて見ました。

  1. 検索ワードから調査
  2. 業態の調査

1. 検索エンジンから調査

キーワードプランナーで検索ワード確認

家庭教師と入力して検索ワードを見てみました。想像通りだが、「トライ」が純粋想起を勝ち取っているようで、結構な検索ボリュームを持っています。

f:id:u-kan:20171009114959p:plain

ただ、「家庭教師 英語」といった「家庭教師 + 教科」っていう検索が無いのが不思議でした。使い方間違ってるのかな?

リスティング広告

どんな感じの広告が出てくるのか気になったので、リスティング広告から調べてみました。

f:id:u-kan:20171009115650p:plain

成熟産業なのでリスティング広告は激戦っぽいです。何回調べても新しい業者が現れる。。笑

「家庭教師 トライ」でも調べてみると意外なことに、トライのリスティング広告しかでてきませんでした。死守してるんですかね。

f:id:u-kan:20171009115924p:plain

2. 業態の調査

先ほどのキーワードプランナーの結果から見ても、ただし、全体の検索量も10万近く。そもそもマーケットはそこまで大きく無いようですね。

応募の多い時期は?

1月か4月が多いと想定していました 理由は昔よく両親から、「次の学年は大丈夫なの?」、「今年度は頑張ってよ」などと詰められるのがこの月に多かったからです。

グーグルトレンドで確認してみるとこんな感じです。時間軸がわかりにくい。。

f:id:u-kan:20171009120606p:plain

だいたいこんな感じの傾向がありました。まぁ肌感にはあってると思います。

  • 1 ~ 4月にかけて徐々に上がり始める。
  • 5 ~ 8月にかけてはよこばい 
  • 9 ~ 12月にかけて現象

既存サービスを見てみる

大きく分けて下記のようなカテゴリ分けになると思います。オンライン・オフラインがカテゴリのトップになるのが正しいのかはわかりませんが。

  • オンライン
    • ビデオ授業
    • 質問サービス
  • オフライン
    • 対面授業

現状激戦区になっているのが、主にオンライン。特にオンラインのビデオ授業。基本的にはZ会の一人勝ちですが。。

オフラインの対面授業に関しては、トライを除けば、10年前のサイトのまま整備もされていないようなのが多数、、笑

しかも、このオフライン対面授業のための応募プラットフォームがいけてなさすぎる。下記がさらっと感じた課題感。

  • 実際にあって授業を受けるまで先生の人となりがわからない
  • 先生の過去の成果もわからない
  • 応募はネットだけどそれ以外は基本アナログ
  • 先生とのマッチングのために、何十項目も入力しないといけない

課題だらけで、これが理由で家庭教師を雇わない人ってたくさんいるような気が。。

そもそもマーケット大きく無いから、参入メリットがないケースが多いのかな?

そもそも対面授業向けの家庭教師の申し込みサイトで大事なこと

そもそも家庭教師を利用するときに大事なのは、プラットフォームを運営する会社の信頼度ではなく、教えてくれる先生の過去のレビューと人となりなはず。

にも関わらず、先生の実績が直接見れるサイトは一個もないようです。ここがブラックボックスになっている現状は、如何なものでしょう。

ちなみに、カナダでホストファミリーを探したときにも同じような課題は抱えてました。探したと言うか、業者が全てやってくれるのですが、、

現地に行くまで家の様子も泊まる家も分からない。国籍もあまり分からずこちらに選択肢が無い状況。ここも社会的な課題だと常々思います。作ってもUIがほぼairbnbになりそうですが。。

pythonの秀逸なオブジェクト保存方法の設計

びっくりした話

以下のように記述した際、aとbは全く同じオブジェクト(ここでは2)を指しているらしい。

a = 2
b = 2

全く同じ。英語で言うと"the same object"。色々と疑問が生じたので調べてみた。 まずは、疑問を箇条書きにしてみます。

  1. 同じところを指してたらaを変更した時に、bも変わっちゃわない?
  2. てかそれ本当なの?

疑問1:書き変わらない?

これはよく考えれば、一個前の記事で調べてた内容でした。

簡単にまとめると、

全く同じオブジェクトが既に存在している場合には、
メモリの節約のために、その同じオブジェクト参照する。

同じオブジェクトが存在しなければ、新しく作成される。

つまり、a=3と新しく入力された場合、新規にオブジェクトを作成する。そして、b=2はそのまま保存される、というところでしょうか。

もちろん初心者のメモ書きなので、根本的な部分ではもっと複雑なことが起こってるのでしょうが、この定義でも矛盾なく説明できるので、とりあえずこのまま進んでみます。

疑問2:本当かどうか確かめる(id関数の使用)

本当かどうか確かめるために、メモリ空間のアドレスと言われるものを直接見られるid関数を使って見る。

id() について調べてみると分かるのですが、どうやら識別値を戻り値とするようです。つまり、同じオブジェクトを指していれば、戻り値は同じで、違うものであれば、戻り値も違うってことですね。

では、本題の本当に一緒のものなのかを調べていきます。

a = 2
b = 2

id(a) #4401166416

id(b) #4401166416

id(a) == id(b) #True 数字を見るのが面倒なので==使ってみた。

どうやら本当らしい。つまり、オブジェクトが新しく生成される時のルールは以下の通りになっているんだろう。

c=3を定義して、もう一回実験をしてみた。

c = 3 

id(c) #4401166448

id(a) == id(c) #False 

#この後、aを3に書き換えてcと同じになるか確かめる。

a = 3

id(a) #4401166448

id(a) == id(c) #True

と見事一緒になりました。つまり、

同一のオブジェクトが存在してれば、
新しいオブジェクトは作られない。

みたいですね。(※追記にて、一部訂正あり)

何の役に立つかわからないけど、内容的には不思議で面白いですねぇ

追記

yubaさんより

このような設計手法のことをFlyweightパターンと呼びます(メモリ消費が軽くなるから「フライ級」です)。ご参考に。

とのことです。ありがとうございます。

shiracamusさんからコメントにて訂正を頂きました。

どうやら大きな値である場合には、値が全く同じオブジェクトであっても、新しいオブジェクトは作られるみたいです。

てことで実行してみたのがこちら。

d = 50000
e = 50000

id(d) #4406088592
id(e) #4404350832

id(d) == id(e) #False

システムの中身のしまわれ方とか見るのも、意外と面白いですね

元記事:pythonでの、変数の処理について詳しく調べてみた

ブログ始めました。

前々から自分のブログを持とうと思っていたのですが、なかなか機会がなく。今日面白いものを見つけたので、これをいい機会にブログを開始。

面白そうだと手をつけてみたこと・調べたことのログを残して行きたいです。