Twitter上のツイートをランダムに抽出する

標準

前回のword2vec特集で最後にちらっと紹介したTwitter上からランダムにツイートを抽出し、それをテキストに貯めていく方法について書いていきます。

利用するAPI

今回利用するAPIはTwitter社が公開するStreamingAPIの内、2番目くらいに需要がありそうな「statuses/sample」です。これと合わせて公開されているStreamingAPIは以下の3つあり、それぞれのAPIで全然使用用途が変わってきます。

API 説明 制限
POST statuses/filter フィルターを掛けて投稿を取得。地理的、アカウント別など様々な種類がある。ここでは扱わない。 特に制限なし
GET statuses/sample Twitterで投稿されているツイートをランダムに取得。少しくらいならフィルター掛けられる。 特に制限なし
GET statuses/firehose Twitterで投稿されている全てのツイートを取得。膨大なものになる。 Twitter社への特別な申請が必要。企業向け。

以上です。この内のstatuses/sampleを使って、ツイート収集プログラムを作っていきます。

利用するライブラリ

今回はGitHubから以下のライブラリを引っ張ってきました。
fennb/phirehose
このライブラリを使用することで、StreamingAPIへの認証・接続を行うことが出来ます。

プログラム

上記のGitHubプロジェクトからsampleのサンプルソースを引っこ抜いて来て、それを改造するだけで簡単に出来ます。ただ、今回は人工知能への学習用のモデルになるので、極力無駄な記号などが入らないように色々と頑張ります。

<?php
$api_key = '***************************' ;
$api_secret = '***************************************************' ;
$access_token='*************************************************';
$access_token_secret='********************************************';
require_once(dirname(__FILE__) . '/lib/Phirehose.php');
require_once(dirname(__FILE__) . '/lib/OauthPhirehose.php');
class SampleConsumer extends OauthPhirehose
{
  public function enqueueStatus($status)
  {
    $data=json_decode($status,true);
    $replaced=preg_replace('/(\n|\r)/','',$data['text']);
    $replaced=preg_replace('/@(?:\d|[a-z]|_)*\w+/','',$replaced);
    $replaced=preg_replace('/RT : /','',$replaced);
    $replaced=preg_replace('#https://[^¥s]*#','',$replaced);
    $replaced=preg_replace('/#[^\s]*/','',$replaced);
    $replaced.=PHP_EOL;
    if(mb_strlen($replaced,'UTF-8')>10) {
      print $replaced;
      error_log($replaced,3,dirname(__FILE__) . '/tweets.txt');
    } else {
      print "/////===============UNCOUNTED===============/////" . PHP_EOL;
    }
  }
}
define("TWITTER_CONSUMER_KEY", $api_key);
define("TWITTER_CONSUMER_SECRET", $api_secret);
define("OAUTH_TOKEN", $access_token);
define("OAUTH_SECRET", $access_token_secret);
$sc = new SampleConsumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_SAMPLE);
$sc->setLang('ja');
$sc->consume();

追記(2017/08/11):正規表現をちょっと変えました。

取得したツイートを以下の順番で正規表現による置換で無駄な記号などを置き換えていきます。

  1. ツイート内の改行を全て削除
  2. @に続くアルファベット・数字・記号(=@リプライ)を削除
  3. リツイートの接頭辞を削除
  4. リンクを削除
  5. ハッシュタグ・リツイート時の記号・空白文字(スペース・タブなど)を削除

置換されたツイート内容は10文字以下であると、文脈判定の条件上、ただの意味狂わせになりかねないので削除します。それで10文字より多いツイートはerror_logを乱用してテキストに記録していくといったものです。
ちなみにプログラム中に登場する「PHP_EOL」はPHP専用の改行コードです。

性能

色々なプログラムを試してみたところ、これが最速だったのですが、パソコンのスペックにもよると思いますが大体1時間に1万以上は収集できるようです。また、

cat tweets.txt | wc -l

とパイプで繋いだコマンドを打つことで、テキストの行数を数えて収集したツイートの数を数えることが出来ます。便利です。あと、収集したツイートでテキスト検索したい時は、

cat tweets.txt | grep "hoge"

とこれまたパイプで繋いだコマンドを打つことで色々と見れます。パイプって便利。

10万ツイート程収集しただけでも結構な語彙力になっていて、日本語モデルとして期待できそうです。

word2vecでWikipediaのダンプを遊ぶ

標準

前回、Wikipediaのダンプファイルを用いて学習ファイルを生成しました。今回はこのデータを使って、ちゃんと学習は出来たのか?そして、word2vecならではの遊び方を紹介していきます。今回はUbuntuのコマンドラインを使っていきます。まずは、word2vecの入っているディレクトリーにカレントディレクトリーを合わせましょう。

まずは、distanceというプログラムを起動します。引数として学習ファイルを指定します。長くて30秒ほどすると「Enter word or sentence (EXIT to break):」という指示が表示されます。このアプリケーションでは入力した単語と近いベクトルを有した単語を上位40件まで列挙してくれるというものです。
試しに幾つか単語を入力してみた結果を紹介します。

yoshipc@ubuntu:~/word2vec$ ./distance jawiki-train.bin
Enter word or sentence (EXIT to break): 東京

Word: 東京  Position in vocabulary: 369

                                              Word       Cosine distance
