銀座の屋上菜園を耕しています。コンピュータ畑も耕します。この広告は、90日以上更新していないブログに表示しています。2016-09-13Facebookの公開した人工知能fastTextを試してみたスポンサーリンクTweetみなさんこんにちは。最近はセキュリティコンテストCTFにはまっていて国内外の様々なコンテストに手あたり次第参戦しています。団体戦だと大体上位6%〜10%、個人だと上位10%くらいの成績です。2016/8/18にfacebookが新しい人工知能のfastTextを公開したのでとりあえず触ってみました。なんでも今まで5日かかっていた言語処理が10秒で終わるそうです。jp.techcrunch.comfastTextとは何ぞ?fastTextで出来ること主に2つあります。単語をベクトル表現にするとテキストのクラス分けの2つです。テキストのクラス分けは何となく意味が分かるかもしれませんが単語のベクトル表現とはなんぞや?となりますよね。単語をベクトル(数字の組み合わせ)で表すことによってコンピュータがこういう意味なんだなということを把握するために使います。「東京」などの計算ができるようになります。詳しくは下記リンクをご覧ください。今流行りのディープラーニングはベクトルで計算して分類しますので単語がベクトルで表せると都合がよいのです。出来たものをディープラーニングでクラス分けします。流れとしてはベクトル化→分類→推薦といった手順になります。ベクトルが似てるものを分類して商品を推薦するといった形ですね。人工知能fastTextはfacebookがニュースフィードからスパムを分類するために作ったともいわれます。具体的に見てみましょう。githubから該当ソースを落としてビルドします。OSはUbuntu推奨です。30Gくらいあったほうが良いです。makeビルドができたら「fasttext」というシェルが出来てますね。このひとがいろいろやってくれます。単語のベクトル化では最初に単語をベクトル表現してみましょう。InternationalのwikipediaをコピペしたものをUTF-8でテキストにしてmensainternational.txtとして保存しました。辞書ファイルに保存しましょう。mensaこれでmensa.binというファイルが出来ました。skipgramというのは単語をベクトルに変える時の最新のアーキテクチャのことです。ご興味ある方は下記を参照してください。mensainternational.txtこんな感じでコンピュータが認識します。最初からフェースブックが用意してくれている単語のベクタ表現群は下記のコマンドでもらえます。python-numpyでインストールしてください)./word-vector-example.shと打てば勝手に大量のデータを学習してくれます。テキストのクラス分けクラス分けのほうをやってみましょう。facebookが先に用意してくれているサンプル結果は下記のシェルからもらえます。./classification-results.shyelpやyahoo_answerやamazonのレビューをクラス分けしてくれます。amazonのレビューなんかは6割であんまりですがagnewsなんかは非常に高精度で分類できていますね。polarityは評価の平均の3を飛ばして評価が高い4,5と低評価の1,2だけを集めたものでそうすると分類精度が跳ね上がるのは面白いですね。ここでアマゾンのレビューを評価してもらいましょう。単純にテキストにgreat,good,normal,badと書かれたテキストをそれぞれgreat.txt,good,txt,normal.txt,bad.txtとして保存します。評価コマンドは下記のようになります。great.txt(デフォルトではresultフォルダに結果のbinファイルが置かれるちゃんと5段階で評価してくれていますね。それでは実際のamazonレビューをとってきてテキストを評価してもらいましょう。無事評価5のレビューで5をいただきました。評価2のレビューはいかがでしょうか?ちゃんと評価2のクラス分けに分類できてますね。以上になりますこれから人工知能で言語学習してみようとする方には便利な道具になると思います。今のところ大容量のテキストを分類する方は巨大なECサイトを運営しているとか限定されるかもしれません。ネットの知識吸収の順で進んでいこうとしているようですのでいづれ重要な部分を占めるようになると思います。今のうちに少し触っておくとよいかもしれません^^次回はRSA暗号の解読の仕方でも書いてみましょうかね。19:34Facebookの公開した人工知能fastTextを試してみたTweet広告を非表示にする関連記事2016-01-22エンジニアが左うちわPart2。