myaun’s blog

FaceNetによる顔画像の特徴量抽出 - アイドル画像による検証 -

1. はじめに

本記事では、アイドルブログの画像から検出された顔画像からFaceNetによる特徴量を抽出しました。 そして、得られた特徴量の表現力や挙動を確認しました。

この検証は、ブログやSNSなどのメディアで、気になるメンバ以外の投稿に気になるメンバが出現したときに検出したいと思うことがあり、そのための1歩目の実験です。

ラベル付けをする根性が無いので、自動ラベル付け or 1枚だけ(プロフィール画像など)から学習するOne-shot learning (or Few-shot learning)により、これが実現できればいいなと思っています。 今回は、FaceNetのような大規模顔画像データセットで学習済みのモデルから得られる特徴量で、どの程度表現可能か検証してみました。

参考

本記事は以下の記事を参考をしたり、影響を受けたりしてます。
特にすぎゃーんさんの記事すごい。ラベル付けすごいし、3年以上前にやってることもすごい。

2. FaceNetによる顔画像の特徴量抽出

2-1. ブログ画像を収集

欅坂46、日向坂46のブログをスクレイピングし、画像を取得しました。

  • 対象メンバ数: 38名
  • 総取得画像数: 47740枚

使用したコード: keyakizaka46-mining/retrieve_Blog_images.ipynb at master · haradai1262/keyakizaka46-mining · GitHub

2-2. ブログ画像から顔検出、保存

物体検出のSOTAとして有名であるYOLOv3を使いました。 実装は以下のコードを参考にしました。

タスクが顔検出なので、YOLOv3の重みとして、顔検出データ・セットWIDER FACE: A Face Detection Benchmarkで学習済みのものを使用しています。 今回は、パッと見た感じ検出された顔画像のサイズが小さいものは誤検出が多かったので、サイズが小さいものを取り除きました。 最終的に、検出された顔画像は29825枚でした。

検出結果例は以下の通りです。

入力画像 f:id:myaun:20190313194405j:plain

検出された顔画像

f:id:myaun:20190313194652p:plainf:id:myaun:20190313194625p:plainf:id:myaun:20190313194642p:plain

使用したコード: keyakizaka46-mining/script/risa_inf/face_detection at master · haradai1262/keyakizaka46-mining · GitHub

2-3. Facenetにより顔画像から特徴量抽出

FaceNetは2015年にGoogleの研究者により発表された手法です。 FaceNetでは、画像間の距離をTriplet Lossを用いた距離学習により、サンプルと同じものとの距離を近く、異なるものとの距離を遠くにマッピングされるように学習されます。 これにより、顔認識やクラスタリングのための高い表現力を持つ顔画像のベクトル表現を取得することを実現しました。

以下のコードで、公開されている最新の学習済みモデルは、Inception ResNet v1をCasia-WebFaceやVGGFace2で学習したものらしい。今回の実験では、こちらの学習済みモデルを使用して特徴量を抽出しました。

使用したコード: keyakizaka46-mining-gpu/extract_facenet_features_from_blog_faceimages.ipynb at master · haradai1262/keyakizaka46-mining-gpu · GitHub

2-4. 得られた顔画像特徴量の検証

A. 類似顔画像検索

得られた特徴量を用いた類似画像検索を行いました。検索は、Pythonの近似最近傍探索ライブラリAnnoyを使いました。 他の特徴量と比較したかったので、物体認識のデータセットであるImageNetで学習されたVGG16の中間層(fc2)の出力値でも同じことを比較しました。

実行結果の一部は以下の通りです。 結果がわかりやすそうなものを選びましたが*1、他の結果を見てもFaceNetは特徴的な顔のメンバはある程度表現できているように感じました。

  • 各行の一番左がクエリ画像で、右から順に距離が小さい画像です。
  • 上段がFaceNetによる検索、下段がVGG16による検索です。
  • ◎が付いてるものは、クエリ画像と人物が一致しているものです(私の目視チェック)

f:id:myaun:20190313213856p:plain

f:id:myaun:20190313213813p:plain

f:id:myaun:20190313213836p:plain

f:id:myaun:20190313213750p:plain

f:id:myaun:20190313213021p:plain

B. t-SNEによる2次元可視化

得られた特徴量をt-SNEにより2次元空間へ射影しました。 ここからは、対象とする画像が多すぎると苦しい(マシン的にも確認の難しさ的にも)ので、以下の1メンバのブログから取得された顔画像のみを対象にしました。

結果は以下の通りです。
顔がちゃんと写っている画像であれば、ある程度同じメンバが近くに集まっているように見える(気がする)

f:id:myaun:20190313212013p:plain

C. クラスタリング

得られた特徴量を用いてクラスタリングをしました。 クラスタリング手法はGMMを採用し、クラスタ数は20としました。

結果は以下の通りです。
各行の画像が同じクラスタの画像であり、最も左から順にクラスタ中心に距離が近い画像です。

f:id:myaun:20190309015628p:plain f:id:myaun:20190309015656p:plain

全体としては、同じメンバの画像が同じクラスタになっていたり、同じ渡邉理佐の画像であっても雰囲気や撮影時期が近いものが同じクラスタになっているように見える。 例えば、Cluster 8やCluster 17は、渡邉理佐以外の同じメンバが集まっている。 とはいえ、精度としては微妙な気がするし、そもそも顔検出自体もイケてない気がする。

使用したコード: keyakizaka46-mining-gpu/check_blog_faceimages.ipynb at master · haradai1262/keyakizaka46-mining-gpu · GitHub

3. 終わりに

  • 類似画像検索やクラスタリングでも一部メンバ毎に分割されていたので、ある程度の表現力はありそう
  • 顔検出自体の精度が気になるので、以下の記事などを参考に顔の角度補正や前処理、後処理を追加して改善したい
  • One-shot Learningを夢見てるけど、コンピュータビジョン系あんまりなので、できそうか無理そうかも勉強しなきゃ分からん
  • 適合性フィードバックと距離学習みたいな方法もやってみたいとおもった
  • 次はMusic Videoを使って実験してみたい

*1:私がFaceNetがうまくいっていそうなものを意図的に選んでるかもしれませんが...

アイドルブログの文体的特徴に基づく著者分類

1. はじめに

本記事では、アイドルブログの文体的特徴に基づく著者分類の紹介をします。

1-1. 「文体的特徴」とは

簡単に言うと、文章に現れる著者の癖に注目した特徴量です。計量文体学、計量分析学と呼ばれる領域にて研究されているみたいです。 文体という言葉は、ブリタニカ百科事典では以下の様に定義されており、これを統計的に扱うための指標のようなものかなと思っています。

