NEologd Casual Talksに行ってきた
NEologd Casual Talksに行ってきました。
@eichiroi 先生と一緒に書いたメモをブログにまとめました
NEologdをどう使うと便利なのか ークエリ拡張 or 検索ソート順における活用(@Quasi_quant2010)
www.slideshare.net
概要
計算を補正する言語支援としての利用例
- 使用用途
- クエリサジェストにおける前処理エラーを補正
- アシックスサージールをアシックスターサージルに変換したい
- 対処法
- NElogd辞書にあればを使う
- Neologdがあることでサージール→ターサージールに補完できた
- suggst結果の複合語を補正
- 切れすぎてしまった複合名詞をくっつける
- 「サッカー シューズ」を「サッカーシューズ」に
- NElogd辞書にあればを使う
- 背景
- 複合名詞を細かく分割する方針がある
- 複合名詞の補正Sourceとして使う
- NELOGDで使って実現したいこと
- userの検索意図を保ちつつ検索漏れを防ぐ
- Indexingのときにクエリ拡張する
- 単純に分かち書きしたものだけでなく、くっつけた長い単語(複合名詞とか)もインデックスに追加する
- 検索意図を保存するための一つの手段
- 固有表現を加味した分かち書きをする
- クエリ拡張とN-bestも併用
前処理用Pythonモジュールneologdnの紹介(@_yukinoi)
- テキストの前処理とは
- 見た目が一緒でもコンピュータは違う文字列と判別する
- テキストの処理がしやすいようにテキストを一定のルールに基づいて整えること
- 例
- 半角カナを全角に
- 「うぇーーーーい」と「うぇーい」
- 前処理やってないと
- まどかマギカとまどかマギカはちがうものと判断してしまう
- nelogdn
- nelogd用の前処理プログラム
- Python 2,3系に対応
pip install neologdn
でインストール可能
- nelogd用の前処理プログラム
質問
- 今後どういう単語をとれるようにしたいか?
- 同じ文字の繰り返しで2文字単位のもの、例えば「オラオラオラオラ」を正規化
ファッションを扱うサービスのために、Elasticsearchのユーザー辞書とシノニム辞書を作った話(@sinamon129)
- Fablicのサーバーサイドエンジニア
- RoRとES
- フリルの検索改善のためにESとuser辞書とシノニム辞書を使った
- 検索の50%ぐらいがキーワード単体の検索(+絞り込み)
- 検索パターン
- userが自由に書く
- タイトル・商品説明
- 形態・形状・セールスポイント
- 略称、表記ゆれあり
- マスターデータ系
- カテゴリ
- ブランド
- userが自由に書く
- 検索キーワード
- 表記間違いや省略した単語が結構ある
- インデックス方式
- unigaram
- 再現率高いが適合率が低い
- 利点
- ワンピで検索してもワンピースがでる
- あてはあるものができる限り出力される
- NG
- ファーでローファーがひっかかる
- unigaram
- unigram->kurokojiへ
- 移行OK要件
- ヒット件数が大幅に減らなければOK
- ヒットしてもダメなモノが消えるのはOK
- unigramでとれなくなったものもある
- 本番DBでUnigramとkuromoji+辞書で違いを調べてみた
- 問題点
- ふりがなのついたファッションデータがなかった
- 自社でもってるブランドmasterを追加
- 自社の検索ログ+neologdで分解した
- uniGRAMで出来た部分を優先して作った
- ふりがなのついたファッションデータがなかった
- 問題点
- 上位概念と下位概念を整理したい
- サンダルという名前がつく履き物とで香料もあるので、それはわけたい
- 検索数が多いモノは類義語辞書で対応
- ブランドは揺れの登録はしない
- キーワードサジェスト機能を使う
- 課題
- 辞書の作り方の情報がない
- 試行錯誤・断片的な情報しかない。。。
- できるだけ検索の利便性を高くして、作業コストが低い方法vs 資源としての正しさ
- なにが正しいのか
- 検索のための辞書じゃなくて、サービスが言語知見を知りたい
質問
- どうやって再現率を確認したか
- 数千件のクエリを投げて確認をした
- フィードバックがあったか?
- わからない。まぜらフリマアプリだから..
- 辞書のメンテナンスはどうやってるか?
- 定期的に検索ヒットの0件のキーワードを足して対応する
- はやりもんがあれば足す
- 週1〜2回
- 追加した辞書で特に効果的だったと思ったものは何か
- 今まで2回検索しないといけなかったようなものがなくなった
知識を紡ぐための言語処理と、そのための言語資源(@conditional)
www.slideshare.net
- 東北大学自然言語処理研究室
- 年度毎人が増えている
- 自然言語処理の解析から応用をやってる
- 東北大が「行間を読む」言語解析
- DL
- 画像 × 言語
- 画像がなにをしているかとれるようにする
- 言語理解には「知識」が不可欠
- 田端酒造の「羅生門」は何賞をとったのか?
- 知識がないと正しい回答がつくれない
- 田端酒造の「羅生門」は何賞をとったのか?
- 知識を紡ぐ言語処理
- Wikipedia Freebaseをつかって言語を自動処理
- 言語データから知識を獲得
- Wikipedia Freebaseをつかって言語を自動処理
- 言語情報のグランディング
- 知識を用いた意味づけ
- 場所参照表現のグランディング + 一般的固有表現のグランディング
- そこから意味を手に入れる
- エンティティリンキング
- 日本語wikificationコーパス
- 場所参照表現タグ付きコーパス
- 武家屋敷など
- 拡張固有表現+Wikipediaデータ
- ありとあるゆるデータを200クラスに階層化した辞書
- カテゴリ階層例: 「製品 > 主義方式 > 競技」
- LanguageCraft(関根先生の会社?)から有料(?)でゲットdきる
- 200万記事に対してDLでラベルをつけた
- Json対応済み!
- 精度は90%くらい
- 日本語 wikipedia エンティティ ベクトル
- word2vec は、単語をベクトル化
- wikipdiaのエントリをベクトル化(周辺の文脈も入れる)
- 類似したエントリを探せる、アナロジーを探すのにも使える
- 場所参照表現のグランディング + 一般的固有表現のグランディング
- 知識を用いた意味づけ
- NElogdファミリーへの期待
- 現状:継続的にメンテナンスされる言語資源はない
- 毎月更新されてすごい!
- 現状:研究者/エンジニアは「手法」によりすぎる傾向がある
- リソースも大事
- 現状:「言語リソースは客観性が重要」「リソース制定過程も再現性が必要」
- 個人の主観でリソースをつかってもいいんじゃん!
- リソースの配布元
NEologd が2016年末までにやること(@overlast)
- 渋谷ヒカリエ
- 形態素区切り結果
- もう1回UniDicで解析し直す
mecab-ipadic-neologd新機能
定量的な評価やっているの?
- 文書分類タスクで確認
- 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」を始めて見た
ここにコードはまとめております github.com
ちょっとわからないことはここにまとめていく
知った関数
- ステップ数 P180
- encode P556
- append P77
- sub()P 372
- xrange
- range
参考にしたサイト
2015年を振り返る
久々にブログを書いてみる
今年は本当に大変な1年だった。本当に仕事しかしていない1年だった気がする。 (毎年のように笑い話に出来るような恋愛ネタはもちろんありますが....) ちょっと大きく振り返ってみる
全体
本当に大変でした。色々やってもうこれ以上の体験はできないかかと。。
仕事
仕事がらブログに具体的なことが書けないので、あっさりと... 社会人になって一番大きな案件に携わりました。人数も多くてなんとか炎上せずに済みました。 (もっと大きな仕事がやったことないわけではないですが、本当に一部過ぎて...)
あとは、発注をする仕事をしました。発注するってとっても大変だなと思いました。営業する上でものすごく勉強になりました。
おとは、Chainerのイベントの主催をしました。 OSSのイベントは初めてやって本当にいろいろ経験させてもらいました。
beam2dさんのブログにもありましたが、Chainerのcommunity活動は大切だと思うので、がんばっていきたい
プライベート
オランダ・ベルギーに旅行にいきました。 Airbnb使ったがトラブル続きでした。。。まあ自分が悪いのですが。。 (勝手にいなくなったり、オートロックで閉め出されたり.....) 1カ月ずれてたら大変でした..
来年
もっとがんばると同時にむりしないように.. みなさんお体にはきをつけて!
Chainerをインストールしてみた
PFN/PFIが公開したChainerをインストールしてみた
Chainerとは
Chainer は、ニューラルネットを誤差逆伝播法で学習するためのフレームワークです。以下のような特徴を持っています。
- Python のライブラリとして提供(要 Python 2.7+)
- あらゆるニューラルネットの構造に柔軟に対応
- 動的な計算グラフ構築による直感的なコード
- GPU をサポートし、複数 GPU をつかった学習も直感的に記述可能
インストール
インストール環境
- OS:Ubuntu 14.04 LTS
インストール手順
- Python関連パッケージをインストール
# apt-get install python-devel
- pipをインストール
# apt-get install python-pip
- chainerをインストール
# pip install chainer
これでおわり
感想
ものすごく簡単にインストールができた 次はexampleを使ってなにかやってみたい
備考
こちらにも同様の内容を書いてみた
JAWS-DAYS2015の資料まとめました
自分があとで読むためにまとめてみた 足らない部分はご指摘ください−
本セッション
スマートニュースの世界進出を支えるログ解析基盤 on AWS
Data Engineering at VOYAGE GROUP
www.slideshare.net
「納品のない受託開発」の先にある「エンジニアの働きかたの未来」
www.slideshare.net
ドコモの画像認識APIもAWSだった
www.slideshare.net
JAWS DAYS 2015-ド・エンタープライズな情シスとクラウドと私 @applebear_ayu
www.slideshare.net
「技術的負債」を問いなおす」
JAWS DAYS 2015 SimpleWorkflowとOpsWorksでサービスを開発して解ったこと
www.slideshare.net
東急ハンズのクラウドデザインパターン アーキテクチャー編
www.slideshare.net
モバイルファースト時代のクライドネイティブアーキテクチャ
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 おやじ 名詞,一般,,,,,おやじ,オヤジ,オヤジ の 助詞,連体化,,,,,の,ノ,ノ せなか 名詞,一般,,,,,背中,セナカ,セナカ