Calendarで出ていた、こちらのエントリを見て、面白そうだなぁと思いまして。Topicsこれを見てパッと思ったのは、タグクラウドにする単語を「名詞」にカテゴライズされるもので絞り込めたらなぁと。KuromojiのPartOfSpeechFilterは「除外する品詞を指定する」ものになるので、これをやろうと思うとちょっと大変です。ここはちょっと方法を変えて、Elasticsearchに取り込む前に形態素解析することにしました。※完全に遊んでいるネタなので、ご了承くださいませ今回のテーマは、以下でやります。Kuromoji+NEologd辞書で遊んでいたものを、SparkやCodeLibsのKuromojiを使うように置き換えたものです。準備まずは、sbtの定義から。Clientが入っていますが、これは再取り込み時にインデックスを削除するためだけに使っています。コードの実行は、テストコードとして行うのでScalaTestを使用しています(テストそのものを書くわけではありませんが)。ElasticsearchおよびKibanaは起動しているものとします。Twitte4Jを使いますので、各種Keyをご用意ください。src/test/resources/twitter4j.propertiesoauth.consumerKey=<your-consumer-key>oauth.consumerSecret=<your-consumer-secret>oauth.accessToken=<your-access-token>oauth.accessTokenSecret=<your-access-token-secret>ツイートの取り込みそれでは、まずはツイートの取り込み側から作成します。できあがったコードは、こんな感じ。}Elasticsearchに取り込みます。s"${indexName}/${indexType}")この時は、とりあえず取得できるツイートはすべて取得してインデックスに放り込んでいます。インデックスとタイプの名前は、「tweet/[screen-name]」にしました。s"${indexName}/${indexType}")このコードを実行すると、指定のscreen-nameのユーザーのタイムラインがElasticsearchに取り込まれます。形態素解析しつつ、別のインデックスを作成では、形態素解析する側。}}Sparkを使っている関係で、Analyzerはシリアライズしなくて済むようにobjectにまとめました。Sparkで最初に取り込んだインデックスからツイートを取り出し、形態素解析して新しいインデックスに取り込みます。s"${destIndexName}/${indexType}")URLを削除していたり、長さ5文字以上のツイートを対象にしているところは元エントリと同じですが、RTは対象外にしたり、PartOfSpeechAttributeを使って「名詞」を含む品詞にのみ絞り込んでいます。取り込み先のインデックスは、今回は開始時に削除するようにしました。Clientを使っています...。}取り込み先のインデックスの名前は、「tokenized_tweet」にしました。タイプの名前は同じです。s"${screenName}"では、こちらを実行して新しいインデックスに形態素解析および絞り込みを行ったツイートを取り込みます。タグクラウドを作成するそれでは、Kibanaでタグクラウドを見てみましょう。形態素解析したデータが入っている方のインデックスを、Kibanaで選択します。cloud」を選択して、形態素解析したフィールド「tokens」でタグクラウドを作成します。なんか、それっぽいのができました。※自分のツイートで作っているので、内容については突っ込まないでください...ところで、英単語が全部小文字になっているのと、「プレッシャー」のような単語の「ー」がないのはLowerCaseFilterやJapaneseKatakanaStemFilterが適用されているからですね。このあたりが気になるなら、Analyzerをカスタマイズしてもよいでしょう。先ほどはJapaneseAnalyzerをそのまま使いましたが、次はJapaneseAnalyzerをバラしてJapaneseKatakanaStemFilterとLowerCaseFilterを外してみます。}その他、原型に戻されるのが嫌、などあれば、JapaneseTokenizerだけを使ったAnalyzerを使用するのもよいかもしれません。この定義で、再度形態素解析して取り込みなおすと、結果はこのようになります。表記揺れがあった場合等は重複しちゃうでしょうけど、ちょっと自然っぽくなりましたね。まとめ元のエントリと違って、Elasticsearchの外(Spark側)でいろいろやってしまう感じにしてしまいましたが、まあSparkで遊びたかったということで。それにしても、Kibana便利ですね。Kuromojiを使うようにはしています)。こちらは取り込みと形態素解析を一緒にやってしまいますし、インデックスの削除もやりませんが簡単に使うならこちら。使い方は、screen-nameを起動引数に指定。cero_t取り込まれ先のインデックス名は、「tweet」です。Framew...2013-10-01LuceneのHighlighterを使ってみるLuceneに搭載されている、Highlighterを使ってみます。5はてなブログをはじめよう!Kazuhiraさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。