ある特定の個人,時代,流派などの言語表現を特徴づける様式

文体的特徴および計量文体分析に関しては、以下の記事で紹介した犯罪捜査のためのテキストマイニング: 文章の指紋を探り,サイバー犯罪に挑む計量的文体分析の手法が詳しいです。

例えば、ある男性著者が女性になりすまして書いた文章や同著者が別名義で書いた文章であっても、その癖は文体的特徴に現れるようです。 具体的に、本記事では、以下の文体的特徴を使いました。

  • 非内容語の使用率
  • 品詞のn-gram
  • 助詞のn-gram
  • 読点前の単語
  • 漢字・ひらがな・カタカナ・数字・ローマ字の使用率

1-2. なぜやったか

アイドルのブログは、名前や決まった挨拶などがあり、そのまま単語を使うと簡単なルールベースで分類できてしまいそうだったので、それらを使わない方法でやってみたかった。文体的特徴では、「名詞」「動詞」「形容詞」などの内容語をそのまま使わず、話題に依存しないので面白いかも!みたいな気持ち。

2. データセットについて

アイドルブログとして、女性アイドルグループ「欅坂46」「日向坂46」のメンバ38名のブログを使用しました。 最も記事数が少ないメンバに合わせて、各メンバから98本のブログをサンプリングしました。

したがって、以下のようなデータセットとなります。

  • 著者数: 38
  • 記事数: 3724 (著者数 × 98)

3. 文体的特徴に基づく著者分類

今回の著者分類は、以下のような設定です。

  • 入力: ブログの本文
  • 出力: いずれかの著者名 (38クラス分類)

3-1. 文体的特徴抽出

以下のコードで文体的特徴を算出しました。*1

# 非内容語の使用率 (非内容語のunigramらしい?)
def get_noncontent_rate( texts_pos, n, cut_off_num ):
    content_pos = ['名詞','動詞','形容詞'] # 内容語   
    novels_pos_str = []
    for token_pos in texts_pos:
        text = ' '.join( [ t[0] for t in token_pos if not t[1] in content_pos ] )
        novels_pos_str.append( text )

    vectorizer = CountVectorizer(
        min_df = cut_off_num,
        ngram_range = (n, n),
    )
    X = vectorizer.fit_transform( novels_pos_str )
    
    return X.toarray()

# 品詞のn-gram
def get_pos_ngram( texts_pos, n, cut_off_num ):
    novels_pos_str = []
    for token_pos in texts_pos:
        text = ' '.join( [t[1] for t in token_pos] )
        novels_pos_str.append( text )

    vectorizer = CountVectorizer(
        min_df = cut_off_num,
        ngram_range = (n, n),
    )
    X = vectorizer.fit_transform( novels_pos_str )
    return X.toarray()

# 助詞のn-gram
def get_adp_ngram( texts_pos, n, cut_off_num ):
    novels_pos_str = []
    for token_pos in texts_pos:
        text = ' '.join( [ t[0] for t in token_pos if t[1] == "助詞" ] )
        novels_pos_str.append( text )

    vectorizer = CountVectorizer(
        min_df = cut_off_num,
        ngram_range = (n, n),
    )
    X = vectorizer.fit_transform( novels_pos_str )
    return X.toarray()

# ひらがな、カタカナ、漢字、数字, 英数字, の使用率
def get_char_kind_rate( texts_pos ):
    re_hiragana = re.compile(r'[\u3041-\u3093]')
    re_katakana = re.compile(r'[\u30A1-\u30F4]+')
    re_kanji = re.compile('[\u4E00-\u9FD0]')
    re_number = re.compile(r'\d') # 全角も含む
    re_alpha = re.compile(r'^[a-zA-Z]+$')
    
    char_kind_rates = []
    for tokens_pos in texts_pos:
        char_num = 1
        char_kind_count = [1,1,1,1,1]
        for i in tokens_pos:
            if len( i[0] ) < 1: continue
            for c in i[0]:
                if re_hiragana.fullmatch(c): char_kind_count[0] += 1
                if re_katakana.fullmatch(c):char_kind_count[1] += 1
                if re_kanji.fullmatch(c): char_kind_count[2] += 1
                if re_number.fullmatch(c): char_kind_count[3] += 1
                if re_alpha.fullmatch(c): char_kind_count[4] += 1
                char_num += 1
        char_kind_rates.append( [ i / float( char_num ) for i in char_kind_count] )
    X = np.array( char_kind_rates )
    return X

# 読点前の単語
def get_comma_before_word( texts_pos, cut_off_num  ):
    novels_pos_str = []
    for token_pos in texts_pos:
        text = ''
        for t in token_pos:
            if t[0] == '、': text += '%s ' % t_prev[0]
            t_prev = t
        novels_pos_str.append( text )

    vectorizer = CountVectorizer(
        min_df = cut_off_num,
    )
    X = vectorizer.fit_transform( novels_pos_str )
    return X.toarray()

3-2. 著者分類

分類器は、Random ForestとLightGBMで実験をしました。(どちらもハイパーパラメータはデフォルト)
評価値は、5分割交差検証(Stratified k-fold)における各分類正解率の平均値です。

コードは以下のような感じ。

def cv_randomforest( X, y ):
    # 5-fold cv
    acc_score_cv = []
    kf = StratifiedKFold(n_splits=5, random_state=777, shuffle=True)
    for idx, (train, val) in enumerate( kf.split(X, y) ):
        # learn model
        clf = RandomForestClassifier(n_estimators=100, n_jobs=7)
        # clf = lgb.LGBMClassifier(n_estimators=100, objective="multiclass")
        clf.fit(X[train], y[train])

        # predict validation and score
        preds = clf.predict(X[val])
        acc_cv = accuracy_score( preds, y[val] )
        acc_score_cv.append( acc_cv )
        
    # cv score
    mean = sum( acc_score_cv ) / len( acc_score_cv )
    return mean

4. 分類結果

4-1. 各特徴量による精度および全特徴量による精度

Random Forest LightGBM
非内容語の使用率 0.5239 0.5499
品詞のn-gram 0.7300 0.7849
助詞のn-gram 0.1315 0.1227
読点前の単語 0.1549 0.1554
漢字・ひらがな・カタカナ・数字・ローマ字の使用率 0.1165 0.1094
ALL 0.7700 0.8351

全体としては、精度が8割程度と38クラス分類の割には結構高い精度となりました。

「非内容語の使用率」「品詞のn-gram」は単独でも高精度でした、これは犯罪捜査のためのテキストマイニング: 文章の指紋を探り,サイバー犯罪に挑む計量的文体分析の手法で行っていた、調査研究の結果とも近い傾向かなと思います。

