2016/03/17にPFIセミナーで話したスライドです。子供の言語獲得に関する非常に基本的な話と、関係しそうな機械学習の技術を紹介しました。素人なりのまとめなので、間違いなどご指摘いただけると助かります。Read less

はじめに 本記事はあなたの文章に合った「いらすとや」画像をレコメンド♪シリーズの第2回、アルゴリズム解説編です。 文章を与えると、それに近い意味を持った「いらすとや」画像を探してレコメンドしてくれるアプリのアルゴリズムについて解説します。 機能概要は第1回、あなたの文章に合った「いらすとや」画像をレコメンド♪(機能概要編)をご参照ください。 アルゴリズムの概要 本アプリの基本的なアイディアは次のとおりです。 与えられた文や画像の説明文を、それぞれ文の分散表現(つまりはベクトル)に変換する。 与えられた文と画像の説明文の意味の近さを、それぞれの文の分散表現を使って計算する(意味の近さ = 2つのベクトルのなす角の小ささ = コサイン類似度の大きさとする)。 コサイン類似度が大きい説明文を持つ画像トップN個を選ぶことで、与えられた文と意味が近い画像を発見できる。 模式図にすると、次のようになり
SCDVのコードはGithubで公開されている(https://github.com/dheeraj7596/SCDV )ほか、ベンチマークとなるデータセットに対する適用方法がそのままあるので、今回のデータセットを使うにあたっては資産をほとんどそのまま使うことができました。python2だった部分をpython3に対応させるのがちょっと手間でしたが... リポジトリ全体はこちら: fufufukakaka/SCDV python3に対応させて20newsgroupを実行しているのがこちら livedoorニュースコーパスで実験しているのがこちら ノートブック、雑にやってしまったので適宜必要なところはコードを貼っていきながら解説します。 まずはword2vecを学習させる+単語ベクトル空間を可視化 まずはword2vecを学習させていきます。livedoorニュースコーパスはテキストファイル
azu/text-map-kuromoji: テキストを形態素解析した結果とテキストの関係をビジュアライズするエディタというツールを作った話。 くだけた表現を高精度に解析するための正規化ルール自動生成手法という論文誌では、「ヵゎぃぃ」,「ゎた Uゎ」みたいな普通の形態素解析では未知語として検出されるものをどうやって正規化していくかという話が書かれていました。 これを読んでいて面白かったのは形態素解析をした結果の未知語となった部分と穴埋め的にパターンを作って、そのパターンにマッチする同じようなテキストを探すというアプローチでした。 プログラミング言語と違って、大抵の自然言語パーサはパース失敗ではなく、単なる未知な言葉として検出されます。 また、その未知な言葉は常に増えていて、さきほどのくだけた表現を高精度に解析するための正規化ルール自動生成手法によると手動では登録できない増加量らしいです。
ポエム判別器 Qiita初投稿です。よろしくお願いします。 Qiitaは主に読む方で使わせていただいているんですが、統計ヤクザとか見たことがあるので、正直コメント貰っても返すの怖いし(twitterで受けつけます)、Qiitaはいいかなって思っていました。 しかし、今回はQiitaそのものを評価の対象とするので、Qiitaに投稿したいと思います。 Qiitaでは、主観や感情が入り乱れる投稿は嫌われる傾向があり、負のイメージを持ってポエムと言われることがあります。 それを機械学習で分類していれければいいね、ということで、やってきます。 手法選択 考えられるメソッド Bag of Wordsなどでlogistic-regression Bag of wordsなどでsvm Bag of wordsなどでxgboost doc2vec, fasttextなどのエンベッディングでテキスト分類 Re
RNNで「てにをは」を校正する 余談 2017/3/19に、どの深層学習フレームワークがこれから深層学習を始める人におすすめなのかというアンケートをtwitterで取らせていただきました。 五位 Theano(個別カウント) はじめに RNNによる文章校正がリクルートによって提案されて以来、調査タスクとして私のものとに来たりして、「できるんでしょう?」とか軽く言われるけど、実際には簡単にはできません。 RNNによる文章生成ができるから、校正もできるというのが人間の自然な発想なのかもしれませんが、英語と日本語の違いに着目した場合、英語がアルファベットのみで構築されるのに比べて日本語は、漢字・ひらがな・カタカナと非常に多く、同じように問題を適応すると、すごい高次元の問題を解くこととなり、理想的なパフォーマンスになかなかなりません。 まぁ、あんまり完成してるわけでない技術を完成したようにプレスリ
最近の機械学習&自然言語処理に関する情報をまとめるコーナーです。前回はこちら。このエントリ忘れてるよというのがありましたら、たれこみフォームから教えてもらえるとうれしいです。 論文 ブログ/勉強会資料 ビジネス 学会/勉強会 NIPS読み会 Kaggle Tokyo Meetup #2 全脳アーキテクチャ若手の会 AAAI2017 その他 論文 [1701.07875] Wasserstein GAN GANを含む生成系のタスクは難しいことが知られているが、学習時に使う距離をWasserstein距離というものを使うと学習が安定したという話 ブログ/勉強会資料 論文メモ: Linguistic Benchmarks of Online News Article Quality - skozawa's blog オンラインニュースの質を測れるかを検討した論文のメモ Using Machine
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? どうも、文字列大好き @hdbn です。「文字列アルゴリズム Advent Calendar 2016」 には間に合いませんでしたが、1月10日は「糸 (string) の日」ということで文字列 (string) アルゴリズムの記事を書くことにしました。この記事では文字列照合アルゴリズムの中で最も美しいアルゴリズムの1つである Crochemore-Perrin のアルゴリズムを紹介します。 アルゴリズムの正しさの証明はほぼ元の論文をなぞっていますが、説明を簡単にするために計算量に影響を与えない範囲でオリジナルのアルゴリズムから少し変更
文字列マッチングを行うためのアルゴリズムとして、Suffix Trieを使った探索というものがある。これはテキストからSuffix Trieという構造を作り、パターンをつかってそれを辿ることで、パターンの長さmに対して、O(m)の計算量で探索できるものである。 今回はJavaでSuffix Trieを使った探索をしてみた。 トライ木とパトリシア 先にトライ木とパトリシアについて紹介。 今回Suffix Trieという構造を調べていると、同じような構造としてSuffix Treeというものが出てきて混乱した。よく調べてみると、Suffixの集合をトライ木という構造で実装したものがSuffix Trieで、パトリシアという構造で実装したものがSuffix Treeらしい。 トライ木はnodeを連結していって、その枝に1文字を割り当てて辿れるようにした構造。トライ木は枝に1文字しか割り当てない構
これは Competitive Programming Advent calendar 2016 その2 12月4日の記事として投稿します😊✨ はじめに はじめまして、こんにちは。@54k3yです。 競技プログラミングで使えそうな文字列アルゴリズムというタイトルですが、競プロ以外でも使えそうなものばかりで、どなたでも楽しんでいただけると思います。頑張って書きました、ぜひぜひ最後まで読んでください( *´艸`) かんたんな部分文字列検索 ナイーブな方法 まずはBrute Force、パターン一致が見つかるまで1文字ずつすべて調べあげていく方法です。目視で部分文字列を探すとき多くの人はこの方法をとっているのではないでしょうか?アルゴリズムというか力技です、実際にみてみましょう。 文字列 S="abracatabra" から パターン P="aca"を検索します。 *文字列Sの比較開始場所は必
この教科書は、はてなサマーインターンの講義資料として作成されたものです: https://github.com/hatena/Hatena-Textbook この章では機械学習について、Webサービスの開発で必要とされる知識を中心に、とくに自然言語処理にフォーカスしながら解説します。 Webサービス開発と機械学習 実現困難な機能の例 闇雲な実装 もう少しましな実装 機械学習によるパラメータ決定 分類問題のための機械学習手法 パーセプトロン 判別アルゴリズム 学習アルゴリズム 特徴量のとり方 形態素解析 量をともなう特徴 組み合わせ特徴量 モデル 機械学習の種類 教師あり学習 分類 (質的変数の予測) 回帰 (量的変数の予測) 教師あり学習でのデータセット 教師なし学習 クラスタリング 次元削減(次元圧縮) 頻出パターンマイニング 異常値検出 アルゴリズムの評価 訓練データとテストデータ 学
この教科書は、はてなサマーインターンの講義資料として作成されたものです: https://github.com/hatena/Hatena-Textbook 機械学習編1(基礎編)では、最も初歩的な分類器である単純パーセプトロンを題材に、機械学習の基本について勉強しました。機械学習編2(実用編)では、実問題に機械学習を適用する上でのコツや、各種の機械学習アルゴリズムの使い分け、高次元データへの対処法、といったトピックについて解説していきます。 実問題に機械学習を適用する タスクを定義する データを特徴ベクトルに変換する 評価方法を決める 正解データの正例と負例は均等に ベースラインとなる手法を実装する 実データに向き合うときの心構え 機械学習のワークフロー 1. 前処理 データセット作成 サンプリング 特徴抽出 欠損値・欠測値への対応 値のスケーリング 特徴選択 次元削減 2. 学習 モデ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? CS224d(自然言語処理のための深層学習)はスタンフォード大のRichard Socherが2015年から教えている講義で、動画やスライドなどの講義資料と演習問題がウェブ上で無料で公開されています。 [CS224d: Deep Learning for Natural Language Processing] (http://cs224d.stanford.edu/) 会社の勉強会で週1回半年程度かけて講義動画と演習を終えたため、勉強したことを簡単にまとめてみたいと思います。 なぜ今なのか? 深層学習(Deep Learning)は2
[VOLUME WARNING] This is what happens when you throw raw audio (which happens to be a cute voice) into a neural network and then tell it to spit out what it's learned. This is a recurrent neural network (LSTM type) with 3 layers of 680 neurons each, trying to find patterns in audio and reproduce them as well as it can. It's not a particularly big network considering the complexity and size of the
先日、工藤さんがJavaScript向けに作った日本語のコンパクトな分かち書きツール、TinySegmenterをJuliaに移植したTinySegmenter.jlを作りました。 もともとは、PyconJPでjanomeの話を聞いたら居ても立っても居られなくなって、簡単なTinySegmenterを移植したんですが、そしたら思いもよらぬ展開が待っていました。 [2015/10/22 23:38 追記] 計測の問題を @repeatedly さんから指摘いただいたので再計測しました。 パッケージ登録時にMITの先生からツッコミが入る JuliaのパッケージはMETADATA.jlというセントラルなレポジトリで管理されています。 ここに登録されたパッケージはPkg.add("TinySegmenter")とREPLで実行するだけでパッケージが導入できます。*1 ここに登録をしようとした時に、
最近、「機械学習」や「自然言語処理」、といったキーワードを聞くことが多くなってきていると思います。 反面、すごそうだけどなんだか難しいもの、というイメージもあるのではないかと思います。そこで、今回は「自然言語処理」の一種であるトピックモデルを取り上げ、その仕組みを紹介するとともに、その実装方法について解説していきたいと思います。 (「機械学習」の方については、以前開催した勉強会の資料がありますので、興味があればそちらもご参照ください。) トピックモデルとは トピックモデルは、確率モデルの一種になります。つまり、何かが「出現する確率」を推定しているわけです。 トピックモデルが推定しているのは、文章中の「単語が出現する確率」になります。これをうまく推定することができれば、似たような単語が出てくる文章(=似たようなモデルの文書)が把握でき、ニュース記事などのカテゴリ分類を行ったりすることができま
文書をグループ分けしたい ネット上やDBの中にある文書をグループ分けしておいて、新しい文書が現れたときにそれが既存のどのグループに属しているか判断したい場合があります。 今回はApache Sparkを使って文章から取得できる TF-IDF を用いた K-means クラスタリングを実行し、分類を行ってみました。 クラスタリング 入力ベクトルのみから類似したベクトルのグループを見出すような機械学習の手法をクラスタリングと呼びます。 例えば、2次元 x-y 平面上における以下のようなデータ・セットがあった場合には クラスタリングによって以下の様なグループ分けがなされると期待されます。 通常、訓練データ中の入力ベクトルに対応した目標ベクトルがあるような手法は教師あり機械学習と呼ばれますが、今回扱う K-means クラスタリングについては目標ベクトルがありません。そのため、教師なし機械学習とも
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く