FastText:テキストデータの特徴量抽出の実装(2/2)まとめ

  • 2019.02.16
  • AI
FastText:テキストデータの特徴量抽出の実装(2/2)まとめ

1.FastText:テキストデータの特徴量抽出の実装(2/2)まとめ

・FastTextでembeddingを作成した後は単語間の類似性や仲間外れを計算する事が出来る
・聖書内の単語に関する類似性や関連性は上手に捉える事が出来ている
・単語の特性を数字で計算する事ができるのはやはり面白い

2.単語間の類似性や仲間外れの単語を見つける

以下、www.kdnuggets.comより「Implementing Deep Learning Methods and Feature Engineering for Text Data: FastText」の意訳です。元記事の投稿は2018年5月、Dipanjan Sarkarさんによる投稿です。前編の方にコードを張り付けてあります

単語のembeddingを表示するには、次のようにモデルに単語を使って配列にアクセスするだけです。

ft_model.wv[‘jesus’]

array([-0.23493268, 0.14237943, 0.35635167, 0.34680951,
0.09342121,…, -0.15021783, -0.08518736, -0.28278247,
-0.19060139], dtype=float32)

これらのembeddingがあれば、私たちはいくつかの興味深い自然言語の演算を実行できます。
そのうちの1つは、異なる単語間の類似性を見つけることです。

print(ft_model.wv.similarity(w1=’god’, w2=’satan’))
print(ft_model.wv.similarity(w1=’god’, w2=’jesus’))

Output
——
0.333260876685
0.698824900473

私たちの聖書コーパスのテキストに基づくと、「god(神)」は「satan(悪魔)」よりも「jesus(イエス)」とより類似性が高い事がわかります。 かなり関連性がありますね!

単語のembeddingを使えば、次のように多数の単語から仲間外れの単語を見つける事さえできます。

st1 = “god jesus satan john”
print(‘Odd one out for [‘,st1, ‘]:’,
ft_model.wv.doesnt_match(st1.split()))

st2 = “john peter james judas”
print(‘Odd one out for [‘,st2, ‘]:’,
ft_model.wv.doesnt_match(st2.split()))

Output
——
Odd one out for [ god jesus satan john ]: satan
Odd one out for [ john peter james judas ]: judas

訳注:god(神)、jesus(イエス)、satan(サタン)、john(ヨハネ:聖書ではイエスの弟子である使徒ヨハネとイエスに洗礼をさずけた洗礼者ヨハネが有名で、johnだけだとどちらかわかりません)の中で仲間外れはsatanです。

john(ヨハネ)、peter(ペトロ:イエスの最初の弟子)、james(ヤコブ:こちらもイスラエルの始祖ヤコブと更にイエスの弟子にヤコブが二人います。前者は旧約聖書でJacobと表記されるので違うとしても、新約聖書ではjamesと表記される後者の2人はどちらかわかりません)、judas(ユダ:イエスの弟子でイエスを裏切った事で有名です)の中で仲間外れはjudasです。

仲間外れの事例も関連性を捉える事ができている興味深い結果ですね!

まとめ
これらの例は、ディープラーニングによる言語モデルを利用してテキストデータから特徴を抽出し、単語の意味、文脈、疎行列データなどの問題に対処するための、より新しく効率的な戦略に関する優れたアイデアを提供するはずです。次のSTEPは、画像データの特徴量エンジニアリングにディープラーニングモデルを活用するための詳細な戦略です。 乞うご期待!

連続する数値データの特徴量エンジニアリング戦略について読むには、この連載の第1回をチェックしてください。

カテゴリデータの特徴量エンジニアリング戦略について読むには、この連載の第2回をチェックしてください。

非構造化テキストデータのための伝統的な特徴量エンジニアリング戦略について読むには、この連載の第3回をチェックしてください。

この記事で使用されているすべてのコードとデータセットは、私のGitHubからアクセスできます。コードはJupyterノートブックとしても利用可能です。

明示的に引用しない限り、図表は私の著作物です。それらを自由に使ってください、しかしあなたがあなた自身の仕事の中でそれらを使用したいなら、ソースを引用することを忘れないでください。私の記事やデータサイエンス全般についての意見、コメント、興味深い洞察がありましたら、私のLinkedInソーシャルメディアチャンネルで私に連絡してください。

Dipanjan Sarkarは、Intelのデータサイエンティスト、作家、Springboardのメンター、ライター、そしてスポーツおよびホームコメディドラマが大好きです。

FastText:テキストデータの特徴量抽出の実装(1/2)からの続きです)

3.FastText:テキストデータの特徴量抽出の実装(2/2)関連リンク

1)www.kdnuggets.com
Implementing Deep Learning Methods and Feature Engineering for Text Data: FastText

2)towardsdatascience.com

Understanding Feature Engineering (Part 1) — Continuous Numeric Data

Understanding Feature Engineering (Part 2) — Categorical Data

Understanding Feature Engineering (Part 3) — Traditional Methods for Text Data