ナード戦隊データマン

機械学習と自然言語処理についてのブログ

探索と活用のトレードオフ: バンディットアルゴリズムでの検証

探索と活用のトレードオフとは、情報の探索にかける時間と、情報を活用する時間をどう割り振るかによって引き起こるトレードオフです。 バンディットアルゴリズムの概要 コーディング epsilon_greedy.py bernoulli_arm.py simulator.py jupyter notebookで実…

fairseqを試しに使ってみる

fairseq1とは、研究者や開発者が翻訳、要約、言語モデリング、その他のテキスト生成タスク用のカスタムモデルをトレーニングできるシーケンスモデリングツールキットです。 インストール データのダウンロード 前処理 mecab.pl split_data.py prepare.sh fai…

tensor2tensorでsentencepieceを使う方法

tensor2tensorのt2t-datagen1では指定したproblemに定義された方法を使ってtensorを生成します。内部ではSubwordTextEncoderを使ってサブワードに分割しますが、vocabファイルの生成において、sentencepieceよりも非効率なので大量のメモリを消費する上に実…

MTNTに対するモデリング

MTNTについての解説1や、WMT19でのタスク2などを書いてきましたが、今回は試しに実装してみます。 パイプライン モデル 結果 考察 参考 パイプライン 必要なデータのダウンロード データに対する準備 baselineモデルの訓練 逆翻訳の実行とファインチューニン…

WMT19 Robustness Taskの論文の1つをざっくりまとめる

WMT19のRobustness Task1とは、MTNT2のようなノイズありテキストに対する翻訳タスクです。 Robustness Taskの概要 論文の手法の概要 NMTモデル 前処理 モノリンガルデータ Placeholder ファインチューニング BLUEスコア 参考 今回は、そのうちの一つとして、…

ソース文にドメインタグを追加してTransformerを訓練

機械翻訳では、ソース文を編集する手法がいくつかあります。その一つがタグの追加です1。 概要 とあるデータの例 コード データの展開 myproblem.py 訓練 avg_checkpoint デコード 評価 結果 考察 参考 概要 ソース文に以下のような文があるとします。 文1: …

逆翻訳をtensor2tensorで実行

逆翻訳とは、ターゲット言語のモノリンガルコーパスを訓練済みNMTで翻訳することによりデータを増やす方法です。 実行フロー tensor2tensorでの実行方法 vocabの生成 シェルスクリプト myproblem.pyの中身 まとめ 補足 placeholder 文の長さに対する補正 言…

NMTのドメイン適応

ドメイン適応とは、ソースデータの分布から、異なる分布をもつターゲットデータで高いパフォーマンスを出すモデルを訓練する手法です。 ざっくり Data Centric 単一言語コーパスの使用 合成並列コーパス生成 ドメイン外並列コーパスの使用 Model Centric ト…

MTNTデータセットとは何か

MTNT1は、Redditから収集されたノイズありテキストに対する翻訳のためのテストベッドです。 ダウンロード データセットは以下からダウンロードできます。 https://www.cs.cmu.edu/~pmichel1/mtnt/ ノイズありテキストとは ソーシャルメディアのテキストには…

tensor2tensorの翻訳モデルをサーバ化して実行

tensor2tensorで訓練した翻訳モデルを使いたいとき、複雑なコードを書かずに実行する方法の一つがserving1です。 実行方法 1. serving用にexportする (t2t-exporter) 2. tensorflow_model_serverを立ち上げる 3. pythonからAPIを使う (query.py) 参考 実行方…

warc_crawler: warcファイルでWebをクロール

Web ARChive(WARC)1アーカイブ形式は、複数のデジタルリソースを関連情報とともに集約アーカイブファイルに結合する方法です。 WARC形式は、インターネットアーカイブのARCファイル形式の改訂版で、World Wide Webから収集したコンテンツブロックのシーケ…

webvtt形式のパラレルコーパスのalignment

webvtt1は字幕データの一般的なファイル形式です。 概要 コード align.py align_example.py アルゴリズムの説明 抽出結果の一部 考察 追記 参考 概要 youtube-dl2を使って字幕データのパラレルコーパスを生成した場合、そのままの状態では1対1の文のペアには…

youtube-dlを使ってYoutube動画の字幕からパラレルコーパスを生成

youtube-dl1は、youtube動画をダウンロードするためのCLIツールです。 インストール Unix系ユーザーは以下のコマンドでインストールが可能です。 sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl sudo chmod a+rx…

bitextor: Webから自動的にパラレルコーパスを生成するツール

bitextor1とは、指定したホストから自動的にパラレルコーパスを収集するツールです。 概要 実行方法 dockerコンテナに入る 必要なものを入れる トーカナイザの準備(mecab-tokenizer.perl) パラレルコーパスの準備 myconfig.yamlを書く 実行 結果 考察 追記 …

相互翻訳されたhtml内の文をalignmentする

Sentence Alignment: 翻訳文は常に1対1で対応しているわけではありませんが、Sentence Alignmentでは、そのようなコーパスから1対1に対応したパラレルテキストを生成するタスクです。 やりたいこと かんたんな方法 length-based method 課題 参考 github.com…

