Elasticsearch 2.3でKuromojiとキャッキャウフフしてみる


最近Elasticsearchそのものをあまり触っていなかったので、勘が鈍るとアレなので久しぶりに。
 
Elasticsearch2.3.1(2016年4月8日現在の最新)をダウンロードします。
Screen Shot 2016-04-08 at 13.56.33
 
unzipして解凍したディレクトリに移動します。

$ unzip elasticsearch-2.3.1.zip 
Archive:  elasticsearch-2.3.1.zip
   creating: elasticsearch-2.3.1/
  inflating: elasticsearch-2.3.1/LICENSE.txt  
  inflating: elasticsearch-2.3.1/NOTICE.txt  
   creating: elasticsearch-2.3.1/modules/
〜略〜
$ cd elasticsearch-2.3.1

 
Japanese (kuromoji) Analysis Pluginをインストールします。
bin/pluginって叩くと、pluginsってディレクトリを作ってそこに入れてくれる感じ。
Elasticsearch 2.0からKuromojiは”Core Elasticsearch Plugins”ってヤツに入ってインストールがより簡単になりました。
その辺の話は↓こちら
https://www.elastic.co/guide/en/elasticsearch/plugins/current/installation.html

$ bin/plugin install analysis-kuromoji
-> Installing analysis-kuromoji...
Plugins directory [『ES_HOME』/plugins] does not exist. Creating...
Trying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/analysis-kuromoji/2.3.1/analysis-kuromoji-2.3.1.zip ...
Downloading .....................
.................................DONE
Verifying https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/analysis-kuromoji/2.3.1/analysis-kuromoji-2.3.1.zip checksums if available ...
Downloading .DONE
Installed analysis-kuromoji into 『ES_HOME』/plugins/analysis-kuromoji

 
イロイロとオペレーションをするのに、コンソールでガツガツ書くと辛いのでSenseをインストールします。
まず、Senseを動かすためにKibanaをダウンロートします。
Elasticsearch2.0からSenseはオープンソースになってKibanaのアプリとなっています。(以前はMarvel内のコンポーネントでした。)
Screen Shot 2016-04-08 at 14.30.23
解凍後にKibanaのディレクトリに移動します。

$ tar xvf kibana-4.5.0-darwin-x64.tar.gz 
x kibana-4.5.0-darwin-x64/
x kibana-4.5.0-darwin-x64/LICENSE.txt
x kibana-4.5.0-darwin-x64/README.txt
x kibana-4.5.0-darwin-x64/bin/
x kibana-4.5.0-darwin-x64/config/
〜略〜
$ cd kibana-4.5.0-darwin-x64

 
KibanaにSenseをインストールします。

$ bin/kibana plugin --install elastic/sense
Installing sense
Attempting to transfer from https://download.elastic.co/elastic/sense/sense-latest.tar.gz
Transferring 1352402 bytes....................
Transfer complete
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete

 
Kibanaの画面でSenseを選ぶと、
Settings_Kibana_Sense
 
馴染みのある画面が :)
Screen Shot 2016-04-08 at 14.39.14
 
ということで、環境は整ったので日本語でanalyzeしてみます。
Screen Shot 2016-04-08 at 15.24.06
 
次にシノニム展開。寿司と言ったらシースーとか。。

$ cat config/synonym.txt 
寿司,シースー

 
ってことで、Index作ります。Kuromojiで形態素解析して↑でシノニム展開する、と。
とりあえずインデックス作って、kuromoji_tokenizer&シノニムなヤツを。

PUT test 
{
    "index":{
        "analysis" : {
            "analyzer" : {
                "kuromoji" : {
                    "tokenizer" : "kuromoji_tokenizer",
                    "filter" : ["synonym"]
                }
            },
            "filter" : {
                "synonym" : {
                    "type" : "synonym",
                    "synonyms_path" : "synonym.txt"
                }
            }
        }
    }
}

_analyzeでexplainをtrueにしてやると、イイ感じに動いてそうです。
Screen Shot 2016-04-08 at 16.27.45
 
それっぽくsynonym展開も出来てそうです。

