Attention-Based Convolutional Neural Network for Machine Comprehension をやる

著者の微妙に動かないコードを動かすだけです

  • paper: [1602.04341] Attention-Based Convolutional Neural Network for Machine Comprehension
  • github: GitHub - yinwenpeng/MachineComprehension
    • cis や word2embedding などのライブラリは Yin さんの別のレポジトリにあるのでコピーして持ってくる
    • train_arc1_v4.py というやつは動きます
    • 精度が高いのは train_entailment_v3.py というやつのはずで、こっちがそのままだと動かない、動かしたい
    • まず preprocess_mctest.py をいじいじして必要なファイル(vocab_DQAAAA.txt まで)を作る
    • DQAAAA とか DPNQ とか書いてあるのはデータの内容の形式です、 document, question, answer, positive, negative がどの順で書いてあるか、という感じ
    • しかしエラーが出るので露頭に迷う。 DPNQ.txt まで生成されない(Statement ファイル群がない)のでそもそもデータが足りない
  • github2: GitHub - BenjaminHess/MachineComprehension
    • ちょっとコードが整理された fork だけど、特に改善されている雰囲気ではない
    • このままでは相変わらず train_entailment_v3.py は動きません(データの読み込みで sharedvariable 宣言するところでエラー)
    • まず Statement の在り処が書いてあるので、データを引っ張ってきて Yin さんの方のにコピーするのでもよいです(DPNQ はすでにあるのでどっちでもいい)、とにかくデータはこれで揃うことになります
    • で、試行錯誤する
  • 原因は loadData.py L1342 の読み込みのとこで lower() を入れてない部分だと気付いた
    • 入れれば word の id 取ってくる部分を失敗せずに必要な theano.shared() が通ってくれます
    • でも精度が論文通りにならず困る、辛抱強く epoch 上がるのを待てばいいのだろうか……

latex で table 書くときにね?

よくアクセスがあるみたいなので情報を整理しておきます。

latex で( tex で?) table のコードをいちいち書くのは面倒だな〜というときは、

Latex Table Generator https://www.tablesgenerator.com/
Latex Tables Editor http://www.latex-tables.com/

などを使って xlsx や csv やお手製データを流し込んでコードを生成するのが手っ取り早いと思います。 なお、それはそれとして「セル内での改行を綺麗にしたい(垂直方向に中央に置きたい)」という場合には、

\newcommand{\linestack}[1]{\def\arraystretch{0.9}\begin{tabular}[c]{@{}c@{}} #1 \end{tabular}}

といったマクロを書いて \linestack{this is \\ line break} のように書けばよさそうな気がします。見た感じの通り、セル内に新しい table を作っています。いろんな工夫が可能です。そんな感じです。

arxiv に出てくるような論文を読んでる人は、「こんな表どうやって書くねん!」となったらその論文の tex データが利用可能なら(条件節が多すぎる)その table を生成しているコードを見たりするのもいいと思います。

以下が過去の記事です(2020年3月4日以前)。


よくひとつのセルに改行含めた表現を入れたくなるじゃないですか、こんなふうに

f:id:liephia:20160927034932p:plain

ここでは \shortstack{All you need is \\ love} って書いてます。見るからに美しさに欠けており、内容の上に余白ができないかなあと思って困ってたんですが(そもそもバリバリに罫線を引くのが間違っているという説はあるとして)、簡単に解決したのでメモをします

f:id:liephia:20160927034944p:plain

\shortstack{\\All you need is \\ love} でなんとかなりました。vspace とか入れようとしてる場合ではなかった。先頭に改行で良かった感じ。そもそも \shortstack 使わずに別の行にしちゃえよという意見もあるかもしれない。それもわかります。次はそうしようと思います。メモですメモ。

追記
けっきょく booktabs.sty を使うのが最近の流行りっぽいし見栄えが良いです

さらに追記(2018-06-10)
Latex Table Generator https://www.tablesgenerator.com/
Latex Tables Editor http://www.latex-tables.com/
あたりが楽でいいです。小さい表を作るときは……。

\newcommand{\linestack}[1]{\def\arraystretch{0.9}\begin{tabular}[c]{@{}c@{}} #1 \end{tabular}}

現時点で、結局大きな表で改行を綺麗に表示したい(他の行間よりも狭くしたいとか含め)ときは上のようなマクロを書いて使っています。

pdftotext して持ってる論文の文字列検索をできるようにしておく

本文の通りのやつのメモです

1. pdftotext を入れる
2. 論文の pdf が大量に入っているディレクトリで
$ for i in *; do pdftotext $i; done
みたいなことをすると .txt が大量に吐き出される(ls でやろうとすると空白混じりのファイル名の読み取りで困ったのですが、単に * でいいみたいです(shell によるかも))(エラーが出るけど気にしない)
3. 必要なら専用のディレクトリを作って txt ファイルたちを移動
4. 検索は例えば自分は .zshrc に
alias dirsearch='function hoge(){grep --color -r -i $1 .;}; hoge'
のように書いて、
$ dirsearch 'this is a pen'
をしています
5. 今のままだと段落ごと出てきて微妙に不便なので、必要なら出力をパーサに食わせて整形してから出すみたいなこともアリかも(面倒なのでやってない)

「自分が持っている論文を対象にする」というのは意外と大事で、「興味がある分野の論文から検索できる」とか「ある程度信頼できる文章から検索できる」とか良いことがあるっぽいです
(pdftotext の日本語抽出はたぶんできると思うので必要ならやってみてください)

蛇足ですが、英語であれこれ書くときは
springerexempler (Springer Exemplar - Scientific Terms in Context) や oxford collocations dictionary あたりを使うのが良いっぽいというのが最近の感想です(他におすすめがあったら教えてください)

tikz, node, text, graphicx

%% \usepackage[dvipdfmx]{graphicx}
\usepackage[pdftex]{graphicx}

dvipdfmx を入れっぱなしで、 tikz の node 内の text の centering がおかしいことになっていた。
graphicx 自体をコメントアウトするか、 option を pdftex にする。
出力の仕方に応じてちゃんとオプション変えましょうとかそういう話。

参考
graphicx - TeX Wiki

JSAI2016 のしおり

気になるリンク集です

2016-06-06

latex, itemize, 項目内の行間

  • itemize における同一項目内での行間の設定の仕方がよくわかっていなかった
  • \parskip とかではない
  • たとえば \fontsize{12pt}{15pt}\selectfont をするとフォントサイズが 12pt へ変わってくれるわけだけど、15pt の部分が行送り(行の最上部から次の行の最上部、フォントサイズ+行間のこと)を担っていて、\parskip をいくら変えてもこちらは変わらない
  • 長いときは(?){\fontsize... \par} にしないと機能しないっぽい http://texblog.org/2012/08/29/changing-the-font-size-in-latex/
  • 物理的に大きくしたいときはここやら \baselineskip を変えるとよい
  • beamer poster の原稿内でころころ fontsize を変えていたのだけど、その都度 \baselineskip もリセットされてしまう?らしい。一行で収まる item がほとんどだったから、折り返しのある item の行間が突然狭くなってしまって驚いた。ちゃんと設定しておく必要がある
  • 未だに latex の細かいことをよくわかっていないのだけど出力が良ければまあ良いという感じで諦めている
参考