NEologd Casual Talksに行ってきた

NEologd Casual Talksに行ってきました。

connpass.com

@eichiroi 先生と一緒に書いたメモをブログにまとめました

NEologdをどう使うと便利なのか ークエリ拡張 or 検索ソート順における活用(@Quasi_quant2010)

www.slideshare.net

概要

計算を補正する言語支援としての利用例

  • 使用用途
  • クエリサジェストにおける前処理エラーを補正
    • アシックスサージールをアシックスターサージルに変換したい
  • 対処法
    • NElogd辞書にあればを使う
      • Neologdがあることでサージール→ターサージールに補完できた
    • suggst結果の複合語を補正
      • 切れすぎてしまった複合名詞をくっつける
      • 「サッカー シューズ」を「サッカーシューズ」に
  • 背景
    • 複合名詞を細かく分割する方針がある
    • 複合名詞の補正Sourceとして使う
  • NELOGDで使って実現したいこと
    • userの検索意図を保ちつつ検索漏れを防ぐ
    • Indexingのときにクエリ拡張する
  • 単純に分かち書きしたものだけでなく、くっつけた長い単語(複合名詞とか)もインデックスに追加する
  • 検索意図を保存するための一つの手段
  • 固有表現を加味した分かち書きをする
    • クエリ拡張とN-bestも併用

前処理用Pythonモジュールneologdnの紹介(@_yukinoi)

  • テキストの前処理とは
    • 見た目が一緒でもコンピュータは違う文字列と判別する
    • テキストの処理がしやすいようにテキストを一定のルールに基づいて整えること
    • 半角カナを全角に
    • 「うぇーーーーい」と「うぇーい」
  • 前処理やってないと
  • nelogdn

質問

  • 今後どういう単語をとれるようにしたいか?
    • 同じ文字の繰り返しで2文字単位のもの、例えば「オラオラオラオラ」を正規化

ファッションを扱うサービスのために、Elasticsearchのユーザー辞書とシノニム辞書を作った話(@sinamon129)

speakerdeck.com

  • Fablicのサーバーサイドエンジニア
  • フリルの検索改善のためにESとuser辞書とシノニム辞書を使った
    • 検索の50%ぐらいがキーワード単体の検索(+絞り込み)
  • 検索パターン
    • userが自由に書く
      • タイトル・商品説明
      • 形態・形状・セールスポイント
      • 略称、表記ゆれあり
    • マスターデータ系
      • カテゴリ
      • ブランド
  • 検索キーワード
    • 表記間違いや省略した単語が結構ある
  • インデックス方式
    • unigaram
      • 再現率高いが適合率が低い
      • 利点
        • ワンピで検索してもワンピースがでる
        • あてはあるものができる限り出力される
      • NG
        • ファーでローファーがひっかかる
  • unigram->kurokojiへ
  • 移行OK要件
    • ヒット件数が大幅に減らなければOK
    • ヒットしてもダメなモノが消えるのはOK
    • unigramでとれなくなったものもある
  • 本番DBでUnigramとkuromoji+辞書で違いを調べてみた
    • 問題点
      • ふりがなのついたファッションデータがなかった
        • 自社でもってるブランドmasterを追加
        • 自社の検索ログ+neologdで分解した
          • uniGRAMで出来た部分を優先して作った
  • 上位概念と下位概念を整理したい
    • サンダルという名前がつく履き物とで香料もあるので、それはわけたい
  • 検索数が多いモノは類義語辞書で対応
    • ブランドは揺れの登録はしない
  • キーワードサジェスト機能を使う
  • 課題
    • 辞書の作り方の情報がない
    • 試行錯誤・断片的な情報しかない。。。
    • できるだけ検索の利便性を高くして、作業コストが低い方法vs 資源としての正しさ
    • なにが正しいのか
      • 検索のための辞書じゃなくて、サービスが言語知見を知りたい

質問

  • どうやって再現率を確認したか
    • 数千件のクエリを投げて確認をした
  • フィードバックがあったか?
    • わからない。まぜらフリマアプリだから..
  • 辞書のメンテナンスはどうやってるか?
    • 定期的に検索ヒットの0件のキーワードを足して対応する
    • はやりもんがあれば足す
    • 週1〜2回
  • 追加した辞書で特に効果的だったと思ったものは何か
    • 今まで2回検索しないといけなかったようなものがなくなった

知識を紡ぐための言語処理と、そのための言語資源(@conditional)

www.slideshare.net