------------------------------------------------------------------------
                                            大阪			0.819656
                                            名古屋		0.728486
                                            横浜			0.721580
                                            京都			0.690569
                                            関西			0.666182
                                            新宿			0.657751
                                            札幌			0.644623
                                         神奈川			0.644338
                                            新潟			0.633014
                                            仙台			0.624947
                                            神戸			0.622716
                                            福岡			0.622510
                                            銀座			0.620424
                                            静岡			0.609896
                                            関東			0.605483
                                            浅草			0.602041
                                            函館			0.591723
                                            池袋			0.584673
                                            渋谷			0.578642
                                         日本橋			0.578430
                                         八王子			0.571659
                                            金沢			0.567943
                                         東京都			0.566478
                                            埼玉			0.562925
                                            上海			0.562798
                                            調布			0.562326
                                            東都			0.560888
                                            広島			0.559834
                                            品川			0.558159
                                         世田谷			0.556256
                                         六本木			0.554119
                                            青森			0.549229
                                            東北			0.546918
                                            小樽			0.546204
                                            九州			0.544958
                                         武蔵野			0.542167
                                         お台場			0.540832
                                            熊本			0.538358
                                            帝都			0.536352
                                         日比谷			0.531976

Enter word or sentence (EXIT to break): 地球

Word: 地球  Position in vocabulary: 1233

                                              Word       Cosine distance
------------------------------------------------------------------------
                                            宇宙			0.821528
                                            火星			0.812108
                                            惑星			0.797727
                                         太陽系			0.790921
                                            人類			0.738912
                                            木星			0.733991
                                         銀河系			0.733956
                                            銀河			0.708870
                                            月面			0.693097
                                      宇宙空間			0.655918
                                         冥王星			0.651471
                                            太陽			0.633461
                                            水星			0.627036
                                   	地球の危機		0.626256
                                            土星			0.623206
                          	   ブラックホール			0.617673
                                   天の川銀河			0.614921
                                      人工惑星			0.614166
                                            北極			0.612878
                                      暗黒大陸			0.611285
                                   地球の大気			0.609744
                                            南極			0.606897
                                               星		0.604035
                                         海王星			0.603326
                                         地球人			0.599359
                                         天王星			0.597761
                          デジタルワールド			0.596115
                                         宇宙船			0.593324
                                      ガニメデ			0.593323
                                            世界			0.592610
                                            恒星			0.591629
                                         人間界			0.590720
                             アトランティス			0.588247
                                   ラーメタル			0.586938
                                ファルガイア			0.584400
                                            地上			0.583851
                                         ゴラス			0.583015
                                         侵略者			0.581611
                                ハルケギニア			0.581090
                                            星団			0.579153

Enter word or sentence (EXIT to break): 未来

Word: 未来  Position in vocabulary: 2337

                                              Word       Cosine distance
------------------------------------------------------------------------
                                         未来を			0.665130
                                   明るい未来			0.644872
                                         未来へ			0.637368
                                               夢		0.619448
                                   新しい世界			0.606247
                                   地球の危機			0.591318
                                         未来人			0.590926
                                            宇宙			0.571891
                                   本当の自分			0.571252
                          デジタルワールド			0.564416
                                   理想の世界			0.564250
                                            真実			0.561864
                                            現実			0.559642
                                            運命			0.558397
                                         近未来			0.554683
                                         カタチ			0.552179
                                            破滅			0.541106
                          タイムトラベラー			0.540935
                                         別世界			0.538001
                                         こころ			0.537282
                                            人類			0.536730
                                            地球			0.533530
                                            世界			0.532455
                                            叡智			0.524632
                                         理想郷			0.523804
                                            理想			0.521488
                                            幸福			0.518942
                                         みらい			0.518518
                                            明日			0.516735
                                         私たち			0.515698
                                世界の終わり			0.513908
                                      大切な人			0.513858
                                         行く末			0.511889
                                   最後の人間			0.511708
                                      未来社会			0.509263
                                         この国			0.509024
                          セレンディピティ			0.508971
                                      時間旅行			0.508526
                                            僕ら			0.508296
                                   最後の願い			0.506727

確かにそれと近い単語が出力されていますが、全く関係ない単語も幾つか見受けられます。まだ日本語モデルが足りなかったんですね。

次にword-analogyというプログラムを動かしていきます。こちらはベクトル演算が出来るという優れもので、例えば「恐竜 噴火 人類」と3つの単語を渡すと、自動的に「噴火 – 恐竜 + 人類」の演算を行い、感覚的には「恐竜 : 噴火 = 人類 : X」のXを返してくれます。日本語で言うところの「恐竜の噴火は人類にとってXに相当する」と言った感じでしょうか。実際は200次元のベクトルで演算していますが、平面ベクトルで表現するとこんな感じです。

word2vecベクトル演算

こんな感じに簡単に私達の知らない情報を引き抜けるんですね。信じるか信じないかはアナタ次第ですが。では以下ではいくつか気になった演算をしてみた結果を。

yoshipc@ubuntu:~/word2vec$ ./word-analogy jawiki-train.bin
Enter three words (EXIT to break): 現在 地球 未来

Word: 現在  Position in vocabulary: 114

Word: 地球  Position in vocabulary: 1233

Word: 未来  Position in vocabulary: 2337

                                              Word              Distance
------------------------------------------------------------------------
                                            宇宙			0.688643
                                   地球の危機			0.619962
                                            人類			0.589227
                                   新しい世界			0.562798
                                            銀河			0.560886
                                            火星			0.550297
                                         太陽系			0.548981
                                            惑星			0.545989
                          タイムトラベラー			0.539157
                                            時空			0.532585
                                            世界			0.529007
                                         宇宙人			0.524593
                          デジタルワールド			0.522972
                                         侵略者			0.519479
                                         未来人			0.516680
                                         銀河系			0.505112
                                         宇宙へ			0.501737
                                         別世界			0.498040
                                   明るい未来			0.493679
                                   理想の世界			0.492330
                                      地球環境			0.488340
                                         金星人			0.486031
                                            星空			0.485491
                                            太陽			0.484105
                                         地球人			0.482406
                                            運命			0.480751
                                            大地			0.480510
                                         火星人			0.480290
                                      エウレカ			0.480114
                                            月面			0.478332
                                               星		0.476642
                                      タナトス			0.474876
                                            人間			0.474285
                                         月世界			0.473038
                                         異次元			0.472115
                                         未来へ			0.469909
                             ブラックホール			0.469258
                                      恐竜時代			0.467985
                                   最後の人間			0.467846
                                            真実			0.466832