"name": "synonym",
"tokens": [
  {
    "token": "シースー",
    "start_offset": 0,
    "end_offset": 4,
    "type": "word",
    "position": 0
  },
  {
    "token": "寿司",
    "start_offset": 0,
    "end_offset": 4,
    "type": "SYNONYM",
    "position": 0
  },

 
シノニムだけでなく、形態素解析の辞書にも手を入れたくなってきました。
例えば、”きゃりーぱみゅぱみゅとシースーにいきたい”みたいな文章があってもちゃんと検索したいよね、と。
何もしないと”きゃりーぱみゅぱみゅ”は以下のようにトークナイズされます。

"tokenizer": {
  "name": "kuromoji_tokenizer",
  "tokens": [
    {
      "token": "きゃ",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "り",
      "start_offset": 2,
      "end_offset": 3,
      "type": "word",
      "position": 1
    },
    {
      "token": "ー",
      "start_offset": 3,
      "end_offset": 4,
      "type": "word",
      "position": 2
    },
    {
      "token": "ぱみゅぱみゅ",
      "start_offset": 4,
      "end_offset": 10,
      "type": "word",
      "position": 3
    }
  ]
},

形態素解析の辞書に↓を加えて、

$ cat config/userdict_ja.txt 
きゃりーぱみゅぱみゅ,きゃりーぱみゅぱみゅ,キャリーパミュパミュ,カスタム人名

DELETE testしてから↓を流します。変更内容としては以下2点です。
・tokenizerをkuromoji_user_dictという名前で外出しにして定義
・kuromoji_user_dictの設定の中でカスタム辞書(userdict_ja.txt)を定義

PUT test 
{
    "index":{
        "analysis" : {
            "analyzer" : {
                "kuromoji" : {
                    "tokenizer" : "kuromoji_user_dict",
                    "filter" : ["synonym"]
                }
            },
            "tokenizer" : {
                "kuromoji_user_dict" : {
                    "type" : "kuromoji_tokenizer",
                    "user_dictionary" : "userdict_ja.txt"                
                }
            },
            "filter" : {
                "synonym" : {
                    "type" : "synonym",
                    "synonyms_path" : "synonym.txt"
                }
            }
        }
    }
}

 
再度 _analyze 叩くと、

GET test/_analyze
{
    "text" : "きゃりーぱみゅぱみゅとシースー食べる",
    "analyzer" : "kuromoji",
    "explain" : true,
    "attributes" : ["keyword"] 
}

↓狙ったようにイケました。この要領で辞書をホゲホゲしていけば、芸能人とギロッポンでシースーも夢ではない!(検索上は、、、w)

"tokens": [
  {
    "token": "きゃりーぱみゅぱみゅ",
    "start_offset": 0,
    "end_offset": 10,
    "type": "word",
    "position": 0
  },
  {
    "token": "と",
    "start_offset": 10,
    "end_offset": 11,
    "type": "word",
    "position": 1
  },
  {
    "token": "シースー",
    "start_offset": 11,
    "end_offset": 15,
    "type": "word",
    "position": 2
  },
  {
    "token": "寿司",
    "start_offset": 11,
    "end_offset": 15,
    "type": "SYNONYM",
    "position": 2
  },
  {
    "token": "食べる",
    "start_offset": 15,
    "end_offset": 18,
    "type": "word",
    "position": 3
  }
]

 

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏
山田 浩之 末永 匡
技術評論社
売り上げランキング: 89,431

Audibleが凄くイイ


audible(https://www.audible.co.jp/)という本の音読サービスがあって、最近移動中はもっぱら本を聴いています。
 
以前、海外のPodcastをよく聴いていた頃に、audibleのCMが良く流れてて、その中でamazon companyだって事で、存在は知っていたものの、昨年の7月に日本でもサービスがローンチされました。
 
↓はその時のニュースをいくつか。
・「いつでもどこでも」本を「耳で楽しめる」、オーディオエンターテインメントサービス Audible(オーディブル)が日本へ本格上陸|Audible, Inc.のプレスリリース
http://prtimes.jp/main/html/rd/p/000000001.000014472.html

・ASCII.jp:オーディオブックが月額1500円で聴き放題、「Audible」が日本上陸
http://ascii.jp/elem/000/001/028/1028871/

・オーディオブックの定額聴き放題サービス「Audible」が日本上陸 月額1500円 – ITmedia eBook USER
http://ebook.itmedia.co.jp/ebook/articles/1507/14/news074.html
 
とにかくモノグサが自分は、本とか読んだ方が良いのは分かっているのですが、以前は読んだ本をブログに書いたりしてたのですが、最近はなかなかそういったこともせず(時間の問題というよりは気持ちの問題、、)、ダラダラFacebookとかみて過ごしていました…。
 
ところが、Audibleはじめてから、ここ数ヶ月で20冊以上本読んでいます(吉川英治の三国志といった長編も含む)。
移動中とか、ちょっとしたスキマ時間とか、スマホでサクっと再生出来るのも良くて、凄い勢いで色んな本を読んでいます。
また、普通に泣いたり笑ったり、本を読んでる時と同じように感情移入できています。
Screenshot_2016-04-05-19-08-47
 
その中でも最近アツかったのは↓の2冊。
 
1. 池波正太郎の男の作法
そもそもが語りおろしの本なので、その道のプロがそれっぽく読み上げてくれるとスーッと入ってくる。
イチイチ内容がツボで、自分もイイ歳だし、男として人間的にデッカクなりたいな的な部分が多いに刺激される一冊でした。

男の作法 (新潮文庫)
男の作法 (新潮文庫)
posted with amazlet at 16.04.05
池波 正太郎
新潮社
売り上げランキング: 1,754

 
2. アカマイ 知られざるインターネットの巨人
これはAkamaiのことだけでなくて、インターネットそのものがどういう風に成り立ってるのか?っていうのが良く分かる本だと思います。
ネットワークとかに苦手意識を持っているプログラマの人とか、将来はインターネットサービス企業で働きたいなんて思っている人には持って来いな本であるようにも思います。
# 私はAndroidを使っていますが、なぜかこの本の最後の最後で必ずアプリが落ちるのですが、、、w

アカマイ 知られざるインターネットの巨人<アカマイ> (角川EPUB選書)” style=”border: none;” /></a></div>
<div class=
KADOKAWA / メディアファクトリー (2014-08-11)
売り上げランキング: 8,042

 
上記以外にも、意外と自己啓発系の本って語りかけられるとスーッと入ってくるものだな、とか、
あんまり面白くないなって思うのは3倍速でズダーっと聴いてしまうとか、いろんな活用法がありそうです。
 
あと最近コレ系で気になってるのは、12.9インチのiPad Pro買って、dマガジンでテレビ見ながら雑誌読んだりしたいなと。。
 

iPad Pro Wi-Fiモデル 128GB ML0R2J/A ゴールド(iOS)
Apple Computer
売り上げランキング: 4,884

Papertrailを試してみる


以前、インティメートマージャーの松田さんが↓のブログで、

MackerelPapertrailRundeckを紹介してて、特にpapertrailが気になっていたのですが、
先日aerobatic(https://www.aerobatic.com/)というGitにPushするだけで簡単に静的サイトをホスティング出来るサービスの↓の”AWS Lambda Powered Continuous Deployment”というブログを読んでいたら、
https://www.aerobatic.com/blog/lambda-continuous-deployment

↓って記述を見かけて、なんか良さそうだな、と。

Lambda does send stdout to CloudWatch which is ok for isolated testing, but because the logs aren’t searchable, quickly becomes unwieldy when troubleshooting a Lambda function receiving any sort of load.

AWS Lambdaは標準出力をCloudWatchに送ります。それはisolatedなテストを行うにはOKだけど、ログはSearchableではなく、トラブルシューティングの時などLambdaファンクションがそれなりのロードを受けると、すぐにかさばって扱いにくくなってしまいます。

Our solution is to send log events from the Lambda function to a 3rd party logging service. We use Papertrail and highly recommend it. The winston-papertrail module provides a winston transport that handles forwarding log entries to Papertrail.

私たちのソリューションはイベントログをLambdaファンクションから3rdパーティーのロギングサービスに送る、というものです。私たちはPapertrailを使っていて高くオススメしています。winston-papertrailモジュールは(Node.jsのロギングライブラリである)winston転送を提供し、ログエントリのPapertrailへのフォワーディングを行います。

ということで、さっそく試してみたいと思います。

まずは、https://papertrailapp.com/ でアカウントを作ります。まずはFree Planにしてみました。
Screen Shot 2016-04-03 at 19.10.23
条件的には↓のような感じ。ちょっと試すには十分な量かな、と。
– Free
– 100 MB/month
– Additional 5 GB first month
– 48 hours search
– 7 days archive
– Unlimited systems
– Unlimited users

また、papertrailは↓のようにS3バケットにexport出来たり、
http://help.papertrailapp.com/kb/how-it-works/permanent-log-archives/

S3+Amazon EMRを使って解析を行ったりすることもできて、多機能です。
http://help.papertrailapp.com/kb/analytics/introduction-to-hadoop-and-hive/
コレといって自分でソフトウェアをインストールしたりせず↓大量のログデータに対してこんな事が出来るなんて良い時代になったものです。

SELECT AVERAGE(response_time) FROM request_events GROUP BY request_path
SELECT SUM(data_transferred) FROM api_logs GROUP BY account_id WHERE ds > '2011-01-01' AND ds < '2011-01-31'

Papertrailを試す作業に戻ります。
Lambdaファンクションを作ります。適当にHello Worldとかで。
Screen Shot 2016-04-03 at 20.17.07

ローカルで↓のようなコードを書いて、

  1 console.log('Loading function');
  2 
  3 var winston = require('winston');
  4 require('winston-papertrail').Papertrail;
  5 
  6 exports.handler = function(event, context) {
  7     var logger = new winston.Logger({
  8         transports: [
  9             new winston.transports.Papertrail({
 10                 level: 'info',
 11                 hostname: 'xxxx',
 12                 host: 'logs4.papertrailapp.com',
 13                 port: xxxx
 14             })
 15         ]
 16     });
 17     logger.info("hoge");
 18     logger.info("foo");
 19     logger.info("bar");
 20     logger.info("buzz");
 21     context.succeed("done");
 22 };

npmでwinstonとwinston-papertrailをカレントディレクトリにインストールして

$ npm install winston
winston@2.2.0 node_modules/winston
├── cycle@1.0.3
├── stack-trace@0.0.9
├── eyes@0.1.8
├── isstream@0.1.2
├── async@1.0.0
├── pkginfo@0.3.1
└── colors@1.0.3
$ npm install winston-papertrail
winston-papertrail@1.0.2 node_modules/winston-papertrail
└── glossy@0.1.7

↓このディレクトリ内のファイルをzipで固めてLambdaにアップロードして実行します。

$ ls -l
total 8
-rw-r--r--  1 eiji  1896053708  502  4  3 19:44 hello.js
drwxr-xr-x  3 eiji  1896053708  102  4  3 19:46 node_modules
$ zip -r hello.zip ./*
  adding: hello.js (deflated 51%)
  adding: node_modules/ (stored 0%)
  adding: node_modules/winston/ (stored 0%)
  adding: node_modules/winston/CHANGELOG.md (deflated 67%)
  adding: node_modules/winston/lib/ (stored 0%)
 〜略〜

↓こんな感じ。
Screen Shot 2016-04-03 at 20.19.02

試しにもう一つログの突っ込み先を作ってみたり、してみたりして。
Screen_Shot_2016-04-03_at_20_10_07___Flickr_-_Photo_Sharing_

で、Lambdaファンクションをバンバン叩くと↓のように。
そりゃまぁ、ホントのホントにリアルタイムってわけにはいかないですが便利です。
Screen Shot 2016-04-03 at 20.20.53

こういう検索機能とか便利ですね〜(試しに”hoge”で…)
Screen Shot 2016-04-03 at 20.22.32

Apache LuceneとLukeをローカルで動かしてみる


3月23日(水)のAWS Black Belt Tech WebinarでAWSが提供する検索サービスについて話をしますが、
Amazon CloudSearchで使っているSolrでも、Amazon Elasticsearch Serviceで使っているElasticsearchでも、検索エンジンのコアなところはLuceneが使われていて、
いずれにしてもLuceneの事をしっておいた方が良いと思うので(例えばElasticsearch x.xの目玉はLucene x.xの取り込みです、みたいのあるし)、チャチャっとやってみます。
 
 
■ Luceneのダウンロード
 
まずはLuceneのホームページから最新のバイナリを落としてきます。現在のバージョンは5.5.0です。
Screen Shot 2016-03-19 at 11.22.53
 
解凍すると↓こんな感じ

$ ls -l
total 1264
-rw-r--r--@  1 eshinoha  1896053708  589819  2 17 03:19 CHANGES.txt
-rw-r--r--@  1 eshinoha  1896053708    1781  1 25 03:09 JRE_VERSION_MIGRATION.txt
-rw-r--r--@  1 eshinoha  1896053708   24570  1 25 03:09 LICENSE.txt
-rw-r--r--@  1 eshinoha  1896053708    6166  2  7 21:04 MIGRATE.txt
-rw-r--r--@  1 eshinoha  1896053708    9488  1 25 03:09 NOTICE.txt
-rw-r--r--@  1 eshinoha  1896053708     724  1 25 03:09 README.txt
-rw-r--r--@  1 eshinoha  1896053708     957  2  7 21:04 SYSTEM_REQUIREMENTS.txt
drwxr-xr-x@ 11 eshinoha  1896053708     374  3 19 14:29 analysis
drwxr-xr-x@  3 eshinoha  1896053708     102  3 19 14:29 backward-codecs
drwxr-xr-x@  5 eshinoha  1896053708     170  3 19 14:29 benchmark
drwxr-xr-x@  3 eshinoha  1896053708     102  3 19 14:29 classification
drwxr-xr-x@  3 eshinoha  1896053708     102  3 19 14:29 codecs
drwxr-xr-x@  3 eshinoha  1896053708     102  3 19 14:29 core
〜略〜
drwxr-xr-x@  4 eshinoha  1896053708     136  3 19 14:29 sandbox
drwxr-xr-x@  4 eshinoha  1896053708     136  3 19 14:29 spatial
drwxr-xr-x@  3 eshinoha  1896053708     102  3 19 14:29 spatial3d
drwxr-xr-x@  3 eshinoha  1896053708     102  3 19 14:29 suggest
drwxr-xr-x@  4 eshinoha  1896053708     136  3 19 14:29 test-framework

 
とりあえずREADME.txt読んでみます。非常に小ざっぱりしております。笑

  1 # Apache Lucene README file
  2 
  3 ## Introduction
  4 
  5 Lucene is a Java full-text search engine.  Lucene is not a complete
  6 application, but rather a code library and API that can easily be used
  7 to add search capabilities to applications.
LuceneはJavaで書かれたfull-text searach engineです。
Luceneは完全なアプリケーションではありませんが、コアライブラリとAPIは簡単にアプリケーションに
検索機能のケーパビリティをもたらします
  8 
  9  * The Lucene web site is at: http://lucene.apache.org/
 10  * Please join the Lucene-User mailing list by sending a message to:
 11    java-user-subscribe@lucene.apache.org
 12 
 13 ## Files in a binary distribution
 14 
 15 Files are organized by module, for example in core/:
ファイルはモジュール毎に管理されていて、例えば core/ の中は、
 16 
 17 * `core/lucene-core-XX.jar`:
 18   The compiled core Lucene library.
のようにcore Luceneライブラリが集められています。
 19 
 20 To review the documentation, read the main documentation page, located at:
 21 `docs/index.html`
ドキュメントを読むには docs/index.html を見てください。
 22 
 23 To build Lucene or its documentation for a source distribution, see BUILD.txt
ソースコードの配布物でLuceneをビルドしたりドキュメントを見る場合はBUILD.txtを見てください。

 
README.txtに書いてあったようにdocsにいってindex.htmlを見てみると、Getting Startedが出てきたので、コレに沿ってやってみようと思います。
Screen Shot 2016-03-19 at 15.36.54
 
 
■ Getting Started
 
・Setting your CLASSPATH
まずはクラスパスを通すところから。4つのjarファイルが必要とのこと。
1. Lucene JAR(core/lucene-core-{version}.jar)
2. queryparser JAR(queryparser/lucene-queryparser-{version}.jar)
3. common analysis JAR(analysis/common/lucene-analyzers-common-{version}.jar)
4. Lucene demo JAR(demo/lucene-demo-{version}.jar)
 
ということで以下。カレントディレクトリはLuceneを解凍したところです。

export CLASSPATH=core/lucene-core-5.5.0.jar:queryparser/lucene-queryparser-5.5.0.jar:analysis/common/lucene-analyzers-common-5.5.0.jar:demo/lucene-demo-5.5.0.jar

 
・Indexing Files
インデックスファイルを作って見ましょうということで。
 
ドキュメントでは/srcの中をインデクシングって書いてあるんだけど、ソース付きの落としてきたわけじゃないので、docsにしてみました。

$ java org.apache.lucene.demo.IndexFiles -docs ./docs/
Indexing to directory 'index'...
adding ./docs/analyzers-common/allclasses-frame.html
adding ./docs/analyzers-common/allclasses-noframe.html
adding ./docs/analyzers-common/constant-values.html
〜略〜
adding ./docs/test-framework/resources/tab.gif
adding ./docs/test-framework/resources/titlebar.gif
adding ./docs/test-framework/resources/titlebar_end.gif
adding ./docs/test-framework/serialized-form.html
adding ./docs/test-framework/stylesheet.css
10895 total milliseconds

gifとかも対象になっちゃったけど沢山のHTMLファイルをインデクシング出来たみたいです。
 
ってことで、検索してみましょう。試しに”kuromoji”で。

$ java org.apache.lucene.demo.SearchFiles
Enter query: 
kuromoji
Searching for: kuromoji
27 total matching documents
1. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/tokenattributes/package-summary.html
2. ./docs/analyzers-kuromoji/overview-summary.html
3. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/util/package-summary.html
4. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/tokenattributes/package-use.html
5. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/dict/package-summary.html
6. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/tokenattributes/class-use/InflectionAttribute.html
7. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/tokenattributes/class-use/ReadingAttribute.html
8. ./docs/index.html
9. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/dict/class-use/BinaryDictionary.html
10. ./docs/analyzers-kuromoji/org/apache/lucene/analysis/ja/dict/class-use/CharacterDefinition.html
Press (n)ext page, (q)uit or enter number to jump to a page.

nとEnterでページネーションして次いったりとかできました。
 
ソースは↓にあってmain文からサクっと追いかけられそうだったけど、先に進みます。
docs/demo/src-html/org/apache/lucene/demo/IndexFiles.html
docs/demo/src-html/org/apache/lucene/demo/SearchFiles.html
 
 
■ Luke(Lucene用のインデックスブラウザ)
 
上記のままでは日本語検索もままなりませんし、何より毎回黒い画面もなんだかだよね、と。
ということで、LukeっていうGUIがあるのですが、ググってくと何やらレガシーで
最近のLuceneを既にサポートしていないっぽい予感。
 
↓みたらGoogle Codeに行けって書かれてて、
http://www.getopt.org/luke/
Google Codeの↓みたらLuceneバージョン4のアルファとかまでしか対応してないっぽい
https://code.google.com/archive/p/luke/
で、ググってたらGithub上で↓に辿り着いて、Commitersみたら内田さんいるじゃん、と。
https://github.com/DmitryKey/luke
ApacheCon2015でやった↓このプロダクトに関するLTもあるので、5分くらいで親しみを持ってみます、と。(プルリク from the guy in San FranciscoによってElasticsearchのインデックスにも使えるようになったそうです)

 
ってことで、ギッハブからzipで落としてきてmvn packageしてみます(luke.sh蹴ったらtargetの中にxxが無い的な事いわれたのと、mavenizedって書いてあったから、、)
相当イロイロやってるみたいだったけど、無事ビルドは成功しました。

$ mvn package
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for luke:luke:jar:5.5.0
[WARNING] 'version' contains an expression but should be a constant. @ luke:luke:${lucene.version}, /Users/eshinoha/Downloads/luke-master/pom.xml, line 9, column 14
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building luke 5.5.0
[INFO] ------------------------------------------------------------------------
〜略〜
INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:35 min
[INFO] Finished at: 2016-03-19T18:53:05+09:00
[INFO] Final Memory: 39M/239M
[INFO] ------------------------------------------------------------------------

 
で、luke.sh叩いたら、JavaのGUIが立ち上がってきました〜
# なんだかホンワカするUIですこと。
Screen Shot 2016-03-19 at 18.55.36
 
で、ココから自分でインデクシングのプログラムを書こうと思ったけど、
↓この辺にズバリ書かれているので割愛させていただいて、
Apache Lucene 使い方メモ – Qiita http://qiita.com/opengl-8080/items/8762b7f328964bd1cd92
 
Analyzer Toolとか使えばJapanese Analyzerでどうトークナイズされるかーとかは見れたりします。
Screen Shot 2016-03-20 at 10.28.09
 
本当はちゃんとJapanese Analyzerでトークナイズして(辞書カスタムとかも含めて、、)、
LukeでExplainを見てチューニングしていく、みたいのが出来るとベストですかね。
Screen Shot 2016-03-20 at 10.31.13
 

Apache Lucene 入門 ~Java・オープンソース・全文検索システムの構築
関口 宏司
技術評論社
売り上げランキング: 273,868

Fruitvale StationとCreedと宇多丸師匠の映画評論について


先日、マネーショートを観てきました。

 
この話は、以前、藤沢数希がこの本読んどけ、みたいな感じで紹介してた 世紀の空売り の映画版。

世紀の空売り
世紀の空売り
posted with amazlet at 16.03.13
マイケル・ルイス
文藝春秋
売り上げランキング: 14,912

 
ネタバレになっちゃうとアレなので内容は語りませんが、映画の中でやけにヘヴィーメタルが流れるんですよね。
Metallica の Master of Puppets なんてかかった日には無意識に頭をバンギンしてしまう世代ですが、

 
メタリカと言えば、サンフランシスコを拠点にしてたバンドで、自分も以前サンフランシスコに住んでたので、そういった思い入れもあるのですが、、
サンフランシスコとかベイエリアって観点で、ウォォ、、って思ったのが、”Fruitvale Station(邦題は フルートベール駅で )”っていう映画で。
 
Fruitvale Stationは実話を元にした映画だから当たり前なのですが、ホントにベイエリアに居そうなヤツが、車乗ってる時に聴いてる音楽とか、Tシャツとかフーディーのサイズ感っていうか着こなしっていうか。

この映画どっかに行った時に飛行機の中で観たのですが、かなり印象に残ってて。
多感な時期にHipHopなカルチャーにどっぷり浸かってた自分的には親しみがあるというか。
 
で、この映画の監督のRyan Cooglerは、なんとあのロッキーシリーズの最新版、Creedの監督でもあるわけです。


 
なんというか、納得感。クリードの妙に今風というか、シャレオツでイケてる感じっていうのは、この監督の世界観なんだな、と。練習メニューをCloudに〜みたいのってそういう職業な自分的にはニヤっとしてしまったり、、なわけですが。。

 
で、何がスゲーかって、(話がコロコロ飛んでスミマセンが、、)ライムスターの宇多丸師匠が毎週TBSラジオでやってる番組でクリードを紹介してて、うぉぃ、そういう事なのかよ!っていう。
 
残念ながら公式ページでは配信終了しちゃってるっぽいですが、、
http://www.tbsradio.jp/utamaru/2016/01/19_2.html
なんとYoutubeにうpされてるじゃねーか、と。

 
ダラダラ書いてしまいましたが、要点は以下3点です。
1. 映画『フルートベール駅で』はHipHopとか好きな人にはオススメ
2. 映画『クリード チャンプを継ぐ男』マジ熱い
3. 上記2つを観た上で宇多丸師匠の映画評論もあわせて是非 :)
 

The R~The Best of RHYMESTER 2009-2014~(初回生産限定盤)(Blu-ray Disc付)
ライムスター
KRE (2014-09-24)
売り上げランキング: 59,671

“Product Hunt Maker Stories – G-Eazy” が面白かった :)


↓Product HuntのPodcastでG-EazyっていうラッパーがWebなテクノロジーと音楽について語ってるヤツ。
https://www.producthunt.com/podcasts/product-hunt-maker-stories-g-eazy
 
自分がガキの頃はword of mouthって言ったら、ストリートで流通してたカセットテープとかって感じだったけど、G-Eazyは
2004年とかから自宅スタジオで曲作って録音して〜ってのをはじめて、SoundClick(SoundCloudじゃない)とかMySpaceとかにアップロードして、ソーシャルネットワークを通じて広めていったっていう何とも今風な。
 
彼が言ってることはとても的を得ているような気がして、Tシャツとかライブのチケットとかだけでなく、Super Duper Die Hardなファンには、一緒に写真撮ったり、限定ジャケット売ったり、その人達だけ一足早く新曲を手に入れられたり。そういう時代よね、と
 
段々ネットラジオのPandora(http://www.pandora.com/ 日本からはアクセスできないけど、、)と絡めたユーザー行動ターゲティングの話になったり(http://advertising.pandora.com/ とかあるの知らなかったし)、カジュアルな雰囲気の中にも、とても示唆に富んだディスカッションのような気がしました。
 
コレは去年のLaunch FestivalってStartupなイベントでのインタビューってことで、日本でそのビジネス分野で仕事してる自分にとって、なんか海の向こうってワクワクするよねぇ、なんて思った次第でございます。
 

 

When It's Dark Out
When It’s Dark Out
posted with amazlet at 16.02.25
G-Eazy
RCA (2015-12-04)
売り上げランキング: 55,158

スカパー!に加入しました(セレクト5+欧州サッカーセット)


趣味なんですかー?って聞かれたら『サッカーと音楽とかですかねー』的な感じなのですが、最近趣味レベルですらなくなってきてる気がしてて、なんだかなって思ってたのでスカパー!の契約をしてみました。
 
加入したのはセレクト5と、欧州サッカーセット
セレクト5は↓を選択して(音楽+英語耳も鍛えたかったのでニュース+何となく歴史w)、家でボケっとしたり、本読んだり、仕事したりしてる時にタレ流しにしたいな、と。
・Ch.322 スペースシャワーTV
・Ch.323 MTV
・Ch.342 ヒストリーチャンネル
・Ch.353 BBCワールドニュース
・Ch.354 CNN
 
で、欧州サッカーはオンデマンドでタブレットとかでみたいな、と。
 
スカパー!に関しては約1年前に2週間のお試しで作ったアカウント(B-CASカードが紐付いてる)があったのですが、
なぜかその時のB-CASカードで登録しようとするとエラーとなって進めませんでした。。
 
画面上に電話してください的なエラーメッセージが出て、ボタンを押下して出てきた電話番号に電話したら、
先日オンデマンド用に同じメールアドレスで登録したアカウントが裏側で悪さをした形になって、、とのこと。
(この辺はシステム屋としては何とも言えずアレなところですね…)
 
が、コレに対応してくれたカスタマーセンターのシバタさんが素晴らしく、この電話で登録できて良かったな、と。
聴きやすい発声で、ほどよいペースで、1つ1つの説明がスンナリと頭に入ってくるというか。
それでいて、たまに見せる親しみやすさ(例えば、欧州サッカーのオンデマンドのご案内においては、『これからチャンピオンズリーグ盛り上がってきますものね〜』的な)も含めて、パーフェクトでした。
そして、Web経由で申し込んだ1000円割引もご対応いただけました。にしても、自分もお客さまにサービスを説明をするのを生業としている身として大変勉強になった気がします。

  
これから毎月6381円を支払っていく形になるのですが、元を取れるようにガッツリ活用していきたいと思います。

トロントでやり残したなーって思うこと


2012年に半年近くカナダのトロントに住んでいたのですが、イロイロ楽しい記憶もあるのですが、
コレばっかりはなんだかなぁと思っていることがあります。
 
というのも、最近どこいってもWeekndかかってますよね、と。
Drakeと一緒にやったCrew Loveとか長い間チャート入ってて、Weekndのブリブリっていうかモロにアレな感じに凄いやられて好きな曲だったりするのですが、
どんな内容か知りたい場合は↓のブログがとてもナイスです。
http://ameblo.jp/clubcrunk/entry-11164715357.html
 
OVOXOなんて言って活躍してる彼らですが、カナダのトロント出身なんですよね、、
Youtubeとか観てると、よくブラブラしてたEaton Centreの前でアカペラやってるのとか出てきたり。

 
彼みたいな今風のR&Bを探求するのに、ひょっとしたらトロントってナイスなところだったんじゃないかな?って今頃思ったりして。
というのも、こないだ観た映画のCREEDにもの凄く感動したわけですが、
自分的には最近のアメリカの若者ってこんな感じなのかなー的な視点もあったりするわけです。
で、主人公が出会うヒロインのライブとかシビれるシャレオツR&B。
おぉ、こういうスタイルきてるんだなー、と。
思い起こせばトロントに居た頃は週末とか暇してたし、夜のクラブ活動とか全然出来たのになぁ、と。
 
ココ何年も、大好きだった音楽から凄い遠い生活してて、なんだかなぁなんて思ってるところに、ちょっとまたDIGしてみたいななんていう。
↓とかデカい音で聴いたりするとナイスです。歌詞の内容はホントにクソったれな予感ですが、それもまた一興。笑

 

Beauty Behind the Madness
Beauty Behind the Madness
posted with amazlet at 16.02.14
Weeknd
Republic (2015-08-28)
売り上げランキング: 171

それなりの時系列ログデータが欲しい時


デモとかサンプル用にそれなりのデータ量のログデータが欲しい場合があります。
ググっていると、NASA-HTTP(http://ita.ee.lbl.gov/html/contrib/NASA-HTTP.html)というページが見つかって、なかなか良さそうな印象です。

こちら、下の方に訳を載せてみたので、ご参考までです。

でもって↓のように置換して個人的な用途に活用させていただきますmm

LC_ALL=C
※ コレやらないとMacでsedしようとしたら『 sed: RE error: illegal byte sequence 』って怒られる…。

grep -l 'Aug/1995' NASA_access_log_Aug95 | xargs sed -e 's!Aug/1995!Dec/2015!g' -i.bk
※ 別に置換しなくても使えるのですが、Kibanaで先月1ヶ月分のログデータを〜とかって時の期間指定的な用途で…

 

サーバ/インフラエンジニア養成読本 ログ収集~可視化編 [現場主導のデータ分析環境を構築!] (Software Design plus)
鈴木 健太 吉田 健太郎 大谷 純 道井 俊介
技術評論社
売り上げランキング: 84,797

 
以下、NASA-HTTP(http://ita.ee.lbl.gov/html/contrib/NASA-HTTP.html) のページの翻訳です。

Description
フロリダにあるNASAケネディー宇宙センターのWWWサーバーへのHTTPリクエストログ2ヶ月分。2つのログファイル。

Format
ログはアスキーなファイルで、1リクエスト1行で、以下のカラムになっています:
1. リクエストを行ったホスト。可能であればホスト名。ホスト名がルックアップできなかった場合はInternet address
2. timestampのフォーマットは “DAY MON DD HH:MM:SS YYYY” です。DAYは day of the week、MONは name of the month、DDは day of
 ※ 実際は [28/Jul/1995:13:20:42 -0400] こうなっていて、 DD/MON/YYYY:HH:MM:SS だと思われます…mm
3. リクエストの内容はクオートの中に。こんな感じ→”GET /images/ksclogo-medium.gif HTTP/1.0″
4. HTTPのレスポンスコード
5. レスポンスしたバイト数

Measurement
最初のログは “from 00:00:00 July 1, 1995 through 23:59:59 July 31, 1995, a total of 31 days”
次のログは “from 00:00:00 August 1, 1995 through 23:59:59 Agust 31, 1995, a total of 7 days”
で、収集されたもの(ホントに8月1日〜31日までで7日間なのかな、、、?)です。
この2週間(In this two week periodって書いてあるけど、多分2ヶ月間だと思います…)で発生したリクエストは 3,461,612(約350万) で、タイムスタンプは1秒単位です。注意点としては、”01/Aug/1995:14:52:01″ から “03/Aug/1995:04:36:13” までは記録されたアクセスがありません。これはハリケーンErinの影響でWebサーバーがシャットダウンされていたからです。

Privacy
このログはアクセス元とHTTPリクエストを全て保存したものです。一般的なトラフィックパターンを超えるような分析を行うことはお控えください。

Acknowledgements
このログはケネディ宇宙センターのJim Dumoulinによって収集され、サスカチュワン大学のMartin ArlittとCarely Williamsonによって寄せられたものです。

Publications
こちらはこれからM. Arlitt と C. Williamsonによって解析された6つのデータセットの中の1つで、彼らが発表する論文である“Web Server Workload Characterization: The Search for Invariants”の中で使われたものです。こちらは”1996 ACM SIGMETRICS Conference on the Measurement and Modeling of Computer Systems, Philadelphia, PA, May 23-26, 1996″で発表されます。
この論文の拡張バージョンはオンラインでも参照可能です。DISCUS home pageやグループの出版物もご覧ください。

Related
“Web Server Workload Characterization: The Search for Invariants”の中に登場する6つのうちの4つのデータセットにはパーミッションが与えられています。その4つのデータセットとは、Calgary-HTTP , ClarkNet-HTTP , NASA-HTTP , and Saskatchewan-HTTP です。

Restrictions
ログデータは(may be)自由に再配布できます。

Distribution

Jul 01 to Jul 31 の ASCIIフォーマットのデータはgzipで圧縮して 20.7 MB で、圧縮しないと 205.2 MB です。そして Aug 04 to Aug 31 のASCIIフォーマットのデータはgzip圧縮で 21.8 MB で、圧縮しないと 167.8 MB です。

字幕映画と私


日頃、スタートアップ企業の技術支援を生業としている私にとって、マイ インターンの字幕はちょっと物足りなかったというか、普段そのまま使ってるカタカナ英語とか、そういうのを頑張って普通の日本の人にも理解してもらおう感が出ちゃってるというか。

 
もちろん字幕って、限られたスペースの中で、ブワーっと話してる口語を当て込まないといけないのだから大変なのは分かるんだけど、自分からすると、”せっかく(日本より進んでる)アメリカのStartupカルチャーを日本にも浸透させるチャンスなのに!”といった、オマエ何様的な感情が湧いてきたりするから面白いものです。
 
そして、今日ついに”Straight Outta Compton“を観てきたのです。

 
字幕の監訳はなんと丸屋九兵衛さん(@qb_maruya)。この人のおかげで、私みたいに青春時代の貴重な時間を勉強もせずにギャングスタ・ラップを聴きまくってた人もいたでしょうし、中には没頭し過ぎて、人生こじらせた人もいたのではないかと思います。それほどまでに影響力が強いというか、79年生まれの自分世代では、少なくとも高校生の頃までは、入ってくる情報って雑誌か日本語訳付きのCDのライナーノーツくらいしかなかったし。たまに誰かが海外旅行にいって、その時にSourceマガジン買ってきたりして、それを皆でペラペラめくったりしたけれども。
(映画の中でもあるけど、クイーンズとかなら分かるけど、コンプトンって、、的な雰囲気は日本でもちょっとあったような気がしてます。西モノの方が断然好き!みたいな人は自分が10代の頃はそんな多くなかったように記憶してます)
 
にも関わらずですよ、なんというかちょっとした字幕に対する違和感。自分が知ってるterminology的なモノが、そのまま日本語に出てこないのってなんかちょっとな、と。もちろん、黒人がスラング満載でまくし立ててる言葉は、前提知識が無ければナニソレ?って感じだろうし、そもそも全部いちいち訳してたら字幕のスペースに入りきらないだろうし。
(あと、多分、昔にそう訳しちゃったのカモだけど、Wild N Wet Pool Partyが、濡れ濡れプールパーティーとかっていうのもオモシロかったな…。利害関係とかなければ、”ドキッ xxだらけの〜”とか入れて欲しいすねw)
 
んま、そりゃ、例えば自分が『AWSのElastiCacheのRedisって、そのままだとRDBファイルのバックアップが取れないから、SLAVEOFでEC2上に自分で立てたRedisにレプリケーションしてやって、そっからダンプ取って、他の環境のRedisにimport出来るよ』みたいのを、ITエンジニアじゃない人にどう伝えるのよ?って言われてもアレですし。。
 
映画そのものは素晴らしくて(ちょっと死人に口無しかなって思うようなところもあるけど…)、ソーシャルで shinodogg とか名乗っちゃってるくらい、昔から西海岸の音楽とかノリとかが大好きな自分にとっては、この映画が観れて感無量なわけです。
↓もちろん映画館でプログラムだって買っちゃったわよ、と。

 
同じようなヤツだと、数年前にソーシャル・ネットワーク(Facebookの初期の頃の話で、IT技術的な用語が沢山出てくる)をはじめて観た時はあんまり、コレといって違和感とか感じなかったので、自分の英語力って上がってるのかしら?なんてちょっと嬉しくなったりしつつ、未だに字幕無しで映画観てもチンプンカンプンなことが多いし、まだまだ英語の勉強は続いていくのだな、と。。

 
にしても、Colorsとか、Boyz n the Hoodとか、Menace II Societyとか、イロイロ観てきたけど、あの頃にもっと英語しとけば今頃、、、なんて思ってる人、日本に3万人くらいいるのでしょうかね…^^;
 

Compton
Compton
posted with amazlet at 15.12.20
Dr. Dre
Interscope Records (2015-08-21)
売り上げランキング: 1,628