「助詞のn-gram」「読点前の単語」「漢字・ひらがな・カタカナ・数字・ローマ字の使用率」は、上の2つに比べるとかなり小さいですが、38クラス分類のランダムは3%以下なので、いくらかは文体を表現する効果があるようです。

4-2. いずれかの特徴量を抜いたときの精度

Random Forest LightGBM
ALL - [非内容語の使用率] 0.7340 0.8019
ALL - [品詞のn-gram] 0.5662 0.6157
ALL - [助詞のn-gram] 0.7720 0.8370
ALL - [読点前の単語] 0.7715 0.8346
ALL - [漢字・ひらがな・カタカナ・数字・ローマ字の使用率] 0.7627 0.8307
ALL 0.7700 0.8351

こちらの表は、各特徴量の貢献を確認するために、いずれかの特徴量のみ抜いた際の精度です。 (例えば、「ALL - [非内容語の使用率]」は「非内容語の使用率」のみ抜いた精度)

値を確認すると、今回の実験では、「読点前の単語」「助詞のn-gram」は精度への貢献が確認できませんでした。例えば、「助詞のn-gram」はbi-gramでカットオフ値を5に設定していたので、こちらを変えたりするとまた結果は変わるかもしれません。

4-3. 混同行列

f:id:myaun:20190225205833p:plain

小さくて見にくいですが、メンバによって精度にブレがあるのが確認できます。 具体的には、「守屋茜」は31/98で最も低く、「土生瑞穂」「佐藤詩織」も50/98程度で低いです。文体に一貫性が無いのかもしれません。 また、「丹生明里」「原田葵」「宮田愛萌」は95/98程度で精度が高かったです。自分らしい文章を持っているのかもしれません。

4-4. ブログ文章の例

実際にブログの文章を確認しました。

(正直詳細にはわかりませんが一応考察すると、) 精度が低い「守屋茜」は、確かに文体にばらつきがあるように見えます。例えば、ブログの文末だけ見ても、「あかねん(⑉• •⑉)(⑉• •⑉)❤︎ 」「またねん!あかねん。」「Byeねん❀あかねん❀ 」と結構違うように見えます。 一方で、精度が高い「丹生明里」は、顔文字や絵文字、記号のリズムが一定で(?)、文体に一貫性があるように見えます。