NEologd が2016年末までにやること(@overlast)

  • 渋谷ヒカリエ
    • 形態素区切り結果
    • もう1回UniDicで解析し直す
  • mecab-ipadic-neologd新機能

    • カラム拡張
    • 形態素解析後、一番後ろにunidicの結果を出す
    • UnidiDicでの分割結果を足す
    • キーワード抽出した結果を足す
    • 位置情報をたしたり、wikificationの結果を足したりもできる
    • カラム拡張ができることでプラグインのように使えるようになる
  • 定量的な評価やっているの?

    • 文書分類タスクで確認
      • yahoo newsの大小カテゴリ分類
    • 結果
      • IPA辞書、UniDicのベスト結果を上回る
      • 文書分類では副作用はない
  • mecab-ipadic-neologd(みんなでできるようにすること)

    • 動詞エントリ拡張
    • 略語エントリの追加
    • 新語の追加

最後に

実は弊社の製品であるSedue ExtractorにもNEologdは使われております。 LTもしたかったのですが、資料の準備等できなくて、、、 次回はなにか話せたらなと....

Chainerのユーザーが集まるをSlack Teamを作成した

2017年7月11日追記

公式のSlackチームがありますので、そちらを登録してください!

日本語 https://bit.ly/chainer-jp-slack English https://bit.ly/chainer-slack

なぜ作ろうと思ったか?

作ろうとおもったきかっけ

Chainerのイベントを行っていると以下のようなコメントをもらうことがあります。

  • Sampleコードが欲しい
  • 日本語のdocumentが欲しい
  • もっとイベントをやってほしい
  • もっと機能を充実して欲しい 等々

ただ、Chainerの開発チームの状況を考えると要望に答えるのは難しいなーと感じていました。
また、この中で開発陣以外の人を巻き込んでできるではないかなと感じていました。

開発陣がやったほうがいいこととユーザーがやったほうがいいことが有るのではないかと考える

自分がSIerにいたり、プリセールスのエンジニアとして働いて経験があるかもしれないが、
開発(Development)と導入・運用(DeliveryとOperation)を行う人は違うべきだとおもうなーとずっと思っていた。

開発エンジニアがやったほうがいいこと

やはりソフトウェアの開発に注力するべきかなと思います。もちろん使いやすさも大事ですが、一番大切なのは 「コアの部分をしっかりつくる」 事だと思います。(もちろんエラーログが見やすさとか、ドキュメント更新はもちろん大切です)
特にChainerの開発には、Deep Learningの知識や、CUDAの知識が必要となります。その辺を集中して開発できるようにすべきかなと感じています。
他のソフトウェアにないものやあってしかるべきモノがあるといいなと思っている。

導入・運用エンジニアがやったほうがいいこと

ノウハウをためること。使いやすくすることだと思っています。
便利ツールとか、サンプルコードとかは、実際に使っている人ができる限り集めるといいと思います。
実際にOracle、SAP、MSとかですら、実際に使ってもらわないとノウハウは貯まらないし、出たばっかりの製品は微妙だし、ノウハウがなく使いこなせないことが多いと感じてます。
そのようなノウハウをつくる基盤をつくれればいいなーと勝手に思っています。

どういう方針でやろうと思っているか?

深層学習の黎明期であるいま、ノウハウがあるコミュニティが強いと思っています。そのノウハウを共有し、大きな組織にして行きたいと思います。 イメージとしては、Amazon Web ServiceとJapan Aws User Group(JAWS)みたいな関係を築いていけるといいなと思っています。 (あくまで目指しているだけなので、うまくいくかどうかわからない。。。)

今後どういう話をしていくか?

具体的には決めていないですが、以下のことをやりたいなーと思っています。

  • Chainerのdocumentの翻訳
  • Meetup等のイベントの開催
  • Sampleや事例のまとめサイト作成

なにか意見等あれば、Slackでいただければと思いますmm

言語処理100本ノック 2015 Part1

言語処理学会に行ってちょっと勉強したいと思ったので「言語処理100本ノック 2015」を始めて見た

www.cl.ecei.tohoku.ac.jp

ここにコードはまとめております github.com

ちょっとわからないことはここにまとめていく

知った関数

  • ステップ数 P180
  • encode P556
  • append P77
  • sub()P 372
  • xrange
  • range

参考にしたサイト

qiita.com

github.com

python.keicode.com

2015年を振り返る

久々にブログを書いてみる

今年は本当に大変な1年だった。本当に仕事しかしていない1年だった気がする。 (毎年のように笑い話に出来るような恋愛ネタはもちろんありますが....) ちょっと大きく振り返ってみる

全体

本当に大変でした。色々やってもうこれ以上の体験はできないかかと。。

仕事

仕事がらブログに具体的なことが書けないので、あっさりと... 社会人になって一番大きな案件に携わりました。人数も多くてなんとか炎上せずに済みました。 (もっと大きな仕事がやったことないわけではないですが、本当に一部過ぎて...)

あとは、発注をする仕事をしました。発注するってとっても大変だなと思いました。営業する上でものすごく勉強になりました。

