AD-MARTECH LABO

アドテク・マーテクを中心に、最新技術を片っ端から総ナメして、分かった気になるブログ

仮想通貨女子がネカマかどうか、データサイエンスして確かめた | Chainerを用いたRCNNによるテキスト分類

f:id:tetsuyaimagawa:20170726200116j:plain

あらすじ

昨今、仮想通貨女子と言われる、ビットコインブロックチェーンに詳しい女子が増えており、互いに鎬を削っている。
bitcoiner.link



彼女たちは、自分の地位を脅かす相手を、時にバッシングしたり、パトロンに布教活動を行ったりしているようだ。
f:id:tetsuyaimagawa:20170726174433p:plain

f:id:tetsuyaimagawa:20170726174523p:plain



なるほど


ネットにありがちな ”ネカマ” である疑いをかけることで、ライバルの失脚を目論んでいるようだ。




しかし傍観者の私は思った




ネカマである疑いをかけている方もネカマで、実は仮想通貨女子はほとんどネカマなのではないだろうか・・・





悪い癖だ、





ネットに長く浸かっていると、オンラインの住民全てが胡散臭く見えてしまう。






ここは正攻法で、科学の力を持って検証すべきではないだろうか。





そう




真実(性別)はいつもひとつなのだから・・・




やること

Twitterの発言を分析し、仮想通貨女子が男/女性的な発言をしているか検証する。
発言を2パターン分類し、全発言に占める女性的発言が多い者が高い値を得るようスコアリングをする。

Twitterの発言を取得する

いくつかのツールを試した

TwimeMachine

  • 無料
  • 3,000ツイート取れる

TwimeMachine - Read and search your old tweets.
f:id:tetsuyaimagawa:20170726175927p:plain

All My Tweets

  • 無料
  • 3,000ツイート取れる
  • RTと返信隠せる

All My Tweets - View all your tweets on one page.
f:id:tetsuyaimagawa:20170726180044p:plain

Export Tweet

  • $30かかる

Twitter Analytics and Hashtag Tracking by ExportTweet

というわけで、All My Tweetsを用いる。
日付とか邪魔なので、最初の空白が現れたところで以下を切り捨てた。


Twitterの発言を分類する

つぶやき数や性別っぽさを鑑み、下記お二人のデータを学習データとした

武井壮を分類0, 広瀬すずを分類1として、学習データを食わせる。
f:id:tetsuyaimagawa:20170726190926p:plain

学習する

下記のコードを拝借し、魔改造させていただきました。
github.com




〜学習開始〜




f:id:tetsuyaimagawa:20170726194135p:plain





長い・・・





火を噴きそうなMacbook Air








悠久の刻が流れてもまだepoch 1 (進捗1%)







これ以上機械学習をするなら、環境を整えたほうがよいのではないか…







気を取り直して、一旦学習データ50くらいのepoch 10でやってみよう。






〜学習完了〜





テスト

テストには、先ほど揉めていたお二人のデータを使わせていただきました。

  • たそがれの仮想通貨女子さん
  • 仮想通貨な女子大生さん

f:id:tetsuyaimagawa:20170726195021p:plain
f:id:tetsuyaimagawa:20170726195027p:plain


全発言における、女性の発言と分類されたものの割合をスコアとする。


結果



たそがれの仮想通貨女子さん








f:id:tetsuyaimagawa:20170726195455p:plain







15.9点








仮想通貨な女子大生さん








f:id:tetsuyaimagawa:20170726195616p:plain









16.6点









どちらも広瀬すずちゃんとは程遠いことが判明した。q.e.d


今後の取り組み

Macbook Air

自作仮想通貨をマイニングしてみた

f:id:tetsuyaimagawa:20170702153540j:plain

前回までのあらすじ

tetsuyaimagawa.hatenablog.com

ICOで億万長者になるため、自作仮想通貨錬成に奮闘していた筆者は、ついにブロックチェーンの始まりである "ジェネシス" の生成に成功する。
伝説が本当なら、bitcoinジェネシスを上書きしてマイニングすれば、新たなブロックチェーンが生まれるはずである…

今回のあらすじ

そもそもオリジナルのbitcoinをマイニングしたことない私は、チュートリアルにしたがってはじめてのマイニングをすることにした。

やり方

ここへ来て(早速)最初の関門にぶち当たる。
GithubのREADME.mdには、どうやって起動するのかが書いていないのだ。ネットの海を彷徨った結果、気付く…
最も丁寧なチュートリアルは、docディレクトリの中に入っていた。灯台下暗し。

github.com

ビルド

公式チュートリアルを見るまで、色々なエラーに悩まされていたが、結局は必要なものをインストールしていなかっただけで、全部ぶりゅぶりゅすれば解決した。

以下2ステップは問題なく終了。

$ ./autogen.sh
$ ./configure

Options used to compile and link:
  with wallet   = yes
  with gui / qt = yes
    qt version  = 5
    with qr     = auto
  with zmq      = no
  with test     = yes
  with bench    = yes
  with upnp     = yes
  debug enabled = no
  werror        = no

  target os     = darwin
  build os      = darwin

  CC            = gcc
  CFLAGS        = -g -O2
  CPPFLAGS      =  -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS -I/usr/local/opt/berkeley-db@4/include -DMAC_OSX
  CXX           = g++ -std=c++11
  CXXFLAGS      = -g -O2 -Wall -Wextra -Wformat -Wvla -Wformat-security -Wno-unused-parameter -Wno-self-assign -Wno-unused-local-typedef -Wno-deprecated-register
  LDFLAGS       =  -Wl,-headerpad_max_install_names -Wl,-dead_strip


makeも、なんかワーニングでてるけど、華麗にスルー。

