はじめに
golang.tokyo #10 x WomenWhoGoTokyoの参加メモです。
セッション
テキスト審査 in Pairs
- 不正ユーザー(業者)防止のためテキスト審査をする必要がある背景
- ワードフィルタ = 形態素解析による単語一致
- 形態素解析はkagomeを利用
- 部分一致によるスコアリング
- 単語に対して点数をつけて閾値を越えるとNGと判定される
- 「FとX」など怪しい言葉も対応
- ワードフィルタリングは機械学習との併用、現在はエンジニアがチューニングを受け持っている。
- deeplearningでやるには失敗ケースが少ないため、データをためていくことが必要。
interfaceとの付き合い方
- しっかりとした型付け言語のため柔軟な取り扱いが難しい印象を最初受ける。
- json.Marshalでinterface型を引数に取れる。
- empty interface
メルカリカウルのマスタデータ更新
- @tenntenn さん
- google app engineを採用
- サービス性質
- 製品のカタログ情報を持つ、外部のデータを利用
- 毎日バッチで更新
- Cloud SQL(MySQL)にて管理
- サイズの大きいtsv形式のファイルを想定
- Google Cloud Storageに保存 -> Google App Engineのcronジョブ
課題
-
ファイル分割
- URL Fetchの制限があるため、ファイルの分割処理が必要
- Task Queueは並列処理のため更新順番に決まりがない
- 冪等性の担保
-
文字コード変換
対策
-
分割方法
- 固定長で分割
- 1レコードの最大サイズ+バッファで分割
- 改行をまたぐことを想定して、同じ箇所を少しかぶるように分割
-
文字コード変換
- golang - encoding japanese
- Transformer実装(難易度高)
- 出力・入力で長さが違う可能性
- バッファのサイズが足りないかも
- EOFが来るかも
rubyエンジニアがgoでウェブアプリを書いてみた
- @hoshitocat さん
- 広告集計API
- GunocyのAPIは、micro framework: kamiが多い
- gracefulにする必要がある
- FileListner
- einhorn
高精度の名寄せシステムを高速で動作させる
-
@dproject21 さん
-
reflect PKGは遅い
-
protocolBuffer, MessagePKGとかにしたほうがいい
-
golangでの正規表現も遅い
- unicodeパッケージが活躍
-
githubからライブラリ選定時はrune対応しているかどうかをチェックする
-
stringsパッケージでruneに対応していない、必要であれば内製する。