データナード

機械学習と自然言語処理についての備忘録 (旧ナード戦隊データマン)

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

探索と活用のトレードオフとは、情報の探索にかける時間と、情報を活用する時間をどう割り振るかによって引き起こるトレードオフです。 バンディットアルゴリズムの概要 コーディング 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 課題 参考 やりたいこ…

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にコード2が公開され…

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

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

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

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

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

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

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) 英語で訓練 テスト 英語のテスト アラビア語のテスト テスト結果 実行フロー…

TSAのための自動ラベリング

TSAのデータセットにはSentiHoodなどがありますが、データセットのサイズはそれほど大きくありません。今回は、Unsupervised Aspect Term Extraction with B-LSTM & CRF using Automatically Labelled Datasets1 という論文にかかれている自動ラベリング手法…

系列ラベリングのより良いモデル: 単語 + 文字

系列ラベリングの基本的なモデルは、単語ベースの埋め込みを利用します。これに加えて文字ベースの埋め込みを追加する方法があります。 目的 コード データの読み込み 前処理 モデリング テスト 結果 考察 参考 目的 TSA (targeted sentiment analysis) のた…

targeted sentiment analysisを試しにやってみる

TSA(targeted sentiment analysis)とは、文内の対象に対して感情ラベルを予測するタスクです。 jupyterで実行 考察 参考 jupyterで実行 まず、FastTextの事前訓練済みモデルをダウンロードします。 wget https://dl.fbaipublicfiles.com/fasttext/vectors-cr…