タグ

機械学習とNLPに関するshikimihuaweiのブックマーク (15)

  • [Python]文書分類における文書ベクトル表現手法の精度比較 - Qiita

    TL; DR 日語文書分類タスクを機械学習で解くとき、下記の文書ベクトル表現手法ごとの精度を比較しました。 Github: https://github.com/nekoumei/Comparison-DocClassification/tree/master/src ※最近のGithub、jupyter notebookのレンダリングがよく失敗するのでnbviewerも貼っておきます https://nbviewer.jupyter.org/github/nekoumei/Comparison-DocClassification/tree/master/src/ Bag of Words TF-IDF Word2Vecの平均値 Doc2Vec SCDV SWEM 結論としては下記の3点です。 問題によるので銀の弾丸はない(あたりまえ) BoW, TF-IDFのような古典的手法も案外悪く

    [Python]文書分類における文書ベクトル表現手法の精度比較 - Qiita
  • Flairを使ってSWEMによる文章埋め込みを計算する

    概要 Flairは、Pytorchで書かれた自然言語処理用のフレームワークです。固有表現抽出や品詞タグ付け、文章分類などの機能を提供しているほか、文章埋め込み (Sentence Embedding) も簡単に計算することができます。以前にブログで紹介したSWEMも扱うことができたので、ここで使い方を紹介したいと思います。 記事:SWEM: 単語埋め込みのみを使うシンプルな文章埋め込み - Out-of-the-box 方法 単語ベクトルの読み込み まずFlairで学習済みの単語埋め込みベクトルを読み込みます。あらかじめ学習済み単語ベクトルのファイルを用意しておく必要はなく、以下のコードを初めて動かす際に自動でウェブからダウンロードされます。日語の場合は、fastTextが提供しているja-wiki-fasttext-300d-1Mが選択されます。 from flair.embeddi

    Flairを使ってSWEMによる文章埋め込みを計算する
  • SWEM: 単語埋め込みのみを使うシンプルな文章埋め込み

    単語埋め込み (Word Embedding) のみを利用して文章埋め込み (Sentence Embedding) を計算するSWEM (Simple Word-Embedding-based Methods) を実装しました。 概要 文章に対する固定次元の分散表現を得る手法としては、doc2vecやSkip-thoughts、テキスト間の含意関係を学習することで分散表現を得るinfersent、最近では強力な言語モデルとなったBERTといった方法があります。これらの手法は、単語ベクトルに加えて文章ベクトルを得るためのニューラルネットワーク自体を、大規模コーパスから学習させる必要があります。 そこで、より単純ながらも後続タスクへの精度がでる文章埋め込みの計算方法として、追加学習やパラメータチューニングを必要とせず単語埋め込みだけを利用するSWEMが提案されました。これはACL2018 “

    SWEM: 単語埋め込みのみを使うシンプルな文章埋め込み
  • 自然言語処理でBERTまでの流れを簡単に紹介 - moriyamaのエンジニアリング備忘録

    はじめまして@vimmodeです。普段はMNTSQというリーガルテックの会社で自然言語処理をしています。今回はBERTとBERTまでの流れを簡単に紹介します。 自然言語処理で今やデファクトスタンダードとなりつつであるBERT。登場当時はモデルの複雑さに伴う計算環境や計算リソースの確保が難しく気軽に動かせなかったが、ColabやKaggleカーネル環境が整備されたきたおかげで誰でも気軽に使えるようになりました。 また、haggingface社が公開したBERTと関連モデルのラッパーライブラリであるtransformersによりわずか10行程度でBERTモデルを記述できます。 一方、自然言語処理を始めて間もない段階でいきなりBERTを突きつけられても理解の壁が高いと思いますので、今回は数式やコードを使わずにBERTに至るまでの流れを簡単に紹介したいと思います。 ※これらはあくまで私の理解であり

    自然言語処理でBERTまでの流れを簡単に紹介 - moriyamaのエンジニアリング備忘録
  • BERTおよびWord2Vecで文の類似性を確認する

    BERTおよびWord2Vecで文の類似性を確認する TL;DR 文の類似性を確認する方法としてBERTとWord2Vecを比較します。 文全体の類似性ではなくトークン単位での比較です。 BERTとWord2Vecによるベクトル化にはtext-vectorianを使用します。 ソースコード from text_vectorian import SpBertVectorian tokenizer_filename = '../bert-japanese/model/wiki-ja.model' vectorizer_filename = '../bert-japanese/model/model.ckpt-1400000' bert_vectorian = SpBertVectorian( tokenizer_filename=tokenizer_filename, vectorizer_f

  • うわっ…私の言語モデル、古すぎ…? | 株式会社AI Shift

    こんにちは、AIチームの戸田です 今回は去年Google検索に導入されたことでも話題になったBERTを使った比較実験の記事を書かせていただきます というのも昨年発表報告を書かせていただいた第10回対話シンポジウム、参加して特に印象に残ったことの一つとして、文章をベクトルに変換するモデルとして BERT^1 を使用するのが当たり前になっていたことがあります 私が遅れているだけなのかもしれませんが、とりあえず文章をベクトル化するときはBERTという雰囲気で、Word2Vecで得られた単語ベクトルをコネコネ…とやっているのは(おそらく)今回の会議では私達だけだったと思います BERTはファインチューニングにより自然言語処理の多くのタスクでState of the artを達成しましたが、単純な文書ベクトル抽出器としての能力はどうなんでしょうか? 私は手軽に文章の分散表現を得る方法としてWord2

    うわっ…私の言語モデル、古すぎ…? | 株式会社AI Shift
  • bert as service のベクトル表現を用いて文書分類メモ - ココアのお勉強ブログ

    語BERTで文表現ベクトルを得る環境を作る 日語BERTによってベクトルを出せるようにする 以下の記事の通りに、日語BERTによって文表現ベクトルを計算するサーバーを作ります。 https://qiita.com/shimaokasonse/items/97d971cd4a65eee43735 ※Google Colabolatoryでやる場合は !pip install bert-serving-client !pip install -U bert-serving-server[http] !nohup bert-serving-start -model_dir=./bert-jp/ > out.file 2>&1 & from bert_serving.client import BertClient bc = BertClient() としないと動かないです。 以上でber

    bert as service のベクトル表現を用いて文書分類メモ - ココアのお勉強ブログ
  • bert-as-service 日本語テキストのベクトル化サーバー構築

    感情分析、テキスト分類など、多くのNLPアプリケーションで必要な処理として「テキストのエンコード/埋め込み」があります。 とある案件で約100万件/日のメールのテキスト分類タスクがあり、「テキストのエンコード/埋め込み」=「メール文の固定長ベクトル化」をするため手法調査とサービス運用を視野にいれた環境構築をためしました。 おおよそ求めているのはこの辺りを満たすもの☟ ・公開されている学習済みモデルを利用できる。 将来の運用にてモデルのfine-tuningは想定。初期ではモデルをゼロからトレーニングすることはしません。 ・メール文というそれなりに長い文章&複数文で構成されるテキストに対応する。 単語レベルの埋め込み表現でなく、文章コンテキストを表現します。 ・実際の運用にはベクトル化後に分類タスクが控えており、ベクトル化自体高速な処理で終えたい。 幾つか調査した中で、2018年末に登場

    bert-as-service 日本語テキストのベクトル化サーバー構築
  • ku_bert_japanese - LANGUAGE MEDIA PROCESSING LAB

    BERT日語Pretrainedモデル † 近年提案されたBERTが様々なタスクで精度向上を達成しています。BERTの公式サイトでは英語pretrainedモデルや多言語pretrainedモデルが公開されており、そのモデルを使って対象タスク(例: 評判分析)でfinetuningすることによってそのタスクを高精度に解くことができます。 多言語pretrainedモデルには日語も含まれていますので日語のタスクに多言語pretrainedモデルを利用することも可能ですが、基単位がほぼ文字となっていることは適切ではないと考えます。そこで、入力テキストを形態素解析し、形態素をsubwordに分割したものを基単位とし、日語テキストのみ(Wikipediaを利用)でpretrainingしました。 2022年1月21日追記: このモデルは古くなっています。RoBERTa-base 日

  • pytorchでBERTの日本語学習済みモデルを利用する - 文章埋め込み編

    概要 BERT (Bidirectional Encoder Representations from Transformers) は、NAACL2019で論文が発表される前から大きな注目を浴びていた強力な言語モデルです。これまで提案されてきたELMoやOpenAI-GPTと比較して、双方向コンテキストを同時に学習するモデルを提案し、大規模コーパスを用いた事前学習とタスク固有のfine-tuningを組み合わせることで、各種タスクでSOTAを達成しました。 そのように事前学習によって強力な言語モデルを獲得しているBERTですが、今回は日語の学習済みBERTモデルを利用して、文章埋め込み (Sentence Embedding) を計算してみようと思います。 環境 今回は京都大学の黒橋・河原研究室が公開している「BERT日語Pretrainedモデル」を利用します。 BERT日語Pre

    pytorchでBERTの日本語学習済みモデルを利用する - 文章埋め込み編
  • BERTによる文書分類 | CCT-recruit

    はじめに BERTとは、自然言語処理に使われる汎用言語モデルの名前である。Googleが2018年に発表した(原論文)。このモデルをファインチューニングすることにより、自然言語処理の多くのタスクでSOTA(State Of The Art)が達成されている。今回はこのBERTを用いた文書分類を、既存コードとライブラリを用いて行う。 問題設定 以下の問題を考える。 文書を複数個用意する。各文書はタイトルと文(document)から成る。ここで、文とは文(sentence)の集まりのことである。 文書は複数の分野から集める。 タイトルあるいは文だけからその分野を予測したい。 最初に、タイトルによる分類(タイトル分類)を考える。 タイトル分類の方針 タイトルを1つの文とみなし、これをBERTを用いて1つの多次元ベクトル(文埋め込み:sentence embeddings)に変換する。分野を

  • BERTの単語ベクトルを覗いてみる - Qiita

    Googleが2018年10月に発表し、大いに話題となった自然言語処理モデルBERT。このBERTのモデルから単語ベクトルが抽出できるようなので、色々と調べてみようと思います。 BERTの単語ベクトルの特徴 単語ベクトルといえばWord2Vecですが、Word2Vecの単語ベクトルは、異なる意味の単語でも字面が同じならば全て同じ値になってしまうという欠点があります。 例えば下のような文があった場合、この文の最初の「HP(ヒューレット・パッカード)」と2つ目の「HP(ホームページ)」は別の意味を持つ単語ですが、ベクトルとしては同じになります。 HP社は、2019年11月18日に新製品をHPで発表した。 ところが、BERTの場合は、2つの「HP」のベクトルは異なる値になります。それだけではなく、下の例のような同じ意味の3つの「HP」も、すべて異なるベクトルになります。 HP社は、HP社と、HP

    BERTの単語ベクトルを覗いてみる - Qiita
  • BERTで文章のベクトル表現を得るための環境構築紹介 - Qiita

    BERTが様々な自然言語処理タスクでSOTAを達成し、コミュニティを賑わせたことは記憶に新しいと思います。 同時にBERTの事前学習には時間がかかることが知られていますが、ありがたいことにGoogleや有志の方々が事前学習を行ったBERTモデルを配布しています。 記事ではそんなBERTの恩恵を得るべく、表題のように事前学習済みのBERTを通して文章のベクトル表現を得るための環境作りを紹介します。 私が業務で試した範囲だとBERTのベクトル表現に変更しただけで全てのタスク、特に教師データが少ないタスクでは精度が大きく向上しました。 今までWord2vecやGloVe,fastTextしか知らなかった方は是非試してみてください。 ちなみに記事で紹介する手法の代案としてbert-as-serviceなどもありますが、デプロイが複雑になりやすいことと、何かしらの例外が発生すると固まってしま

    BERTで文章のベクトル表現を得るための環境構築紹介 - Qiita
  • 2019年はBERTとTransformerの年だった | AI専門ニュースメディア AINOW

    著者のManu Suryavansh氏は機械学習エンジニアとしてキャリアを積んだ後、2020年1月からAppleでデータサイエンティストとして勤めています。同氏がMediumに投稿した記事『2019年はBERTとTransformerの年だった』では、近年の自然言語処理の動向がBERTを中心軸としてまとめられています。 TransformerとBERTが発表される以前の自然言語処理モデルでは、時系列データを処理するRNNとその発展形であるLSTMが使われてきました。このLSTMには、構造が複雑になってしまうという欠点がありました。こうしたなか、2017年6月に発表された論文「Attentionこそ必要なすべてのもの」で論じられた言語モデルTransformerとAttentionと呼ばれる手法は、LSTMのような複雑な構造を使わずに高性能を実現したのでその後の言語モデル開発に大きな影響を与

    2019年はBERTとTransformerの年だった | AI専門ニュースメディア AINOW
  • Word2Vec:発明した本人も驚く単語ベクトルの驚異的な力

    Word2Vecとは Word2Vecで演算処理する Word2Vecとニューラルネットワーク Word2Vecの仕組み CBoW Skip-gram Word2Vecを応用することができる分野 レコメンド 機械翻訳 Q&A・チャットボット 感情分析 Word2Vecの弱点 Word2Vecの派生系や類似ツール GloVe WordNet Doc2Vec fastText まとめ 参考 世界中のWebサイトの数は2014年に10億件を超えたようだ。そして、Facebookのユーザー数だけでも16億人を超えている。 そして、そのいずれもコンテンツの中身の大部分はテキストから成り立っていることだろう。 ということは、莫大に増大し続けるネット上のデータのほとんどはどこかの国の言葉だってことだ。世界中の人が毎日テキストデータを生成し続けたことはこれまでの歴史上無かったんじゃないだろうか。 もしそん

    Word2Vec:発明した本人も驚く単語ベクトルの驚異的な力
  • 1