Ahogrammer

Deep Dive Into NLP, ML and Cloud

2020-01-01から1年間の記事一覧

SageMaker Processingでカスタムイメージを使ってデータを加工する

SageMaker Processingは、データの前処理や後処理、特徴エンジニアリング、モデルの評価といった機械学習のワークロードをSageMaker上で実行するための機能です。SageMaker Processingを使うことで、これらの処理をするためのジョブをコンテナ上で実行するこ…

benchmark関数を使ってデータセットの処理時間の計測と改善に取り組む

TensorFlowには、tf.data.Dataset APIという入力のパイプラインを実現するための強力な機能があります。入力のパイプラインを最適化することで学習全体を高速化できるため、定量的に計測して改善する価値があります。そこで、本記事ではTensorFlow Datasets…

Wikipediaの前処理はもうやめて「Wiki-40B」を使う

最近の自然言語処理では、大規模なテキストから単語の分散表現や言語モデルを学習させて使っています。学習する際のテキストとしては、分量や利用しやすさの都合からWikipediaが選ばれることが多いですが、その前処理は意外と面倒で時間のかかる作業です。そ…

【TensorFlow】StringLookupの使い方

以下のTweetで紹介したTensorFlow Recommendersのコードを見ていたら、StringLookupクラスという見慣れぬクラスを使っていました。あまり紹介している記事を見たことがないので、Tipsとしてどのようなものか紹介します。 TensorFlowで推薦システムを構築する…

GiNZAで解析した依存構造を文節単位で可視化する

自然言語処理において、依存構造解析は多くのアプリケーションに役立つ重要な技術の1つでしょう。たとえば、テキストからさまざまな情報を抽出するシステムやアスペクトベースの評判解析、含意関係認識といった幅広いタスクで役立ちます。日本語で依存構造を…

Universal Sentence Encoderをチューニングして多言語のテキスト分類

「Googleが開発した多言語の埋め込みモデル「LaBSE」を使って多言語のテキスト分類」と題した記事を書いたところ、「Universal Sentence Encoder(以下、USE)と比べてどうなのか?」というコメントを見かけました。そこで、本記事では、多言語の埋め込み表…

Googleが開発した多言語の埋め込みモデル「LaBSE」を使って多言語のテキスト分類

自然言語処理において、テキストをその意味を考慮しつつ固定長のベクトルに変換する埋め込みモデルは重要です。文の意味をよく表現したベクトルを作ることができれば、テキスト分類や情報検索、文類似度など、さまざまなタスクで役立ちます。本記事では、Goo…

Lambdaレイヤーを公開するためのシェルスクリプト

AWS

最近、AWS Lambdaをよく使っているが、その機能の一つとしてLambdaレイヤーがある。レイヤーにパッケージを取り込むことで、複数のLambda関数から使用可能になる。ビジネスロジックを共通化する、ビルドの手間を省く等の恩恵があるが、私的にはデプロイする…

質問応答におけるパッセージ検索 BERT vs BM25

最近、文章を書く機会が少なくなっているので、リハビリがてら以下の論文を紹介しよう。 Investigating the Successes and Failures of BERT for Passage Re-Ranking この論文は、BERTによるパッセージ検索がBM25と比べて、どのような状況で強いのか分析して…

AWS LambdaにGiNZAを載せて、固有表現認識APIを作成する

一週間ほど前、AWS LambdaにElastic File System(EFS)をマウントできる機能が追加されました。この機能を使うことで、マウントしたEFS上への読み書きがLambda関数からできるようになりました。これまではLambdaの制限により、/tmpで使用可能な容量が512MB…

Transformersの事前学習済みモデルをダウンロードして保存する

先日、Transformersの事前学習済みモデルをダウンロードして保存する必要があったのでその方法を紹介。 結論として、モデルのダウンロードはおなじみのfrom_pretrainedで行い、保存はsave_pretrainedで行う。 ちなみに、これをしたかった理由は、モデルをS3…

Python 3.7向けにSageMaker PyTorch Containerをビルドする

先日、Flairを使ったモデルを構築し、SageMakerのトレーニングジョブに投げたところモデルの保存で躓いた。原因を調べたところ、pickleでダンプしようとしていたオブジェクトの中に、Python 3.6ではダンプできないオブジェクトがあるようだった。そこで、Sag…

はじめての出版、地獄秘話

先月2月27日に、書籍『機械学習・深層学習による自然言語処理入門』を発売させていただきました。タイミングを逃して、Twitterやブログで告知することもなかったのですが、気持ちを整理するために、本記事では出版の経緯からまとめてみます。キラキラした感…

BERTで日本語の含意関係認識をする

含意関係認識(Recognizing Textual Entailment: RTE)とは、2つの文1と文2が与えられたときに、文1が正しいとしたら文2も正しいか否かを判定するタスクのことです。たとえば、文1として「太郎は人間だ。」という文があるとします。この文が正しいとしたとき…