誤分類が多いメンバ (守屋茜)
2016/01/2318:09 ぐらふたぬーん(´。✪ω✪。 ` )ぬーん。ぬんぬんファンレター第3弾!!いただいた日に家に帰ってすぐに読みました。1回読み出したら嬉しくて嬉しくて次も!次も…!!と読んでしまいました( ˊᵕˋ )♡読みながら、私にファンレターを書くためにレターセットを選びに行ってくれたり、私の好きそうなデザインのもので書いてくれたり… 本当にありがとうございます。ファンレターってすごいです。元気いっぱいパワーアップ出来そうです(੭ˊ꒳​ˋ)੭✧いつでも読み返せるように専用のボックスに綺麗に収納しています( ^ω^)いつか私もファンの方々に恩返しできるように頑張ります。オフショッーーーーーと!ヤングマガジン、samurai ELOみなさんみていただけましたか~今日本屋さんでみてきました。あとCancam3月号が今日発売だったので購入しました。愛読しています( ˶˙ᴗ˙˶ )\♥︎/samurai ELOの方は二号連続で出させていただいています(ˊo̶̶̷ᴗo̶̶̷`)次回もおたのしみに♡バレンタインカード、気合いをいれてがんばって可愛くデザインしたのでどうかご応募よろしくお願いします(*ˊ˘ˋ*)。♪:*°ヤングマガジン٩( ü )و❅:*.。 。.*:❅セーラー服着れてハッピー!ハッピー!ハッピー!でした⍤⃝♡ 7人のいつもとは違った表情がご覧いただけけると思いますのでぜひGETしてください❤︎次のブログで個人のオフショット載せます(灬ꈍ ꈍ灬)そして!スカパー音楽祭2016に出演させていただきますT^T☆*。☆*。!!みなさんの心に響くパフォーマンスができるように頑張ります。2/28日曜日の生放送です。ご視聴お願いします!またね〜ん。あかねん(⑉• •⑉)(⑉• •⑉)❤︎  
-------------------------------
2016/05/2518:18 いぇええええええい!!着々と入場時間が迫ってますね♡盛り上がる準備は満タンですか?コラボTシャツ!!♡これすっごく欲しくてなんと!なんと頂きました〜〜うれしい٩(๑˃̵ᴗ˂̵๑)۶ °٩(๑˃̵ᴗ˂̵๑)۶ °ファンのみなさんもGETして、おそろっぴしましょぉおお♪さっそく頂いてからすぐに着ちゃった¨̮♡それでは!!イベントでお会いしましょっ\♥︎/またねん!あかねん。  
-------------------------------
2015/11/2221:58  こんばんは(*^◯^*)はやくも日曜日が終わってシマッターーーー!と思いきや明日もホリデイd('∀'*)ですね´`* 皆さんはどんな休日をお過ごしですか? 今日の写真は  一緒に帰ったメンです♪♪初めてだ!!みんな冬の格好~*:。✡いつの間にかコート着ないと寒い時期になっちゃった(><)でも冬は可愛い服がいーーーっぱいあるので好きです、でも寒いの苦手です… - - - - - - - - - -- - - - - - - - - -- - - - - - - - -  そしてそして今夜は24:35~欅って、書けない?です(*ˊ˘ˋ*)♡私の体力測定VTRも流れますのでぜひぜひ見て頂けると嬉しいです☆彡私はリアルタイムで見ます!!今日はテキパキと終わらせないといけないことはもう片付けました、だからもう寝る準備も出来てま~す´ω` それでは欅って、書けない?でお会いしましょう\(  ˆoˆ )/\( ˆoˆ  )/ Byeねん❀あかねん❀ 
誤分類が少ないメンバ (丹生明里)
2018/05/2600:52 みなさんこんにちは〜٩( ᐛ )و٩( ᐛ )و٩( ᐛ )وけやき坂46 2期生 丹生明里です🐸🥕ベンチコート〜squint🙂最近、こんにゃくにハマろうとしました!お友達からもこんにゃくをオススメされたので、夜に食べようᐠ( ᐝ̱ )ᐟと頑張ったのですが…元からあまりこんにゃくを好んで食べなかったので、味にも慣れなくて、こんにゃくを好きになりたい!沢山食べたい!と思ってもどうしても味があまり受けつけられなくて、~こんにゃくを食べようଘ( ᐛ ) ଓ生活~があっけなく終了しました… 笑これは私の味付けの問題なのでしょうか…?🤔いや違うよ!こんにゃくの味だ!あっ、でも味を少し濃くすれば、なんとなーくカモフラージュされて食べれますかね!やっぱりもう一回がんばろうかな〜あ、私よく一人で解決しちゃう人です(ちっちゃいことだけね!)あと、私はよくサラダチキンを食べます!肉の脂身がそんなに得意ではなくて…あの絶妙なパサつき感がたまりません😳もっと沢山食べたい!というのと、最近味に飽きてきたのもあって此間、ササミを自分で茹でました〜🐓何も味をつけずに食べたら、ただのパサパサササミちゃんでした😂でも自分で茹でると安心なので、オススメです✔︎〜*〜☆〜†〜☆〜†〜☆〜†〜*〜今週の、ひらがな推し!春日さんと"真剣白刃取り"で対決させていただきました〜⚔春日さんは、凄く身体能力が高いので、大丈夫かなぁ🤔と、不安でした、 でも、本気で ということでストレートに打ちにいかせていただきました!ありがとうこざいました!けやき坂46 2期生に合格してから剣道を続けていないので動きが衰えていて…こんなにも落ちるものだと痛感しました😖これからの夏の稽古は辛いと思います…剣道をしているみなさん、本当に頑張ってください!応援しています📣剣道に限らず部活動や学校、お仕事、頑張りましょうね☺️次回のひらがな推しも春日さんとの対決の続きです!お楽しみに♪そして今週の、KEYABINGO!4は、演技力バトルでした!わたしは実際に足ツボを押してもらいました👣痛かったところと、痛くない時もありました!冷え性のツボのアキレス腱を押された時は本当に痛かったです😱でもまたいつか足ツボをしたい!次回のKEYABINGO!4も、お楽しみに♪ps サンドウィッチマンの富澤さんのお誕生日が4月30日でした💫改めて、おめでとうございます!先日の収録で、ひらがなけやきから富澤さんへの、お祝いのお誕生日アルバムのお返しにと、サンドウィッチマンさんの石鹸を頂きました!!!本当にありがとうこざいます😭話は変わりまして、けやき坂46 1stアルバム 特設サイトがホームページにオープン致しました〜👏随時更新していくので、みなさんお楽しみにしていて下さいね😉そしてなんと!!アルバムタイトルが決定致しました👏「走り出す瞬間」🏃‍♀️🏃‍♀️🏃‍♀️ストレートで、凄く好きです!また、アルバムの特典映像(Blu-ray)の内容が決定いたしました!TYPE-A☞ひらがなけやき武道館公演 Special Selection(千秋楽の公演)TYPE-B☞ひらがなけやき全国ツアー Live & Documentaryです🙌まさかライブ映像とは思いませんでした😳すごく嬉しいです😆Blu-rayなので、画質も良く最高だと思います!早く見たいです👀更に!!本日5月25日(金)24:20〜「欅坂46こちら有楽町星空放送局」では6月20日発売のけやき坂461stアルバム 「走り出す瞬間」に収録されている「期待していない自分」銀河系初オンエアします😆😆ドキドキします(ノ*´>ω<)ノみなさん、お楽しみにしていて下さい!また、けやき坂46 1stアルバム発売記念として個別握手会が開催されますが、一会場、一部ずつ追加枠が出ました!驚きました…!みなさんに感謝しかありません本当にありがとうこざいます😭皆さんとお会いする時間が増えてとっても嬉しいです!握手しにきてくださる方が、また来たいなぁ〜って、すごく楽しかった!って思っていただけるような時間にしたいです☺️本当にありがとうこざいます!宜しくお願いします🙇‍♀️〜*〜☆〜†〜☆〜†〜☆〜†〜*〜お写真コーナー↓↓↓右奥 すずか〜(富田鈴花)🧢私髪の毛ボサボサだ 笑今回はまなもん(宮田愛萌)の生誕Tシャツ着てる!すずかは最近、レッスンの時に生誕Tシャツを着ていることが多いです!すずかのノリノリスイッチが入った時が面白いです🤣この前私に口を ンパッ ってしてきました!💋あの時可愛かった!写真撮れば良かったー😭右 このちゃん!(松田好花)これはKEYABINGO!4の男装デートの時😁このかはね、本当に面白くて私のツボで…いつも笑かしてくるんです 笑このかが履いている、空気がプスプス抜けたり入れたりできるシューズ👟が凄くて!!まなもんと2人でボタンを押して遊びました🌟そうそう!この間まなもんとランチしたよ〜🍽猫耳した〜🐱まなものその口、プクゥはなんだ!可愛い😭この日は大爆笑しました!!まなもんと話していて楽しくて幸せで…あと、東京のスポットとかオススメの場所を教えてくれるので嬉しい🤩ありがとう〜!〜*〜☆〜†〜☆〜†〜☆〜†〜*〜先日のGirls Award さん、二期生から小坂菜緒が出演しました🌻すっっっごく可愛くて!!!見ているこちら側が緊張しましたウィンクされた時は心臓止まるかと…見事にハートを捕まれました💝あ、元から掴まれているのですが、更にギュギュッと!!こさなか!お疲れ様✨そして、ご出演されたみなさん、本当にお疲れ様でした🙇‍♀️左 小坂菜緒そしてなんといっても!!!Seventeenの専属モデル決定!本当にびっくり!知った時は目が思いっきり覚めました!本当に凄い!!!本当に嬉しいよ😭😭心からおめでとう🙌なおが一生懸命頑張っているから、わたしも頑張る💪明日のブログはひよたん🐤おまけ↓ホームページにて、衣装が公開されました◎また、個人アーティスト写真もアップされたので、是非ご覧になってみて下さいね٩( ᐛ )( ᐖ )۶衣装、とっても可愛い♡デニム生地で、スカートがまわるとゆらゆら広がって、ラインが素敵です✨エンブレムも青でけやき坂と入っています!カッコいい〜😸読んでいただきありがとうございました#20もう20回もブログを…時間の流れが速い…!これからも初心を忘れず、頑張ります宜しくお願いします
-------------------------------
2018/03/0520:59 みなさんこんにちは〜🐸🥕けやき坂46 2期生の 丹生明里です٩( ᐛ )و兄に借りて腹筋ローラーをしたのですが、三日間程筋肉痛が治らなくて…笑うたんびにお腹が痛かったです😅それほど鍛えられたって証拠なのかな🧐それとも今まで全然鍛えられてなかったから痛くなったのかー。もうちょっと頑張ります💪〜*〜☆〜†〜☆〜†〜☆〜†〜*〜今回のブログは前回に引き続き、二期生とのお写真を載せたいと思います✌️(6thのアーティスト写真に変わったので!)右 濱岸ひよりひよたんは甘えん坊さんです 笑 溢れ出す中3感がたまりません😁ツインテールにしてさらにきゃわいい😋(伝わりますか〜?笑)左 松田好花このかとはよく写真撮ります!このアーティスト写真撮影の時はわちゃわちゃ写真と動画を沢山撮りました😂ノリが良くて凄く楽しいです♪右 宮田愛萌可愛すぎる。髪の毛下ろしてから凄く印象変わってお姉さん感が凄くて、なんか、もう嬉しいです!!笑優しくて、頼れるのですが、少し抜けるところが好き😳右 渡邉美穂わたし的に美穂はムードメーカーさんだと思います!場を明るくしてくれて、話も上手くて面白いのです😂帰りに一緒になる埼玉三人組のバスではわちゃちゃ話してます!電話が楽しいです📞(メッセージの機能です)二期生みんなそれぞれ個性があってとっても賑やかで明るくて素敵だなぁと思います☺️💫そんな2期生9人が6枚目シングル で 歌わさせて頂きました「半分の記憶」出来上がって聞いた時は、自分達が歌ってるって分かってるけど本当に歌ってるか分からなくて…でも、この部分は誰々の声が聞こえるねっ!と話していました🌷パフォーマンスが楽しみです😁ドキドキ=͟͟͞͞٩(๑☉ᴗ☉)੭ु⁾⁾そうそう!本日の16:40〜18:00までのNHK-FM ゆうがたパラダイスに、小坂菜緒と渡邉美穂が出演します!ぜひお聞きください〜👂👂そして、特典映像の予告編が公開されました!!!今回は2期生それぞれペアを作って、相手の自己紹介ポエムを作りました!最後には夏らしいことをしてとっても楽しかったです🌟是非ご覧になってみてください👀〜*〜☆〜†〜☆〜†〜☆〜†〜*〜最近花粉症が酷いです😢メッセージでも何度も言っちゃいました 笑お友達と折角お出かけしたのにくしゃみやら目のかゆみで🤧🤧花粉症の人に良い食べ物とかあるのかな〜と思って調べてみたら、一番 れんこん が多く出てきました!炎症を抑える働き、止血作用、喉の痛みや鼻水を抑える働きのある、タンニン抗酸化作用のある色素成分の、 ポリフェノールが豊富に含まれてるそうです!!アレルギー症状の原因となる抗体の過剰摂取を抑える働きが他の野菜より多い!!れんこん 以外にもあるけど沢山食べようと思います🤤ここまで書いてきて、私は何を言いたいのかよくわからなくなって来ました 笑たまには訳のわからないブログもいいですよね〜?(無理矢理感 笑)久しぶりのツインテール👧少しだけハマってます🗣でも多分また波が過ぎ去ると思います🤨あ、海行きたい🏖でもこの時期だと寒いか〜🤧こたつ入ろ〜🌀三つ編みと、おまけのぴょこにん🐸🥕花粉症なので目が充血気味です😢明日はひよたんのブログです🐥読んでいただきありがとうございます#11  
-------------------------------
2018/11/0106:27 みなさんこんにちは٩( ᐛ )وけやき坂46 2期生 丹生明里(にぶ あかり)です🐸🥕モコモコです!パーカーの時期になりましたね〜!🌟モコモコしているので、とってもあったかいですよ!この間とっても可愛らしい帽子を見つけました!可愛くて可愛くて、動物の柄で、これは買おう!!!と思ったのですが、自分が普通の帽子が前から欲しくて買うつもりでいたことを思い出したので、普通の帽子から買おう!と思って探したら、いい感じの可愛らしい帽子を見つけたので買いましたそしたらそれだけで満足して最初にみた可愛らしい帽子はもういいや!となってしまって買いませんでした絶対に!!というか、なんだろう、強い気持ち?じゃなかったら、冷める気持ちって早いんだなぁと感じた1日でした 笑 でも今はもう欲しいものがなくなったので、次に出会った時は買ってしまうかもしれません 笑また可愛らしい帽子に出会えますように〜!!!でも最近ハマっているのは靴下です!🧦(誰得〜っていう情報ですね 笑)告知です📣10月31日発売 BUBKAさん 12月号にひらがなけやきから金村美玖、河田陽菜、丹生明里が登場しております!制服です!🌟久しぶりの制服での撮影だったのでドキドキでした!学生気分です!(高校三年生ですが…笑)みく!おろしているのが可愛かった!♡ひな!笑顔がキュートすぎて、きゅうううってなります 笑部屋着です!ツインテールになりました!3人バージョン。3人のお互いのイメージや今までの活動のことなどインタビューも掲載されております撮影地が、実は一番最初の撮影地でもあった学校だったので、とても懐かしくてなんだか不思議な気持ちになりました!!わたしはバスケットボール🏀を使った撮影をしたのですが、ボールでたくさん遊べて楽しかったです!ありがとうございました!みなさん是非お手にとってみて下さいね♪読んでいただきありがとうございました#99次で100個目のブログだ〜!ブログが始まったのは12月なので、約11ヶ月経ったのですね!と思うと早いようで短いような。1年じゃ経験できないくらいの沢山のことを経験した1年だったので、不思議な感覚ですもう1年!時の流れ早いなぁ!という気持ちと、1年しか経ってないのにこんなにも色んなことがあったんだなぁ〜という気持ちこんな感覚は初めてなので、経験できて嬉しいなぁありがとう!今回は文章の おまけ でした 笑最後まで読んでいただきありがとうございます😊  

