メモです

メモです

田中コーパスの説明

田中コーパスとは何か

故田中康仁教授が作られた日英対訳コーパス(パラレルコーパス)。学生に1人あたり300個の文章を翻訳するように言って数年かけて収集したもの。その後、重複の削除などを経て15万文程度までに縮小した。

特長

・146,784文が日本語と英語の両方で書かれている。
・翻訳者が1人ではない。
・短いセンテンスが大半。英文の長さは平均7.72語。最長で45語。
・40%が会話文。
・日本人の大学生が翻訳したため、たまに誤訳が混ざっている。
コーパスには以下のような文章も含まれるので処理の際は注意。

彼のメールアドレスは hirosey@genet.co.jp です。
ヒントの ***** の数と語の中の字数とは関係がありません。
回答にはアンカーを必ずつけて下さい。半角で ">>"+数字(例: >>1)です。
アートファイル(.art)の使用法がわかりません。
魔力(Magic):魔法を使うために必要な能力値。 魔法を使うと減少するが、時間で回復する。
私どものウェブサイトhttp://www.example.comは、あなたに必要な情報を全てお伝えします。

入手方法

Tanaka Corpus - EDRDG WikiのDownloadsのcomplete version (UTF-8)をダウンロードして、解凍。
example.uftをexample.txtとかにファイル名を変更してエディタで開く。
なお、メモ帳で開こうとすると開けないと思う。テキストエディタAtomだと開けることは確認した。

入手方法2

odashiさんが独自に田中コーパスから5万文を抽出したもの。
GitHub - odashi/small_parallel_enja: 50k English-Japanese Parallel Corpus for Machine Translation Benchmark.

よく使う前処理

 
シャッフル

perl -MList::Util=shuffle -e 'print shuffle(<>)' < tanaka_corpus.txt > tanaka_corpus_s.txt

※15万行のファイルをshufでシャッフルしようとするとターミナルの動作が停止する。

各行を日本語ファイル(.ja)と英語ファイル(.en)に分割するとき

cut -f1 処理前のファイル名.txt| sed 's/^A: //' > tanaka.ja 
cut -f2 処理前のファイル名.txt| sed 's/#.*$//' > tanaka.en

バリデーション用(1500行)とテスト用(1500行)に分割して残りを学習用にするとき

sed -n -e '1,1500p' tanaka.en > dev.en
sed -n -e '1,1500p' tanaka.ja > dev.ja
sed -n -e '1501,3000p' tanaka.en > test.en
sed -n -e '1501,3000p' tanaka.ja > test.ja
sed -e '1,3000d' tanaka.ja > train.ja
sed -e '1,3000d' tanaka.en > train.en

注:分かち書きしてないのでOpenNMTとかにそのまま投入しないこと

おまけ

#わかちがき
mecab -Owakati 入力ファイル > 出力ファイル

#田中コーパス全体の単語の出現頻度
mecab テキストファイル名.txt | cut -f 1 | sort | uniq -c | sort -r -n

#先頭1の行
grep '^1 ' 入力ファイル > 出力ファイル

#行頭空白削除
sed -e 's/^[ ]*//g' 入力ファイル > 出力ファイル

自然言語分野の機械学習の勉強におすすめの本

機械学習の本は普通にややこしい数式がガーッと書いてあるだけのやつが多いが、これは割と説明も豊富でよかった。当然、1ページを読むのにすごい時間がかかるが、頑張って読めば基本的な事項が身に付いた。TransformerやAttentionについても触れてあるのでよかった。

Error 'hoge.eps' not foundと出る

【状況】

epsファイルが確実にあるなのになぜかnot foundとエラーが出た

【環境】

エディター:Atom

OS:macOS Mojave

バージョン:Tex Live 2018

uplatexでbuild

【解決策】

epsファイルのファイル名を一度変更して、Texファイル内のも同じように適当に変更してもう一度ビルドする。(hoge.epsからhog.epsみたいにする)

そうするとなぜか上手いく…。

 

黒魔術だが何かの参考になれば