htmlの構造的な類似性を評価する

htmlの構造的類似性とは、2つのHTMLに対して、コンテンツを除いたHTMLツリーがどの程度似ているかを表す指標です。 単純なアルゴリズム sdiff等のツールを使えば、2つの文書から相違する部分を抜き出すことができます。Automatic Acquisition of Chinese–Eng…

tensor2tensorで和英翻訳

tensor2tensor1とは、ディープラーニングをより使いやすく、ML研究を加速させるために設計されたモデルとデータセットを含んだライブラリです。 実行フロー コード パラレルコーパスのダウンロード (wget) コーパスの分離 (split.py) 独自のデータジェネレー…

SHLデータセット: スマホセンサー情報に対する多目的アノテーション付きデータセット

SHLデータセット1は、多数のセンサーを使って収集されたユーザーの情報に対して、移動手段を含むいくつかのアノテーションがされたデータセットです。 概要 移動手段予測のコード例 データのダウンロード (download.sh) データをcsvに変換。(data_fixer.py) …

加速度センサーだけで移動手段を予測する

加速度センサーによる移動手段予測とは、スマホの加速度センサーから収集したデータを利用し、車・電車・歩行などの移動手段を予測する方法です。 概要 コード 前処理モジュール (preprocessing.py) データ生成器 (data_generator.py) 訓練・テスト(train.py…

TMD dataset: スマホのセンサー情報で移動手段予測

TMDデータセット1とは、スマホのセンサー情報を用いて移動手段を予測するための無料のデータセットです。 概要 コード 前処理モジュール(preprocessing.py) データ生成器 訓練・テスト 精度 考察 追記 2019/07/18 8:55 参考 github.com ※ この記事のコードの…

geolife: GPSログから移動手段を予測

geolifeデータセット1とは、Microsoft Research Asia Geolife projectによって収集された、 182人のユーザーの2007年から2012年に渡るGPSログのデータです。 概要 データの読み込み データの分割 特徴量抽出 データジェネレータの作成 モデルの訓練 モデルの…

Kashgari: 固有表現抽出のモデルを簡単に作成するツール

Kashgari1は、Eliyar Ezizによって作成されている、KerasベースのNLPフレームワークです。 なにができるのか 系列ラベリング、テキスト分類のタスクを解くことができます。3種類のEmbeddingをサポートしており、その中にはBERTがあります。 このツールを使う…

VoxELでの評価結果

前回の記事で、モデリングと訓練を行ったので、今回は評価を行います。 評価手順 評価方法はメンション位置も正しく予測することではなく、正解エンティティをどのくらい予測できたかを用いることにします。 ただし、今回は正解エンティティが含まれない文は…

VoxELの5つの言語のELモデルを自動作成

VoxEL1とは、マルチリンガルのエンティティリンキングのための評価用データセットです。 やりたいこと 実行方法 run.shの中身 どんなモデルなのか 課題 VoxELをjsonへ変換する 参考 やりたいこと 複数言語に対応できるアルゴリズムを用いてELを言語ごとに訓…

Wikipediaから拡張固有表現を用いたCoNLL形式のデータを生成

拡張固有表現とは、PER, LOC, ORG, MISCのような少数のタイプではなく、より多くのタイプを定義したものです。 追記: 2019-06-25 11:09 IOBタグの定義を間違えました。 Bは先頭、Iは中間です。 CoNLL形式について 固有表現抽出でよく使われるデータには、CoN…

多言語エンティティリンキングを誰でも実行できるようにした

前回、多言語エンティティリンキングの訓練コードの一部を公開しましたが、今回はメモリが十分にあり、スペックが十分あれば実行できるようにしておきました。 GitHub - sugiyamath/e2e_EL_multilingual_experiments: the experiments of an end to end meth…

E2Eの多言語エンティティリンキング

エンティティリンキングとは、テキスト内のメンションを、知識ベース内の適切なエンティティに対応させるタスクです。 エンティティリンキングの概要 E2E化するには 多言語化するには コード 1. データジェネレータ 2. 訓練 3. 候補生成モジュール 4. Entity…

deeppavlov: BERTによる固有表現抽出の多言語モデル

deeppavlov1は、ダイアログシステムやチャットボットのための、ディープラーニングを使ったエンドツーエンドのオープンソースライブラリです。 NERコンポーネント deeppavlovはチャットボットなどのためのライブラリですが、様々なコンポーネントを公開して…

corefとopenieで知識グラフを自動構築

知識グラフとは、主語・述語・目的語のトリプルからなるグラフです。主語と目的語はエンティティであり、述語はリレーションとなります。ここでは、CoreNLPのco-reference resolutionとopenieを使って知識グラフの自動構築をします。 事前準備 CoreNLPサーバ…

感情分析: 英語で訓練するだけで数十言語に対応する

LASER1というSentence Encoderを使えば、zero-shotで感情分析の多言語モデルを作成可能だと思ったので、試してみます。 実行フロー 事前準備 コード モジュール (embed_hander.py) 英語で訓練 テスト 英語のテスト アラビア語のテスト テスト結果 実行フロー…