おとは、Chainerのイベントの主催をしました。 OSSのイベントは初めてやって本当にいろいろ経験させてもらいました。

beam2dさんのブログにもありましたが、Chainerのcommunity活動は大切だと思うので、がんばっていきたい

プライベート

オランダ・ベルギーに旅行にいきました。 Airbnb使ったがトラブル続きでした。。。まあ自分が悪いのですが。。 (勝手にいなくなったり、オートロックで閉め出されたり.....) 1カ月ずれてたら大変でした..

f:id:hidetomasuoka:20151231214454j:plain f:id:hidetomasuoka:20151231214513j:plain

来年

もっとがんばると同時にむりしないように.. みなさんお体にはきをつけて!

Chainerをインストールしてみた

PFN/PFIが公開したChainerをインストールしてみた

Chainerとは

Chainer は、ニューラルネット誤差逆伝播法で学習するためのフレームワークです。以下のような特徴を持っています。

  • Python のライブラリとして提供(要 Python 2.7+)
  • あらゆるニューラルネットの構造に柔軟に対応
  • 動的な計算グラフ構築による直感的なコード
  • GPU をサポートし、複数 GPU をつかった学習も直感的に記述可能

詳細はこちら

インストール

インストール環境

インストール手順

  • Python関連パッケージをインストール
# apt-get install python-devel
  • pipをインストール
# apt-get install python-pip
  • chainerをインストール
# pip install chainer

これでおわり

感想

ものすごく簡単にインストールができた 次はexampleを使ってなにかやってみたい

備考

こちらにも同様の内容を書いてみた

qiita.com

JAWS-DAYS2015の資料まとめました

自分があとで読むためにまとめてみた 足らない部分はご指摘ください−

本セッション

スマートニュースの世界進出を支えるログ解析基盤 on AWS

speakerdeck.com

Data Engineering at VOYAGE GROUP

www.slideshare.net

「納品のない受託開発」の先にある「エンジニアの働きかたの未来」

www.slideshare.net

ドコモの画像認識APIAWSだった

www.slideshare.net

JAWS DAYS 2015-ド・エンタープライズな情シスとクラウドと私 @applebear_ayu

www.slideshare.net

「技術的負債」を問いなおす」

speakerdeck.com

blog.kentarok.org

JAWS DAYS 2015 SimpleWorkflowとOpsWorksでサービスを開発して解ったこと

www.slideshare.net

東急ハンズクラウドデザインパターン アーキテクチャー編

www.slideshare.net

モバイルファースト時代のクライドネイティブアーキテクチャ

dev.classmethod.jp

www.slideshare.net

Infra寄りのDevがお送りするRDS for Aurora徹底検証

www.slideshare.net

DevOps が普及した今だからこそ考えるDevOpsの次の姿

www.slideshare.net

JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介

www.slideshare.net

北海道 x 農業 x クラウド

www.slideshare.net

IoT時代のデータ伝送とインフラに求められている機能

www.slideshare.net

LT

[JAWS Days 2015 LT]使い始めて3年半、ようやくテスト始めました

www.slideshare.net

AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)

www.slideshare.net

AWS ロボ in JAWSDAYS

www.slideshare.net

mecabのユーザー辞書をつくってみる

mecabを社内でいじることがあったので、備忘録

mecabのユーザー辞書をつくる

なぜか「せなか」とう単語がmecabになかったので、辞書を更新する

$ echo "おやじのせなか" | mecab
おやじ   名詞,一般,*,*,*,*,おやじ,オヤジ,オヤジ
の 助詞,格助詞,一般,*,*,*,の,ノ,ノ
せ 動詞,自立,*,*,サ変・スル,未然ヌ接続,する,セ,セ
なか  名詞,非自立,副詞可能,*,*,*,なか,ナカ,ナカ
  • ディレクトリに移動 $ cd /home/foo/bar

  • 追加したい言葉をCSVに追記 $ echo "せなか,1285,1285,5965,名詞,一般,*,*,*,*,背中,セナカ,セナカ" > user.csv

  • 辞書を作成(コンパイル

$  /home/foo/bar/libexec/mecab/mecab-dict-index -d   /home/foo/bar -u user.dic -f utf-8 -t utf-8 user.csv
reading user.csv ... 1
emitting double-array: 100% |###########################################|

done!
  • mecabrcを修正(コメントをはずす)
$ vim  /usr/local/lib/mecab/dic/ipadic/dicrc
userdic = /home/foo/bar/user.dic 

$ echo "おやじのせなか" | mecab おやじ 名詞,一般,,,,,おやじ,オヤジ,オヤジ の 助詞,連体化,,,,,の,ノ,ノ せなか 名詞,一般,,,,,背中,セナカ,セナカ

参考

MeCab: 単語の追加方法