5. 終わりに

文体的特徴を用いたアイドルブログの著者分類をしました。 結果、文書の話題に依存しない文体的特徴であっても、ある程度の精度で著者分類ができることが確認できました。

今後の課題とか

  • 文体的特徴を算出するためのパラメータ(n-gramやカットオフ数)に関して考察、検証していない。
  • 別の応用として、以下のようなタスクもうまく問題設計ができれば面白そう。
    • 「文体変化に基づくアイドルのキャラ変検出」
    • ゴーストライター検出 (本人 or 運営など)」

*1:コードがこれで良いかどうか正直不明です...

「Spotlight on Search, Google Tokyo」に参加しました

はじめに

Google Tokyoの検索チームの主催イベント「Spotlight on Search, Google Tokyo」に参加しました。 Googleはフィードバックを賢く学習していことで超進化する会社なので、忘れないうちに本イベントへの感想を書いてみました。 *1

参加イベント

所感

まず、私は多いときは月1000本以上YouTubeの動画を視聴するGoogle信者なので*3、中の人のお話が聞けて満足でした。

  • 今回は検索チームの回であったものの、全体的に発表内容がGeneralな感じだった
    • Google Tokyoチームの歴史や働き方を中心に、事例を交えつつといった感じ
    • より具体的な(より細かいテーマとか、1つのプロジェクトに注目したとか)回があると嬉しい
  • 言えないこと(アルゴリズムとか評価方法)も多そうでしたが、真摯に何か伝えようとしてくれる感じはした
  • 検索チームという括りではあるものの、めちゃめちゃ色んなプロジェクトがあるんだなーと思った。「Interactive Sessions」で色んなトピックについて話が聞けた。
    • Web Content Ecosystem Effortの「Navlekha」とか興味深い。