Google Colaboratoryでフォルダ内のファイルを一括ダウンロード

※一部修正
ダウンロードしたいフォルダにcdで入って以下のコードを実行する。
サブディレクトリがある場合を考慮してないので注意。

from google.colab import files
import os

file_list = os.listdir(".")

for file in file_list:
    files.download(file)

人狼 JIN-ROH の冒頭

 あの決定的な敗戦から十数年。

 占領軍統治下の混迷からようやく抜け出し、国際社会への復帰を図るべく高度経済成長の名の下に強行された急速な経済再編成がその実を結びつつある一方で、この国は多くの病根を抱えていた。

 強引な経済政策が生み出した失業者の群れとその都市流入によるスラム化を温床とした凶悪犯罪の激増。わけても武装闘争を掲げた反政府勢力の急速な台頭はこれに対処すべき自治体警察の能力を超えて深刻な社会不安を醸成していた。

 自衛隊の治安出動を回避し、あわせて国家警察への昇格を目論む自治警内部の動きを索制すべく、政府は第三の道を選択した。首都圏にその活動範囲を限定しつつ、独自の権限と強力な戦力を保有する国家公安委員会直属の実働部隊「首都圏治安警察機構」通称首都警の誕生がそれである。

 迅速な機動力と強大な打撃力によって治安の番人としての栄誉を独占し、第三の武装集団として急速に勢力を拡大した首都警。

 しかし、当面の敵であった反政府勢力が非合法化を含む様々な立法措置によって解体し、離合集散の末にセクトと呼ばれる都市ゲリラを生み出すにおよんで状況は大きく転回することになる。首都警の中核をなす特機隊とセクトの武力衝突は熾烈を極め、時に市街戦の様相を呈することもしばしばであり、激しい世論の指弾を浴びた。経済的繁栄への期待に向けて流れ始めた世相の中、その宿敵であるセクトと共に急速にその孤立を深めつつあった。

 強化服と重火器で武装し「ケルベロス」の俗称と共に武闘路線をひた走り続けた特機隊の精鋭たちもその歴史的使命を終え、時代は彼らに新たなそして最終的な役割を与えようとしていた。

 

 

StripeでNo such tokenが出る。

【状況】

Rails Checkout Guide

をコピペして

Testing

にあるカード番号を入力したらno such tokenってエラーが出る。

【解決策】

テスト用カード番号に対応した専用のトークンがある。気付きにくいがタブで切り替えられる。

例えば「4242424242424242」を入力した場合、専用のトークンである「tok_visa」じゃないとダメだった。

customer = Stripe::Customer.create(
    :email => params[:stripeEmail],
    :source  => params[:stripeToken]
  )

をそのままコピペしてはダメ。

SafariでscrollToのbehavior:smoothが動作しないので代わりに書いた

SafariでscrollToのbehavior:smoothが動作しないのでネットで見つけたサイトを参考にしつつ関数を作った。

横方向にsmoothにスクロールする関数なのであまり使い道はない。
5とか15の数値は適当に決めた。
再帰を使うことで行数が減る。

const scroll_smooth_x = (target) => {
  let now = window.pageXOffset;
  const flag = (target < now) ? 'left' : 'right';
  
  const scrollMe = (now, target, flag) => {
    setTimeout(() => {
    if (target - now > 5) { 
      if (flag === 'left') { 
        now = now - (now - target) / 15; 
      } else if (flag === 'right') {
        now = now + (target - now) / 15;
    }
      window.scrollTo(now, 0);   
      scrollMe(now, target, flag);  
    } else {    
      scrollTo(target, 0);   
    }
    return;}, 5);
  }

  scrollMe(now, target, flag);
}

参考:
ページ内リンクをスマートにするsmoothScroll.js - to-R

bakermatの読み方

英語圏の人は

baker+matでベーカマットって発音しているっぽい。

そして、bakerはベーカーと表記されることが多い。

 

以下、事例。

0:25~

ベーカマット

Bakermat Backstage - YouTube

バーカマットっぽい…

bakermat pronunciation: How to pronounce bakermat in Dutch