Enter three words (EXIT to break): 恐竜 噴火 人類

Word: 恐竜  Position in vocabulary: 6929

Word: 噴火  Position in vocabulary: 7768

Word: 人類  Position in vocabulary: 3591

                                              Word              Distance
------------------------------------------------------------------------
                                      火山活動			0.588478
                                         大洪水			0.570087
                                            洪水			0.568536
                                            地震			0.525334
                                            飢饉			0.523110
                                      群発地震			0.519757
                                         大地震			0.516680
                                         干ばつ			0.514588
                                            水害			0.513399
                                      地殻変動			0.507397
                                         火砕流			0.502001
                                         山火事			0.501575
                                   爆発的噴火			0.501405
                                      山体崩壊			0.497568
                                            津波			0.493958
                                   水蒸気爆発			0.491090
                                            大火			0.488430
                                            旱魃			0.486605
                                            日食			0.472565
                                            内戦			0.468493
                                         大旱魃			0.468090
                                         寒冷化			0.463165
                                      武力衝突			0.460845
                                         暴風雨			0.460724
                                            崩壊			0.460065
                                         磁気嵐			0.459379
                                            争乱			0.458475
                                      天変地異			0.457827
                                            高潮			0.457417
                                            恐慌			0.455366
                                            観測			0.453862
                                         溶岩流			0.451336
                                            火災			0.450723
                                         核戦争			0.450222
                                      海面上昇			0.449969
                                            氾濫			0.448539
                                            戦乱			0.447700
                                            災厄			0.446214
                                      気候変動			0.446063
                                            紛争			0.442918

nter three words (EXIT to break): 過去 戦争 未来

Word: 過去  Position in vocabulary: 598

Word: 戦争  Position in vocabulary: 1053

Word: 未来  Position in vocabulary: 2337

                                              Word              Distance
------------------------------------------------------------------------
                                            革命			0.579042
                                            平和			0.551328
                                      最終戦争			0.551048
                                            大戦			0.511333
                             第三次世界大戦			0.505464
                                            戦い			0.499229
                                            聖戦			0.494336
                                      全面戦争			0.492297
                                   新しい戦争			0.487422
                                            文明			0.484664
                                      世界大戦			0.479522
                                            動乱			0.479157
                                            侵略			0.479121
                                         核戦争			0.477395
                                            破滅			0.462690
                                            内乱			0.460555
                                            戦乱			0.459921
                                            戦役			0.459181
                                            人類			0.458564
                                            闘い			0.454692
                                         総力戦			0.454031
                                            紛争			0.452444
                                      解放戦争			0.450627
                                      日米戦争			0.450438
                                               ―		0.449418
                                            内戦			0.448559
                                      独立戦争			0.448321
                                            事変			0.448053
                                            変革			0.447313
                                         大破壊			0.446041
                                            胎動			0.445219
                                            物語			0.443327
                                            作戦			0.443116
                                            ――			0.441500
                                            飽食			0.439174
                                            社会			0.438808
                                            闘争			0.437719
                                            争乱			0.436250
                                            正義			0.436185
                                      産業革命			0.435023

Enter three words (EXIT to break): 現在 核戦争 未来

Word: 現在  Position in vocabulary: 114

Word: 核戦争  Position in vocabulary: 44105

Word: 未来  Position in vocabulary: 2337

                                              Word              Distance
------------------------------------------------------------------------
                             第三次世界大戦			0.592685
                                   地球の危機			0.583607
                                         大破壊			0.581500
                                      最終戦争			0.581242
                                   新しい戦争			0.545251
                                            地球			0.533560
                                            宇宙			0.531146
                                   新しい世界			0.526614
                                            人類			0.521582
                                            真実			0.519430
                                         未来を			0.517114
                          タイムトラベラー			0.512824
                                      歴史改変			0.503098
           オルタレイション・バースト				0.501443
                             タイムトラベル			0.499473
                                            破滅			0.498174
                                ハルマゲドン			0.494760
                                         明晰夢			0.493937
                                世界の終わり			0.488566
                                            聖戦			0.486603
                                カタストロフ			0.485274
                                      日米戦争			0.483828
                                         近未来			0.479838
                                         未来へ			0.479609
                                   ビッグバン			0.479543
                                メルトダウン			0.477830
                                      無縁社会			0.476650
                                      運命の日			0.476261
                                      人類滅亡			0.476180
                                   理想の世界			0.474734
                                         新人類			0.473068
                                      文明崩壊			0.471420
                                   ヴィジョン			0.470636
                                         侵略者			0.469450
                             ビッグクランチ			0.467575
                                            虚構			0.467098
                                タイムリープ			0.465249
                                      千年王国			0.465109
                                            運命			0.464471
                                            現実			0.463786

Enter three words (EXIT to break): 女性 かわいい 男性

Word: 女性  Position in vocabulary: 404

Word: かわいい  Position in vocabulary: 19629

Word: 男性  Position in vocabulary: 936

                                              Word              Distance
------------------------------------------------------------------------
                                         可愛い			0.811681
                                         デカイ			0.683309
                                         っぽい			0.674909
                                   かっこいい			0.672885
                                      カワイイ			0.671438
                                かわいらしい			0.660587
                                   可愛らしい			0.659621
                                   カッコイイ			0.658944
                                         ダサい			0.625092
                                            怖い			0.619516
                                      かわいく			0.616060
                                      格好いい			0.615856
                                   大人っぽい			0.614768
                                         汗臭い			0.611559
                                         でかい			0.598629
                                         可愛く			0.597155
                                         エロい			0.592667
                                            ぽい			0.592332
                                         キモい			0.585848
                                      暑苦しい			0.581979
                                      愛らしい			0.579754
                                         似合う			0.579252
                                   可愛らしく			0.573437
                                かわいらしく			0.571982
                                            俺様			0.570179
                                      男らしい			0.567764
                                   恥ずかしい			0.566776
                                         ウザイ			0.563024
                                   おっかない			0.559657
                                   ちっちゃい			0.559188
                                うっとうしい			0.555609
                                            甘い			0.554824
                                   愛くるしい			0.554654
                                         キツイ			0.554243
                                      ぶりっ子			0.553716
                                         女の子			0.551877
                                   子供っぽい			0.548488
                                         モテる			0.548079
                                         っぽく			0.547141
                                         男の子			0.545460