イベントレポート

以下イベントのメモです。「#SpotlightOnSearch」のツイートも参考にさせて頂きました。 *4

Introductions of Engineering teams in Tokyo Search by Ryoichi Imaizumi (Engineering Director at Google Tokyo)

  • Google Japanの検索チームは、今まで検索の機密性の観点などからあまりオープンではなかったが、今年からイメージを変えて今回のようなイベントを増やしていこうと検討中?
  • Google Japanについて
    • 現在、Googleの正社員数100000+, Google Japanは1300+
    • 2001年に渋谷に初めての海外拠点として、Google Japan設立
    • search, map, chrome browser, chrome os, など色々やってきた?
    • 2018年にGoogle brainチーム(research team)ができた、2019年に渋谷に拠点を移す
  • Tokyo teamの取り組みなど
    • Search quality
      • 検索の質の向上?
      • Synonyms, Spelling, Featured Snippets, Titles& Snippets
    • Mobile search
      • 2007年に開始
      • smartphone indexing, mobile ranking, Apps rankingなど
    • 日本にローカライズして何かやるということはほぼ無い、日本のニーズを基にグローバルに展開するというイメージ
    • New areas

Tech Talk: Life of a Project (Video Featured Snippet) by Tsutomu Ohkura

  • Google検索について*5
    • 約100兆ページからクエリにあった検索結果を返す
    • 各レスポンスは平均1/8秒以内で
    • 1000億リクエスト/月
    • それらの約15%は初めてみるクエリ
  • Work cycleについて
    • analysis
    • idea
    • implement
    • experiment
      • precision evaluation 40000/year
      • A/Bテスト 10000/year
    • approval
      • 社内のミニ学会みたいなのがあって、フィードバックがある
    • launch
  • Video Featured Snippetsの例
    • 理想の質問応答を目指して、動画理解とつなげる
    • Timeline
      • 2016/4 簡単なデモ作成, 評価方法を決める
      • 2016/7 動画解析のパイプライン, 検索システムの中に動画の解析結果?
      • 2016/9 動画の責任者とUX, UI評価、実装、評価方法の改良
      • 2017/1 セキュリティ、バグ、遅延の検証や調整
      • 2017/4 Launch

Answers to FAQs

  • Q. What do you like most working at Google?
    • 人それぞれだけど、
      • 今までにない課題解決ができるという立場にあること/解決した課題のimpactが大きい/挑戦しやすい
      • 周りが賢いのでストレスが少ない, など
  • Q. How much autonomy do you have in development?
    • 裁量はかなりある。各々のエンジニアを信じているというスタンス。
  • Q. What's the relationships with engineer in other offices?
    • 対等。プロジェクトによって色々変わる。
  • Q. Do you visit HQ?
    • 人それぞれ。5,6回/年ぐらい?
  • Q. What are the background of engineering in the search team?
    • IR(Information Retrieval), NLPが多いけど、最近色々増えてきた?
  • Q. Are you working on localization?
    • Internationalizationのほうがある
    • 日本にフォーカスするのはレア
    • 日本だけの機能をやっている人はいない
  • Q. How do you set the missions and goals?
    • 正しい問題をみつけることが大事
    • MethodとしてOKRは使ったり、使わなかったり、チームによる...
    • Bottom upのカルチャーを大事にしている
  • Q. What do you think is important for engineering?
    • コーティングやフルスタックなのはスタートライン
    • 答えが分からない問題へ取り組めて、分析してロジカルに思考して解決するのか、そのために手を動かせるかが大切らしい
    • Googleで成功している人は
      • 問題を解きながらコアの問題を探しているひと
      • 視野が広くて、気づいてすぐに言える人
  • Q. Does my programming contest skill matter?
    • 重要だけど、支配項でない
  • Q. Any tips to help people more productive?
    • (私達も知りたいと...)
    • motivationが大切、本人がやりたいかどうかが大事な気がする、その人が何をすると楽しいか? その嗜好をパズルゲーム的に組み合わせる
    • 自由を与えると素晴らしい成果をだす?
  • Q. What are the examples of 20% time?
    • そもそも勤務時間把握してないから20%とは限らない。プロジェクトに近いことから、本当に関係ないことまで
    • Google homeのラジオを聴く機能を足した
    • 社内の他のチームを助けるとかもある
      • 例, 秘書さんがよく使うカレンダーのプラグインを直してとても感謝されてるとか
    • ダイバーシティ問題への取り組みとかも

Interactive Sessions with Tech Leads / Engineers

※ 「Interactive Sessions」では議論を活発にするために3つに分ける。それぞれ20分ぐらい。
※ 以下はインタラクティブセッションで忙しかったので、自分の気になるところだけメモ

Search Quality: Featured Snippets, Titles & Snippets, Video Ranking

  • Topics
    • Featured snippet
    • Result preview, Snippet detection
      • サイト内の構造とか表示するやつとか
    • Video Understanding in search
      • Q. Video UnderstandingのTokyoにチームがある? 世界にも複数あってその1つ?
        • Video Understandingに関しては、画像検索等の研究チームがあって、そういうところが論文を書くのが多い。検索に絡ませる側はあまりない。(Tokyoチームともう1つぐらい?)

Search Feature: Google Search App on iOS (Photo Search, webview, etc.) and Web Ecosystem

  • Topics
    • Google Search App on iOS
      • 日本風の検索から着想?
    • Web lite
      • Webサイトを圧縮して、Userのアクセスを早くしよう、軽くしようという取り組み
      • 法律で禁止されている国もある。なので、この機能は、ユーザや管理者がコントロールできるようになっている。
    • Web content ecosystem effort
      • Web自体を良くしたい
      • 「Navlekha」というプロジェクト
        • インドだとWeb contents自体が少ないので、書物など物理のコンテンツとかをWebへupし、コンテンツ量を増やす
        • Navlekha

Assistant: Language Understanding, Core Features

  • Topics
    • Google Assistant
    • 東京はどんなことしてる?
      • Language understanding, internationalization
      • 個々の機能, assistant features
      • Assistant for japan