$ make
  CXXLD    libbitcoinconsensus.la
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
  CXX      bitcoind-bitcoind.o
bitcoind.cpp:157:17: warning: 'daemon' is deprecated: first deprecated in macOS 10.5 - Use posix_spawn APIs instead. [-Wdeprecated-declarations]
            if (daemon(1, 0)) { // don't chdir (1), do close FDs (0)
                ^
/usr/include/stdlib.h:285:6: note: 'daemon' has been explicitly marked deprecated here
int      daemon(int, int) __DARWIN_1050(daemon) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_0, __MAC_10_5, __IPHONE_2_0, __IPHONE_2_0, "Use posix_spawn APIs instead.") __WATCHOS_PROH...
         ^
1 warning generated.

  CXX      qt/qt_libbitcoinqt_a-notificator.o
qt/notificator.cpp:66:27: warning: 'LSGetApplicationForInfo' is deprecated: first deprecated in macOS 10.10 - Use LSCopyDefaultApplicationURLForContentType instead.
      [-Wdeprecated-declarations]
        OSStatus status = LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator, CFSTR("growlTicket"), kLSRolesAll, 0, &cfurl);
                          ^
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSInfoDeprecated.h:631:1: note: 'LSGetApplicationForInfo' has been explicitly marked deprecated
      here
LSGetApplicationForInfo(
^
1 warning generated.

Making all in doc/man
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `all-am'.

テスト

テストする。問題なくスルー。

$ make check
Making check in src
  CXX      libbitcoin_common_a-chainparams.o
  AR       libbitcoin_common.a
  CXXLD    bitcoind
  CXXLD    bitcoin-tx
  CXXLD    test/test_bitcoin
  CXXLD    bench/bench_bitcoin
  OBJCXXLD qt/bitcoin-qt
  CXXLD    qt/test/test_bitcoin-qt
  CXXLD    test/test_bitcoin_fuzzy
/Applications/Xcode.app/Contents/Developer/usr/bin/make  check-TESTS check-local
PASS: test/test_bitcoin
PASS: qt/test/test_bitcoin-qt
============================================================================
Testsuite summary for Bitcoin Core 0.14.2
============================================================================
# TOTAL: 2
# PASS:  2
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
Running test/bitcoin-util-test.py...
  CC       src/tests-tests.o
  CCLD     tests
  CC       src/exhaustive_tests-tests_exhaustive.o
  CCLD     exhaustive_tests
/Applications/Xcode.app/Contents/Developer/usr/bin/make  check-TESTS
PASS: tests
PASS: exhaustive_tests
============================================================================
Testsuite summary for libsecp256k1 0.1
============================================================================
# TOTAL: 2
# PASS:  2
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
  CXX      test/test_unitester-unitester.o
  CXXLD    test/unitester
/Applications/Xcode.app/Contents/Developer/usr/bin/make  check-TESTS
PASS: test/unitester
============================================================================
Testsuite summary for univalue 1.0.2
============================================================================
# TOTAL: 1
# PASS:  1
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
Making check in doc/man
make[1]: Nothing to be done for `check'.
make[1]: Nothing to be done for `check-am'.

起動

RPC configuration fileを作ることを推奨されたので、何も考えず作成。

$ echo -e "rpcuser=bitcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
$ cat ~/Library/Application\ Support/Bitcoin/bitcoin.conf 
rpcuser=bitcoinrpc
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXX
$ sudo chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"

起動アンドrun

$ ./src/bitcoind









動いたぁああぁ
f:id:tetsuyaimagawa:20170702144425p:plain








・・・






何か、








尋常じゃない勢いで何かをダウンロードしている。







これが俗に云うIBD (Initial Block Download)
これまでのブロックチェーンの歴史をか弱いMacbook Airに刻み込んでいるようだ。







数時間かかると言うので、ちょっと飲みに出かけることにした。




飲み会

2時間で帰ってくるつもりが、気づいたら10時間経っていた。昼飲み恐ろしい。




10時間後

家に帰るとMacbookは冷たくなっていた…
容量を使い果たしてしまったようだ。


どこぞの誰かの試算によると、テラ級で容量を食う模様。
bitcoin.stackexchange.com



ブロックは↓のパスに無限に保存されていく。
~/Library/Application Support/Bitcoin/blocks/blk00000.dat



私の場合は、50GBいったところでPCが昇天した。



ジェネシスとマークルを書き換える

さて、本題に戻り、前回錬成したジェネシスを設定ファイルに反映させてみる。

chainparams.cppの123と124行に、新しいジェネシスブロックとマークルを入れてみた。
github.com
このへんを書き換えろという指示はあったものの(前回記事参照)明確な指示はなかったので、ブロックチェーン職人としての勘で、この2行を書き換えた。



新たなるジェネシスの起動

さぁ、


もう一度 make してみよう。


$ make check
Making check in src
/Applications/Xcode.app/Contents/Developer/usr/bin/make  check-TESTS check-local
../build-aux/test-driver: line 107: 51375 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: test/test_bitcoin
../build-aux/test-driver: line 107: 51385 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: qt/test/test_bitcoin-qt
============================================================================
Testsuite summary for Bitcoin Core 0.14.2
============================================================================
# TOTAL: 2
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0
============================================================================
See src/test-suite.log
Please report to https://github.com/bitcoin/bitcoin/issues
============================================================================
make[4]: *** [test-suite.log] Error 1
make[3]: *** [check-TESTS] Error 2
make[2]: *** [check-am] Error 2
make[1]: *** [check-recursive] Error 1
make: *** [check-recursive] Error 1





FAIL





_人人人人人人_
> 突 然 の FAIL <
 ̄YYYYYY ̄