どうでしょうか。全くぶっ飛んだ回答をしているわけでもなく、結構やっていて面白いです。他にも「人類 神 蟻」とかちょっと人間でも答えにくいような問題も出してみると楽しいかもしれません。

現在はこれらの結果を鑑みて、日本語モデルを更に増やすためにphpでプログラムを組みまして、Twitterから延々とツイートを取得してログとして収集していくという準備をしています。その実験第一回目の結果はこちら

Glock用のFETデバイスを自作する

標準

前回はメカボの分解と整備を行いました。また、トリガースイッチが完全に焼けてしまっていた事を確認したので、今回は接点焼け対策としてFETデバイスを導入したいと思います。

FETデバイスとは

電動ガン業界におけるFETデバイスとは何かを簡単に説明しておきます。電動ガンにはトリガースイッチという、バッテリーから送られてきた電気をモーターに送る・遮断するためのスイッチがあります。このスイッチには高電圧がかかるので接点がスパークを起こし、焼けてしまうことが多々あります。

接点焼け1

↑前回取り出した焼けてしまった(接点焼け)スイッチ

接点焼けを起こしたスイッチは通電性が悪くなり、トリガーを深く引かないと動かなくなったり、最悪の場合は銃が動かなくなります。そんな接点焼けを防ぐために登場したのがFETデバイスになります。

トリガースイッチをFETに置き換えることでスイッチ間に高電圧がかからなくなり、接点焼けをほぼ完全に防ぐことが出来ます。

つまりトリガースイッチを機械スイッチから電子スイッチに置き換えるためのものですね。

FETデバイスは色々なカスタム業界から発売されているのですが、値段が馬鹿みたいに高いものが多いです。接点焼けを防ぐために何千円も投資するのは馬鹿らしいので自作しようと思います。しかし、電子工作なんてロクにやってことが無いので色々調べてから取り組みました。

FETの材料

まずは材料を調達しましょう、とりあえず秋葉に行けばなんでも揃います。

FETの材料たち

とりあえずメインになりそうなパーツたちです。FETは案外簡単に作れるので材料も少なめです。

買ってきた物一覧

  • FET×3個(IRLB3034PBF 40V195A) 高電圧・高負荷にも余裕で耐えられる物、1個300円ぐらい
  • 100Ω抵抗(100個入り) カーボン抵抗の普通のやつ、1/2Wとか書いてあったがよくわからない…
  • 30KΩ抵抗(100個入り) こちらもカーボン抵抗、1/2Wのヤツ
  • SBD(SR54F 40V5A 10個入り) SBDを作るの時に使うので購入、小さくて高性能
  • オヤイデ電気の導線(太さ2mm 長さ1m) 効率が良さそうな導線を購入
  • 収縮チューブ(3種類)

FETは色々な種類がありますが、今回はIRLB3034PBFというのを選んでみました。40V195Aというかなりの高電圧、高負荷にも対応出来るので、カスタム済みの電動ガンやリポバッテリーで運用している人におすすめです。

FETの仕組みについて

ネットで調べると自作FETの回路図が出てくるのですが、よくわからないので結線図と呼ばれるものを書いてみました。

FETの結線図

が正極、が負極、が信号線を表しています

上の結線図をみて、電気の流れを順番に辿っていきます。

負極側

  • まずバッテリーから流れた電気がFETのSource端子からFETに流れます。しかし流れてきた電気はFETで遮断されます。
  • Gate端子に接続された信号線がスイッチが入ったことを確認します。すると遮断されていた電気がDrain端子から流れる様になります。
  • バッテリーの電気がモーターに流れるようになるので、モーターが回り、弾を発射します。

正極側

こちらは特に難しいことは無いですね。バッテリーから送られてきた電気をそのままモーターに送ります。途中にヒューズを挟んであげると、いざという時のセーフティーになってくれます。また信号線を接続する必要があります。

電気をFETに送り、信号線が接触したことを感知するとモーターに電気を送る仕組みです。信号線は微弱な電流しか流れないので、トリガースイッチがスパークを起こすことがなくなり、接点焼けを防ぐことが出来ます、案外単純な仕組みです。

テスト動作

とりあえずテスト動作させてみましょう、ハンダ付けしてしまうと色々面倒くさいので、ブレットボードで作ってみました

テスト動作

一応動作しました…配線がカオスなことになっていますが、実際に作るとコンパクトにまとまるので大丈夫です。

電圧が6.65Vになっているのはパワーソースが電源装置だからです。

 

FETの組み立て

では実際に作っていきます。今回作るFETは電動ハンドガンに組み込むので、なるべく小型になるように作って行こうと思います。

まずは30KΩ抵抗の取り付けです。

FET作成

GateSource端子をつなげるように接続します。今回使ったFETは金属フランジ(穴が開いてる金属部分)なので、ショートしないように抵抗を収縮チューブで包んで絶縁します

またFETにハンダ付けをする際はFETが加熱されすぎないように注意してください。FETは熱に弱いらしいので下手すると壊れてしまいます

抵抗とFETの端子をハンダ付けしたら次の工程に移ります。

FET作成2

次はGate端子100Ω抵抗信号線を取り付けます。信号線は適当な導線で大丈夫です、かなり雑ですがまあ大丈夫だと思います…