Closing & Networking

大きな食堂でご飯を食べながら、他の参加者、社員さんとお話

お土産

f:id:myaun:20190224211356j:plain

*1:資料等は公開されていないので私的なメモベースのレポートなので、内容のズレとかあるかもですが勘弁

*2:2019/03/01にEnglish verが開催される予定

*3:年越し前に自分のYouTubeの視聴履歴を解析したよ【Python】

*4:写真や動画はダメ!メモはOK!なので、テキストのみ。各セッション名前はイベントページのものです。当日は微妙に違ったかも

*5:数値とか間違ってるかも

「犯罪捜査のためのテキストマイニング」読みました

読んだ本

どんな本

  • 近年増加しているインターネット上が舞台となる犯罪(2012年の「パソコン遠隔操作事件」など)に計量文体分析で挑むために、調査研究してきた著者らがその有効性について解説する。
  • 紹介する手法は、犯罪捜査のためのテキストマイニング技術の応用
    • 書き手を特定する「著者識別」
    • 書き手の性別や年齢層を推定する「著者プロファイリング」
    • など...
  • 手法の解説では、PCA, SVM, ランダムフォレストなども紹介されているが、数式は非常に少なく、身近な実例を多く用いて説明しているので、数学などの背景知識がほとんど無くても読める。

所感

私自身、特定のドメインにおいて自然言語処理の技術を応用していることに興味があったので本書を読みました。 本書は期待通り、文体分析手法等による沢山の調査研究が行われており、「実際に事件で用いられた文章での著者識別」「性別を偽装した文章の文体的特徴の変化」「殺人事件の犯罪動機の分類」など具体的な内容が多くて面白かった。*1 あと単純に、国内国外におけるサイバー犯罪の歴史や近年の動向についても詳しいので読み物として楽しめました。

以下、印象に残っている部分やメモってたことをたらたら書きます。

  • 本書の目的として、捜査機関・法曹関係者・裁判員になりうる一般市民への(計量的文体分析の)周知みたいなことを書いていて、確かにと思った。
  • 2016年に著者識別に関する判定書が裁判所に採用されたらしい。(一方で、まだ活用は数えるほどらしいが)
  • 今まで、文章の内容に注目する「名詞」「動詞」「形容詞」を主に扱う解析をすることが多かったので、文章中に現れる著者の癖などに注目する文体的特徴は新鮮で面白かった。(「読点の前に使う単語の頻度」とかへぇ〜ってなった)
  • 殺人動機の分類は面白かった、けど悲しいので分析結果が犯罪抑止につながるといいな〜って思う
  • 多くの調査、分析例があって、著書のドメイン(犯罪調査)以外であってもNLPの実務応用のアイデアにつながる可能性は大いにあると思った

*1:こういうnlp系の応用話すごい好きなのでおすすめ本あれば読みたい

ツイートで見る「けやき坂46→日向坂46」

はじめに

本日 2019/02/11、14:00より配信されたSHOWROOM「ひらがなからのおしらせ」にて、けやき坂46ひらがなけやき)が日向坂46へ改名されるなど、様々な発表がありました。 *1

その配信中および配信後のTwitter上でのファンの反応を解析しました。

Twitter上のの感想まとめ

ハッシュタグ「#日向坂46」が付いているツイートからワードクラウドを作成しました。 *2

f:id:myaun:20190211201806p:plain

「日向坂」「改名」「シングル」などこれを見るだけで、今回の発表が振り返れそうです。

もう少しファンの感想に注目してみたかったので、「形容詞」だけを対象として同様のワードクラウドを作成しました。

f:id:myaun:20190211202441p:plain

「嬉しい」「おめでたい」などポジティブな感想が多く、ハッピーオーラが溢れております。
一方で、ひらがなけやきの名前に愛着があり「寂しい」などの意見もあるようです。

SHOWROOM配信中(+α)のツイート数グラフ

今回の発表に伴い、「日向坂46」「けやき坂46」「シングルデビュー」などの関連するキーワードがトレンド入りしました。 配信中のツイート数のグラフを見て、発表を振り返ります。

緑色が「#けやき坂46」のツイート数、水色が「#日向坂46」のツイート数の推移です。 *3

f:id:myaun:20190211210112p:plain

幸せな発表ばかりで、盛り上がっていました。 発表、SHOWROOMや公式サイトへの感想がすごい勢いでした。 この後も、遅れて知ったファンのツイートなど勢いが長く続いており、リツイート無しでも1万を超えるツイート数です。

終わりに

空色綺麗。好き。 公式サイトも好き。

www.hinatazaka46.com

*1:本発表が意味不明(欅坂?, けやき坂?, 日向坂?)という方は、日向坂46とは?を読むよと良いです。

*2:※ 日向坂46への改名直後から約1時間のツイートが対象

*3:リツイート数は含んでいません。ツイッタートレンドはたぶんリツイート数も含んでいます。

ツイートデータと見る坂道冠番組 2019/02/04【乃木中、けやかけ、がな推し】

はじめに

乃木坂46欅坂46けやき坂46冠番組へのツイートを使って簡単な解析をしました。

  • 番組のオンエア中に投稿されたツイートデータを収集しました。
  • ハッシュタグ "#乃木坂工事中", "#欅って書けない", "#ひらがな推し"が付与されたツイートを対象としました。
  • RTは対象としておらず、ツイート数等にに含んでいません。

乃木坂工事中 #192 (2019/02/04 00:00 ~ 00:30)

総ツイート数: 24604

f:id:myaun:20190205002900p:plain

欅って書けない #166 (2019/02/04 00:35 ~ 01:05)

総ツイート数: 8033

f:id:myaun:20190205002928p:plain

ひらがな推し #42 (2019/02/04 01:05 ~ 01:35)

総ツイート数: 8798

f:id:myaun:20190205002944p:plain

乃木坂46・欅坂46・けやき坂46のブログから単語分散表現を学習

1. はじめに

特定ドメインのテキストから単語分散表現を学習することに興味があったので実験しました。

今回実施した内容

  • 乃木坂46欅坂46けやき坂46のブログを収集してテキストへ前処理をする
  • fastTextにより収集したブログのテキストから単語分散表現を学習する
  • 学習した単語分散表現による類似単語の検索や2次元空間へのプロットの結果を確認する

2. 単語分散表現とは

単語分散表現は、文書から学習される単語の意味を表すベクトルです。 学習されたベクトルが「“King” – “Man” + “Woman” = “Queen”」のような足し算、引き算ができることで話題になりました。 この話題になったミコロフの論文が発表されたのは2013年でした。そこから早6年、学術領域でその方法論や応用が盛んに議論されております。*1

fastText

今回採用したfastTextは、Facebookにより提案された分散表現の学習手法の1つです。 こちらの手法は、Subword modelというモデルを組み込むことにより、出現単語の文脈のみでな字面の類似性を考慮することを可能とします。 *2

以下の記事の解説がとても分かりやすいです。

3. Fasttextによる学習

実装コード

言語: Python
使用ライブラリ: Mecab, gensim, neologdnなど
GitHubリポジトリ: github.com

3-1. 学習データについて

収集した記事について

使用した記事数は以下の通りです。

ブログの収集方法はこちらの記事の通りです。

qiita.com

前処理

上の処理を順番に実施しました。詳細はコードで確認できます。
ただこちらにも書いていますが、良い方法である自信はありません。

3-2. 学習方法

gensimを使って以下のよう学習しました。

# learn fasttext

from gensim.models import FastText

model = FastText(size=100, sg=1, workers=4, window=10, min_count=10)
model.build_vocab(sentences)
model.train(sentences, total_examples=model.corpus_count, epochs=model.epochs)

パラメータはかなり適当です。

3-3. 学習した単語分散表現の確認

類似単語の検索

学習した分散表現が類似する単語を探索すると、下のような結果になりました。

model.wv.most_similar("てち")
---
[('友梨奈', 0.7058396935462952),
 ('平手友梨奈', 0.6936807036399841),
 ('平手', 0.6837375164031982),
 ('波布茶', 0.6804182529449463),
 ('ゆう', 0.6743236780166626),
 ('ネル', 0.6728752255439758),
 ('鈴本', 0.6586591005325317),
 ('理佐', 0.645741879940033),
 ('まなか', 0.6427689790725708),
 ('あかね', 0.6317785978317261)]

model.wv.most_similar("キャプテン")
---
[('キャプ', 0.7702136039733887),
 ('暫定', 0.6804853677749634),
 ('就任', 0.6307018399238586),
 ('正式', 0.6078504323959351),
 ('れいか', 0.6019401550292969),
 ('桜井', 0.557970404624939),
 ('大役', 0.5572315454483032),
 ('任命', 0.5523629188537598),
 ('責任感', 0.5509008169174194),
 ('頼り', 0.5480058193206787)]

model.wv.most_similar("佐々木久美")
---
[('佐々木希', 0.7091835737228394),
 ('加藤史帆', 0.6711205244064331),
 ('東村', 0.644331693649292),
 ('佐々木', 0.6436366438865662),
 ('柿崎芽実', 0.6401069760322571),
 ('東村芽依', 0.639634907245636),
 ('佐々木美玲', 0.6213143467903137),
 ('久美', 0.6100345849990845),
 ('きくちゃん', 0.5945029258728027),
 ('柿崎', 0.5900822281837463)]
  • 「てち」は「平手友梨奈」の愛称であり、「平手」や「友梨奈」と共に上位に含まれている。
  • 「キャプテン」のことを乃木坂メンバは同義後として「キャプ」と呼ぶこともある。また、乃木坂46のキャプテンである桜井玲香を表す「桜井」「れいか」が含まれている。一方で、欅坂46, けやき坂46のキャプテンは含まれていなかった。
  • 「佐々木久美」の愛称「久美」「きくちゃん」が含まれいる。「佐々木希」は字面の類似性に引っ張られたと思われる。

メンバおよび番組MCを2次元空間へプロット

以下の図は、各人物名の分散表現をTSNEにより2次元へ次元削減したものです。

f:id:myaun:20190204182535p:plain

  • 各グループ毎と番組MCにうまく分離されており、分散表現がそれぞれの所属グループの情報を含んでいることが確認できる。
    • また、乃木坂46の1, 2, 3期やけやき坂の1, 2期もうまく分かれている

4. 終わりに

確認方法は、人物名など特定の単語のみでしたが、それなりにうまく学習できたかなという風に考えています。

ただ、やっていていこれでいいのかなと思うところもいくつかありました。

気になった点

  • 前処理について

    • 上述のように学習前のテキストへ前処理を行いましたが、やり方は自信が無いです。調査不足ではありますが、日本語の分散表現の学習で前処理がどの程度必要なのかが分かりませんでした。いくつかの記事では日本語Wikipediaから学習するとき、分かち書きだけしたもので学習してたようでしたが、それはWikipediaがある程度綺麗な文書だからなのか?など、結構疑問がありました。
  • 学習時のパラメータについて

    • これらは評価指標を定義して、ある程度実験的に探索する必要があるとは思いますが、今回のような特定ドメインに対して実施するときのコツとかあれば知りたい。
    • 次元数と考慮するサブワードの範囲が最も重要であるとFasttextのドキュメントに書かれていました。
      • fasttext.cc
      • The most important parameters of the model are its dimension and the range of size for the subwords. The dimension (dim) controls the size of the vectors, the larger they are the more information they can capture but requires more data to be learned. But, if they are too large, they are harder and slower to train. By default, we use 100 dimensions, but any value in the 100-300 range is as popular. The subwords are all the substrings contained in a word between the minimum size (minn) and the maximal size (maxn)

今後の課題

今後は以下の点を検証したいと思っています。

  • 学習した単語分散表現を応用

    • 学習した分散表現を用いてツイートやブログ記事の特徴量を表現して、分類やクラスタリングなどの応用タスクの実験をしたいと思っています。できれば良い感じの定量評価方法を定義できるものにしたいなと考えています。
  • 学習データの追加

    • 今回使ったブログ記事の数ってデータ量的にどうなんですかね。少なそうかもですが、特定ドメインのための分散表現としては十分だったりするかもと思ったりもしたので検証したいです。
    • 同じドメインのツイートデータ等は収集可能なのですが、ブログに比べて少しノイジーな感じがするので、一緒に学習しても大丈夫か試してみたいです。
  • 他の学習方法との比較

    • 記事が長くなりすぎるのが嫌だったので(定量的な比較もできないし)、本記事では行いませんでしたがword2vec(cbow, skip-gram)やGloveなど代表的な方法と比較してみたかったです。
    • また、以下の記事でも紹介されているSCDV(Sparse Composite Document Vectors)も試したいと思っています。上述の応用の精度向上に貢献しそうな気がします。文書ベクトルの算出に「ソフトクラスタリングに基づく単語のトピック」と「TFIDFにおけるIDF値」を考慮することがメインコンセプト?
    • qiita.com

*1:先日話題になっていたMLタスクの論文・コードがまとめられたサイトpaperswithcodeでは「179 papers with code」が登録されていました。

*2:日本語の分散表現を学習している記事がいくつかあり、その辺も安心感があったのでこちらを採用しました。