Drain端子にはモーターに接続する為の導線を取り付けます、この導線は高効率なものがいいですね

とりあえず収縮チューブで覆ってしまえば見た目は誤魔化せます。

FET作成3

100Ω抵抗も熱収縮チューブで覆ってしまいましょう。

その後はSource端子にバッテリーと接続するための導線をつけます。この導線も高効率なものがいいです、こちらも熱収縮チューブで覆います。

FET作成4

その後は大きめの熱収縮チューブで全体を覆ってしまいます。金属フランジは放熱の役割があるので、少しだけ出しておくと良いと思います。

以上で自作FETデバイスの完成です、思っていたより小型に出来ました。

自作FETデバイスを組み込んでみる

というわけで早速組み込んで行きたいところですが、現在Glock18Cのスライドが改修工事中なので、フレームに乗せる程度になります。

しかし仮組み時の写真を撮り忘れたのでこんなものを作ってみました。↓

組み立てイメージ図

組み立てイメージ図です。

FETは今回制作した物をイメージしているので少し分かりにくいかもしれません。

画像だけだと理解し難いので各部の説明をしていきたいと思います。

 

%e4%bf%a1%e5%8f%b7%e7%b7%9a信号線の説明

まずはモーターの正極に接続されている赤い導線(2)、これはトリガースイッチへ繋がっています。また同じ場所にハンダ付けされている赤い導線(1)はバッテリーへと繋がります。

ちなみに信号線?に該当する部分はトリガースイッチの端子になります。またヒューズは今回は使いませんでした。

 

信号線2 信号線2 図解

次はもう一本の信号線(2)についてです。こちらはFETから生えてる白い導線になります、赤い導線とは別のトリガースイッチ端子に接続します。

 

次はメカボの裏側に移ります。

メカボ裏の説明 メカボ裏 図解

導線1というのはFETのDrain端子に接続されている導線のことです。メカボの裏側を這わせてモーターの負極側に接続します。

 

次はバッテリー関係です。

バッテリー関係バッテリー関係 図解

赤い導線(1)はバッテリーの正極側に接続します。

導線2というのはFETのSource端に接続した導線です、バッテリーの負極側に接続します。

問題点と注意点

FETはGateSource間の電圧が低くなると、内部抵抗が増加し発熱してしまいます。バッテリーというのは電動ガンを動かしている時に一気に電圧が低下しているので、電圧低下が大きいバッテリー(ニッカドやニッケル水素)を用いるとFETが一気に発熱していまいます特に電池切れに近い状態のバッテリーは危険です

ちなみに放電能力の高いバッテリー(リポやリフェバッテリー)では基本的に発熱することはありません。容量が多いニッケル水素バッテリーなども大丈夫みたいです。

実際にFETをフレームに組み込んでみたところ、スライドがしっかり入らなくなることを確認しました。(画像なし)スムーズに組み込むためにはインナーバレルカバーを削る必要がありそうです。

 

マルイ純正バッテリーだとスペースに余裕がなくなるという点と、FETが発熱することを考慮するとリポバッテリーを導入したほうが良いかもしれません。というわけで早速リポバッテリーを購入してみました

次回はSBDの作成とリポ導入についての記事を書きたいと思います。

 

 

 

東京マルイ M870ガスショットガンが凄い

標準

皆さんこんにちは。鳩屋です。今までずっと執筆をサボってて三人共同管理とはとは名ばかりの状態でしたが、いい加減なにかしないと空気になって吸われてしまうので「東京マルイ M870ガスショットガン」のご紹介をさせていただきます

実銃M870はレミントン・アームズ社の傑作ショットガンM31の後継機にあたるもので、
民間の狩猟用や警察、軍事などいろんなところに引っ張りだこのショットガン界のアイドルちゃんらしい
なにやら日本国内向けに装弾数を減らしたモデルも存在するらしいので、所定の手続きを踏めば所持できるかもですネ
個人的にはゾンビに向かってぶっ放すアレのイメージで、購入理由もゾンビ映画ごっこしたかったからというミリタリーそっちのけの理由であります(´・ω・`)

じゃ、ブツのお披露目に移りましょ

でーん

やべえ(゚∀゚)
なんだこの未体験の凄味は・・・黒で引き締まった近代的な佇まいの中に香るビンテージな雰囲気のライフルタイプグリップといい、荒々しい力を持っているのにも関わらずのスマートでさっぱりとしている、でも決して薄味感はない適度な雰囲気といい・・・・・・・
上品ッ!上品すぎるッ!上品すぎるよッ!v(´∀`*v)

上品な勢いで細部のレビューへと行ってみましょう

先ずはグリップ部分

さすが国産というところでしょうか、チェッカリングには乱れもなく、薄く細身で手にスッと収まる感じ・・・
ピストルグリップにはない感触の素敵なカタチをしてます。

それからそれから


こちらはトリガー周辺の様子
ああ^~
ショットガンではお馴染みのクロスボルトセーフティです。
右側に赤いマークが出たら発射可能になります。
急な解除には少し慣れが必要かな(´・ω・`)

 


エジェクションポートちゃんだね
うん・・・良い意味で普通だね!


開くとこんな感じ。
マルイさん独自メカの3発6発切り替えメカが顔をのぞかせてます
エジェクションポートはここまでしか開かないのでちょっとさみしい

フォアエンドは滑り止め付き
MCSタイプとは違い、スッとしててすっごい好みな部分
素手でもグローブでも滑りはなし!
トリガー引きっぱなしでフォアエンドを前後させればバババババッっとラピットファイアができます
でも銃に対して捻じれなく持たないと引きづらい・・・
だとしても!引いた時の「ジャキン!!」という金属音はマジで痺れます(゚∀゚)
もう一回言います。ほんとに痺れます。いやマジで

銃の要、サイトをのぞいてみると・・・

こんな感じ
大きく取られたゴーストリングサイト、めっちゃ合わせやすいです。
完全にCQB向けのサイトですので、遠方を狙うのにはちょっと注意が要るかな・・・?

外装関連はざっとこんな感じです

10月の初頭、千葉のCIMAXさんの定例会で実戦投入してみたのですが、

むっちゃたのしい

フォアエンドを引くたびに脳汁がドバドバ出てきてハイになるし、
実銃に似たマガジンの装填方式もサバゲのロマンとワクワク感を掻き立てまくりです( *´艸`)
さらにそれほどガスガン向けの気候ではなかったにも関わらず、77m/sというなかなかな初速を出してくれました。
ただ、0.2gBBだとどうしてもフライヤーの発生率が高いですね・・・
ですが0.25gBBに変えたところうって変わって大量のBB弾がドバっとまとまって飛び出し、少し散りつつ30~40mぐらい飛ぶ
という理想的な弾道になってくれました。ここでもやっぱり脳汁が噴出しました(゜∀。)

で、評価は
外見 :★★★★☆
やっぱり金属フレームとガッと黒い樹脂の共演はカッコイイ。
ワガママを言うとエジェクションポートをもちっと何とかしてほしかった(;´∀`)
でもやっぱりショットガンはイケてるヤツだぜ!
操作感:★★★☆☆
フォアエンドの引きには意外と慣れが必要かもしれない・・・?
まっすぐ引いてコッキングしてあげることがポイント!
でも前述した通り金属音はマジで最高!ほんとマジで最高!!!!!!!
射撃性能:★★★★★
冷えにもしっかり強く、7本ほどシェルマガジンを使ったけど息切れはほぼなし!
マルイさんが電動ガンと互角と謳うだけあって制圧力も抜群!
弾を0.25gにすればあなたも弾を一斉に発射するショットガンの醍醐味がガッツリ味わえるハズ!
こいつぁホント大満足だぜェ!Σb( `・ω・´)

ほんとヤバイヤバイヤバイ・・・(語彙喪失)

ヤバイヤバイヤバイ

ヤバイヤバイヤバイ

ヤバイヤバイ

・・・・

買おうかどうか迷ってるそこのアナタ! この子はマジで買いですぜ!
ぜひともクールなショットガンライフを送ってみませんか?
以上、私の記事が購入の決め手になってくれれば幸いです

それではまた~(_´Д`)ノ~~

word2vecでWikipediaのダンプを扱う

標準

今回、ある大学の研究室見学に赴いたところ自然言語処理をしているところが有りまして、そこでword2vecという単語をベクトルとして表現するというツールが存在することを知りまして、早速自分でも試してみました。今回はUbuntuを使っていきますが、word2vecは3GB以上のメモリが無いと正常に動作しないので、特別にメイン機をエミュレートして実験しました。

Wikipediaのダンプをダウンロード

まずはwikipediaのダンプファイルをダウンロードします。これは、日本語版のWikipediaの全文が収録されていて、これを日本語のモデルとして学習させます。cURLで任意のフォルダーにダウンロードしてください。約2GBちょいあるので、扱いには気をつけてください。

curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2

次にダウンロードしたダンプファイルをテキストファイルに展開します。500個ほどファイルが生成されます。こちらもそれなりに重い作業で数時間かかります。

rbenv exec wp2txt --input-file jawiki-latest-pages-articles.xml.bz2 

上の展開で生成された500個以上のテキストファイルを1つにまとめます。catファイルでコマンドラインに出力するものをそのままテキストに流し込んでいきます。

cat jawiki-latest-pages-articles.xml*.txt > jawiki-dump.txt

jawikiをまとめる
このようにひとつのファイルに纏まっていきます。(画像は実行途中なので、ファイルの重さも軽いです。)

辞書をダウンロードする

この時点でダンプファイルがテキストファイルの状態で1つにまとまっていると思います。それをこれから品詞分解していきます。ここで、品詞分解をする辞書として「mecab-ipadic-NEologd」を使っていきます。この辞書は常に最新の日本語が収録されているので、品詞分解の精度はピカイチです。多くのサイトでは品詞分解を標準のものでやっていますが、ここではこちらを使っていきます。

まずは前提パッケージをインストールします。

sudo apt-get install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file

パッケージをインストールし終われば、辞書をダウンロードする準備が整ったので以下のコマンドを走らせます。

//githubからクローンを取る
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

//ディレクトリー移動
cd mecab-ipadic-neologd

//インストール
./bin/install-mecab-ipadic-neologd -n

mecab-ipadic-NEologdインストール中

このように辞書がインストールされていきます。

この実行が終了すれば最新の辞書がダウンロード出来ました。ついでにインストール先を調べるために以下コマンドも走らせます。出力を控えておきましょう。

echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

ダンプファイルを品詞分解する

さて、いよいよ品詞分解していきます。ここでは、品詞分解と言っても全ての品詞を解析していくわけではなく「分かち書き」という表記にしていきます。分かち書きというのは、単語ごとにスペースを挟んだ表記法です。これでword2vecに単語を認識してもらえるようにします。

cat jawiki-dump.txt | mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd -Owakati -b 81920 > jawiki-wakati.txt

ここでの辞書のパスは控えておいたmecab-ipadic-NEologdのパスを入力してください。また、「-b 81920」を指定しないとバッファ不足かなにかでエラーを返されます。このコマンドが実行されると、jawiki-wakati.txtという名前で分かち書きが施されたダンプファイルが生成されます。これがword2vecの食べ物です。

word2vecに読み込ませる

いよいよword2vecに読み込ませていきます。ここまで仮想環境でも相当の時間がかかりましたが、ここが正念場です。頑張っていきます。以下のコマンドを走らせます。

time ./word2vec -train jawiki-wakati.txt -output jawiki-train.bin -size 200 -window 5 -sample 1e-3 -negative 5 -binary 1

word2vec解析中

このようにして出力が始まります。Wikipediaのダンプに収録されている単語は合計11億語くらいで、そのうち実際に語彙となったのは170万程です。

私の仮想環境ではコマンドが遂げられるまで8時間近くかかりました。仮想ということもあるのでしょうが、結構重いです。このコマンドが終了するとjawiki-train.binというファイルが生成されます。これが日本語の学習データです。これを使うと色々と日本語で遊ぶことが出来ますので、その部分は次回に。

入間基地航空祭(2016年)に行ってきました

標準

11月3日の文化の日に、埼玉県にある入間基地にて「入間基地航空祭」が催されました。
その主な目的は

入間航空祭は、航空自衛隊員の業務への旺盛な取り組みや装備品の展示のため

ということで、航空自衛隊の色々な装備を見たり、実演飛行を見てみたり、そしてブルーインパルスを見ることが出来ます。
私どももぜひ一度生で見ておきたいということで、行ってみました。当日は雲ひとつ無い空が1日続き、とても映えました。今回は撮影した写真を(twitter経由ですが、)貼り付けていきます。自分で撮影した中でも厳選したものです。(もともと下手ですが…)

個人的に一番綺麗に、大迫力に写ったものなのではないかと思っています。色々と力及ばずなので、近くに飛んでくれないといい感じには撮れないです。

菱形に密着して飛行している様子です。ここまで近づいていると、お互いが発生する乱気流で姿勢制御すら難しそうですが、成し遂げてくれます。さすがです。

高速で飛行場上空に進入し、その後回転します。凄く機動性が良くて感動しました。

フォーメーションチェンジする瞬間です。躍動感凄いですね。

トルネード上昇です。片方のエンジンにスモークを発生させる機構があるので、本当に螺旋を巻きながら上昇していく様が分かります。

隊形を維持しながら急降下する様子です。後ろのスモークと機体の組み合わせが素晴らしい。

鏡写し飛行です。普通に怖いじゃないですか・・・

交差する瞬間を撮影しようと思ったら、速すぎて捉えられなかったやつです。速すぎる・・・!

全機が背面状態で隊形飛行をしている様子です。車とかのバックでさえ神経使うのにさすがですね。

お馴染みのハートを射貫くやつです。2kmくらいありますよ。本当に射抜いてる感じになって凄いです。

左急旋回でこちらに向かってくる様子です。スモークとの相性抜群です。もう少しズームできれば。

隊形飛行もなかなか綺麗ですね。単独飛行では味わえない連帯感が感じ取れます。

それなりに遠くて、遠近感が大小でしか感じ取れないので凄くぶつかってしまいそうで肝が冷えますね。

凄い機動力でグルグル周って、開いた口が塞がらないです。

帰投する第306飛行隊の飛行機です。小松基地へと帰っていきました。

最後になりましたが、画像を整理していて凄い事に気づいたので貼っておきます。下のツイートに添付されている画像を見てください。

素晴らしいことに副操縦士がハンドサインを出しているじゃないですか・・・!格好良すぎです。

今回ブルーインパルスを生で初めて見て、素晴らしさに目覚めました。これは凄いですね。総火演とはまた違ったベクトルの凄さがありました。ぜひ来年も・・・

Apple製品がiTunesに認識されない時の対処法

標準

最近色々と映画をレンタルしたり、動画を入れてみたり、iPodを多種多様の用途で利用しているわけですが、どういうわけか有線接続でパソコンのiTunesに認識されなくなってしまいました。iTunesには、十数秒ほど認識された後にいきなり行方不明になってしまいます。しかし、以前はちゃんと認識されていたのに何なのか・・・解決法を見つけたのでメモとして残しておきます。

原因

根本的な原因はドライバーにありました。デバイスマネージャーを開いた時に、下の画像のようにApple製品を接続した時に「ポータブルデバイス」の下に自分の端末が存在した場合、これはドライバがインストールされていない証拠です。

ドライバ未インストール時

本来であれば「Apple Mobile Device USB Driver」というドライバを経由して認識されていないといけません。では、ここからはそのドライバのインストール方法を書いていきます。

ドライバーをインストール

ドライバをインストールするには、デバイスマネージャー上のご自身の端末名を右クリックして、「ドライバーソフトウェアの更新」を選択します。すると、参照先を尋ねられるので、「コンピューターを参照してドライバーソフトウェアを検索します」を選択します。

参照先選択

すると、ドライバーが入っているファイルを指定するようにダイアログが出てくるので、そこで以下のパスを指定します。

//64bit
C:\Program Files\Common Files\Apple\Mobile Device Support\Drivers

//32bit
C:\Program Files (x86)\Common Files\Apple\Mobile Device Support\Drivers

ここにはApple側が用意してくれたドライバーインストール用のファイルが格納されています。これらを選択した後に「次へ」を選択すると、ドライバーのインストールが開始されます。下の画像のように表示されましたら、インストールは成功です。

インストール成功

インストール後にもう一度デバイスマネージャーを確認してみると、端末が「ポータブルデバイス」から「ユニバーサル・シリアル・バス コントローラー」に分類し直されて、名前が「Apple Mobile Device USB Driver」になっているのを確認できると思います。これでうまくiTunesに認識されるようになったと思います。もし、これでも認識されない場合はPCやiTunesを再起動してみたり、端末を再接続したりしてみてください。

電動Glock18Cを修理する

標準

お久しぶりです。前回はGlock17についての記事でしたが、なんだかやる気が起きないのでGlock17の改修工事はしばらく延期します。

最近、長物の電動ガンが欲しくなりまして資金と知識収集をしているのですが、電動Glock18Cを瀕死の状態のまま放置していたことを思い出したので、試しに修理してみようと思います。

電動ハンドガンについて

今回の犠牲者となる電動Glock18Cですが、東京マルイの電動ガン ハンドガンタイプ シリーズの物になります、電動ハンドガンとか電ハンと呼ばれる奴ですね。

ハンドガンサイズにもかかわらず、長物並の精度や動作性が売りの電動ガンです。今現在はGlock18C、USP、M93R、ハイキャパ、M9A1などがあります。

小さくて高性能な電動ハンドガンですが、自分の買った物は初回のサバゲ以外では文鎮と化していました。それ以来修理する気も起きず放置し続けていたので、もうそろそろ修理しようかなと思い至ったわけです。

電動Glock18C電ハンのパッケージ

↑問題の電動Glock18Cです。もともとはシルバースライドモデルだったのですが、塗装して黒に塗り直しました。

現状とメカボについて

とりあえず現状を説明しておきます。Glockにバッテリーを入れて確認したところ、トリガーを引いてもモーターが動作しませんでした。しかし向きを変えたり、引き方を工夫すると一応発射することはできました、どうやらスイッチの接点が焼けてしまっているみたいです。

また、初速や弾道に関しては特に問題はなさそうです。しかし、発射レートやレスポンスに関しては最悪でした。

とりあえず分解してみて内部の様子を見てみます。

ガスブローバックのものとは違い、分解はかなり面倒くさいので方法については省略します。

とりあえずメカボックスを取り出しました

メカボックス

長物電動ガンに比べると圧倒的に小型の物になります。このサイズで安定した射撃性能を得るとはさすがのマルイクオリティーですね。

メカボの分解

では早速分解していきたいところですが、メカボックスの分解には特殊工具が必要だったり、グリス類の用意が出来てなかったので秋葉まで出かけて買ってきました。

メカボを分解

↑黄色のドライバーが専用工具です(T4のトルクスドライバー)

専用工具を使わないと開けられないという無駄にガードが硬いメカボさんを分解しました。分解方法については調べればすぐ出てくるので、そちらを参考にしてください。

メカボ内部には特に異常は見られませんでしたが、気になる点が幾つかありました。

シリンダーヘッド

シリンダーヘッドというパーツです。ピストンの打撃時の衝撃を吸収するためのゴムが少し劣化してしまっています。交換しなくても大丈夫ですが、やはり気になります。

電ハンのピストン

次はピストンヘッドです。マルイの電動ガンは、基本的に前方吸気(穴が無いヘッド)が多いのですが、電動ハンドガンは後方吸気型の物になっていました。もちろんノズルもシーリングノズルでした。

 

ついでに、前方吸気と後方吸気についてもう少し詳しく説明しておきます

前方吸気はノズルから吸気を行います。イメージ的には注射器に近い感じですかね、穴なしのピストンヘッドと溝付きのノズルを使用します。溝がないもの(シーリングノズル)を用いるとBB弾が吸い付いて吸気できなくなります。

後方吸気はピストンヘッドとシリンダーの隙間から吸気を行います。シリンダー内圧が高まると、Oリングが拡張して気密がされ、気圧が下がるとOリングが縮小して気密が失われます。かなり複雑なことを行う吸気方式です。イメージ的には自転車の空気入れみたいな感じですかね、ピストンヘッドは穴開きの物、ノズルはシーリングノズルを用いるのが一般的です。

前方吸気の利点と欠点

  • 吸気はノズルから行うので、給弾不良の解消につながる
  • シンプルな構造ゆえに安定した動作、初速が得られる
  • 後方吸気と比べると、吸気時の抵抗が強く、メカボに負荷がかかる
  • シーリングノズルは使えない

後方吸気の利点と欠点

  • 吸気時の抵抗が小さい
  • シーリングノズルが使えるので、空気の流れが安定する
  • 給弾不良の原因になることがある
  • 構造上、安定性の点ではあまりよろしくない

だいぶ雑ですが前方吸気と後方吸気についての説明でした。

個人的には前方吸気のほうがいいと考えています。後方吸気は理論上では素晴らしいですが、一秒あたり20回近く吸気と排気を繰り返すという過酷な状態でも安定した動作が出来るのか、ということを考えるとやはりシンプルな前方吸気のが良いのではと思うわけです。超高速でOリングを拡張、縮小を繰り返したらOリングが捩れてしまい、気密が失われそうな気がします。

 

どうでもいい持論を述べていないで、さっさと作業に戻りましょう。

とりあえずメカボ内部がグリスで悲惨な事になっているので洗浄します。金属パーツはパーツクリーナーで強引に汚れを落とし、樹脂パーツは中性洗剤で洗うときれいになります。

洗われたメカボ

↑中性洗剤で洗浄後、ドライヤーで乾かしました。これでグリスは綺麗に落ちると思います。

洗浄後はグリスアップと組み立てです。

組み立て完了

樹脂が触れる部分はシリコングリス、ギアには高粘度グリスを使うといいですね。今回はマルイの青グリスと赤グリスを使いました。wako’sのグリスとかでもいいと思います。

また、セクターギアとスパーギアが擦れていたのでシムを一枚追加しておきました。シム調整後は各ギアがスムーズに回転することや、ガタつきが無いかを確認しておきましょう。

ギアを組み込んだ後は、モーターの位置調整も行いました。ここで適正位置にしておかないと発射レートや耐久性に大きな影響が出ます。

接点焼け

メカボの組み立て後、スイッチを分解してみました。すると見事な接点焼けをおこした金具が出てきました。

接点焼け1 接点焼け2

随分と派手に焼けてしまっています。画像では接点グリスが付着しているので焼けている部分が見えにくいですが、グリスを拭き取ると見事に焼けていました。

他の金具も焼けていたので、表面をヤスリで磨いて接点を復活させておきました。

しかし、このままでは再び焼けるので対策を取ろうと思います。具体的にはFETと呼ばれる電子部品を組み込みます。

今回はここらで切り上げたいと思います、次回はエアガンというより電気工作になりそうです。