Springerexemplar の grep

Springer Exemplar - Scientific Terms in Context と言えば Springer が有するコーパスから指定したフレーズの一致件数・一致例を出してくれるサイトですが、「この表現とあの表現の一致件数を比較したいな〜」というときに一発コマンドを打てると楽だなあと思っていろいろ教えてもらって書きました。なんでこんなことするのかって springerexemplar は読み込みが遅くてロードを待っている間に何を検索しようとしていたか忘れてしまうからです。

springerexemplar() {
    echo "$*"
    wget -q -O - 'http://springerexemplar.com/search.aspx?q="'"$*"'"&similar=false' | grep -o "\d* matching articles"
}
spx() {
    for i in $@; do
        springerexemplar $i
    done
}

自分は .zshrc に直に書いています。使い方は、

$ spx 'this '{is,was}' because'
this is because
122392 matching articles
this was because
128924 matching articles
$ spx 'this is because' 'this was because'
this is because
122392 matching articles
this was because
128924 matching articles

みたいな感じでどうでしょうか(自分でも使うかどうか怪しいけど)。

UBLP (EMNLP2016WS) の対話セッションのメモ

Uphill Battles in Language Processing Scaling Early Achievements to Robust Methods, Workshop held in conjunction with EMNLP 2016

  • http://www.coli.uni-saarland.de/~mroth/UphillBattles/
  • EMNLP 2016 のワークショップ
    • 「現時点までの成果をどうやって robust な技術に発展させるか」という感じの、今までを振り返ってこれからを考える趣旨の会
  • 本稿は Dialogue and Speech のセッションのメモ書き
    • 4人の研究者がそれぞれ10-15分で「これからどうするか」という話をしている
    • 他に「言語理解」「言語生成」「Grounded Language (どう訳す……?)」のセッションがあった

0. 全体のまとめ

各講演者の要点

  • Devault: 現状の音声対話システムの問題のひとつは流暢さであり、その実現のために「turn-taking における素早い応答」と「割り込み・重複を認識して認識ができること」の二点が重要だと指摘している
  • Liberman: diarization (who spoke when) すら現状の技術では満足でなく、 what について理解する前提としてまず diarization が必要。そのほか、 turn-taking物理的環境・社会的文脈への対応
  • Litman: 協調という観点から1980年代の Indirect speech actsHelpful responses の取り組みを思い出すべきなのでは
  • Stent: 概説メイン。大きな課題はふたつ: 単なる「情報を探す」対話から協調的・利益的な対話に発展させること、 AI としての対話に立ち返って必要な要素(たとえば情報の共有、照応と物理世界、文化や社会ドメイン、複雑なやりとり、自律性?)を考えること

メモ作成者のメモ

  • ページ下部へ移動

1. David Devault, University of Southern California

音声対話システムの Uphill Battles

  • Automatic speech recognition
    • 自動的な音声認識
    • (既にいいところまで行った?)
  • Broad coverage semantics
    • 幅広い語彙・知識をカバーできること
  • Multi-domain / multi-application dialogue policies
    • マルチドメインかつ様々なアプリケーションで利用可能な対話戦略を持つこと
  • Fluid conversational interaction (流暢な対話のやりとり)
    • Turn-taking / mixed-initiative (発話の順番、発話の時間的重なり)
    • Incremental (word-by-word) speech processing (逐語的な音声処理)
    • Dialogue modeling (対話をどうモデリングするか、意図や目的)

現状の音声対話システムは何が流暢ではないのか?

  • ほとんど全てのシステムが単純な turn-taking のプロトコルで成り立つ
    • 卓球のようなやりとりを仮定し、発話の重複がない
    • All user-initiative / all system-initiative
  • ユーザーは、システムがユーザーの言うことや振る舞いを理解しているかわからない
    • 応答の待ち時間がながい、相づち (backchannels; 「ああ」や頷き) がない
  • ユーザーはいつ喋ることができるのか・何を喋ることができるのかがわからない
    • Okay のような単純な発話ならすぐ使えるとはわかる
    • それ以外の発話はさっぱり何を言っていいのか見当がつかない
    • やりとりが簡単に脱線する
    • ユーザーにとっては、ひとつひとつの発話を決めるのが大変

Example 1: The Eve Agent (2014-2016)

  • ドメインを絞っており、応答が速い
  • 小さなドメインなら理解・応答が素早いシステムを作ることができる
  • しかしどのような[限定的な]ドメインでこのような素早いシステムが必要になるかは定かではない
    • [タスク指向ならいくらでもあると思うけど]

Example 2: Conflict Resolution Agent (2015-2016)

  • いろんなタイプの発話をサポートしている [たぶんシステム側]
  • Mixed-initiative を許容する
  • 速いペースのやりとりが可能

How do we make progress?

  • turn-taking や個人の turn の構造について単純な仮定を置くのを止めるべき
  • やりとりにおける時間のモデルとして良いものを用いるべき
  • より拡張的・一般的・ data-driven な対話モデルを開発するべき
  • 人間対人間の会話データを増やすべき

[まとめ]

  • DeVault さんが挙げている音声対話システムの一つの問題は流暢さ
  • 例二つは、それぞれ次を実現している
    • 幅広いドメインで素早く応答
    • 割り込み・重複を許容した振る舞い
  • We need to create fine-grained models that take seriously the timing of speech and the detailed mechanics of how human conversation unfolds through interlocutor decision-making at small timescales
  • We need to improve our ability to create intelligent agents and other dialogue systems that are not purely user-driven or system-driven, but instead have a pervasive mixed-initiative capability
  • 上の2文とも言ってること同じ

2. Mark Liberman, University of Pennsylvania

Abstract: Three Steps (Liberman 自身によるまとめ)

  • Robust diarization
    • すなわち、誰がいつ話しているか (who spoke when)
    • 大きな問題は、発話の時間的重複と背景のノイズ
    • 現状の技術では整った静かな環境の diarization も難しく、 what の理解まで行くにはまだ遠い
  • Dialogue systems with human-like turn-taking
    • 人は、例えば協調や競争の目的で相手の話に割り込む
    • 対話システムは典型的には割り込みをリセットの信号だと解釈する(実際にはそうではないのに)
    • システムは相手が喋っている間には喋らない(相づちも含めて)
    • much less to correct misunderstandings, introduce relevant information, or cut to a proposed solution.
  • Conversation systems that can participate effectively in a meeting, manage a classroom, or chat overa game of poker
    • このようなシステムは diarization 以外にも物理的な環境・社会的文脈で何が起きているのかを追跡することが必要
    • 同様に、どのようにいつ会話に貢献するか、その貢献を他者が受け取る・受け取らないことを動的な関係としてどのように調節するかを学ぶ必要がある
    • さらに、異なる会話の文化にも対応できなければならない

3. Diane Litman, University of Pittsburgh

Dialogue Systems: A Brief History

  • ELIZA (1966, chatbots)
  • SHRDLU (1971, AI, block)
  • Allen, Cohen, & Perrault (1980s, plan-based)
  • VODIS, VOYAGER (1990s, speech, "How many hotels are there in Cambridge?")
  • startups (2000s)
  • Siri (2010s)

Back to 1980: Analyzing Intention in Utterance

  • 発話の意図の分析を行って対話のプランを考えていた
  • 対話における協調的な振る舞い
    • 間接言語行為 (indirect speech acts), 助けになる返答 (helpful responses) など
  • knowledge-based なアプローチ
    • 相手にもプランの考案、実行があると考え、それを推論して障害を発見した上で自分のプランを考えて実行する

What about Siri? (example for indirect speech acts)

  • 間接言語行為が理解できない例
    • Diane: I don't know Megan's address.
    • Siri: Don't warry about it, Diane. (教えてくれない)
    • Diane: Can you tell me Megan's address?
    • Siri: Here's the address for Megan ... (教えてくれる)
  • 明示的に要求しないと伝わらない

Helpful Responses

  • 要求された以上の情報を返してくれること
    • Diane: What day of the week is election day?
    • Siri: Election Day is on Tuesday, November 8 2016
  • [ユーザーが何を必要としているのかを察して情報を増やさなければならない(増やせると便利)]

Indirect + Helpful

  • 間接言語行為を理解して、かつ強調的に情報を増やしてくれる例
    • Diane: I'm hungry
    • Siri: I don't want you feeling all peckish.
    • Siri: Here's what I found ... (15 results displayed)

Summary

  • 協調的な対話研究は大部分は諦められ、より実践的なアプローチに移った(Diane さん自身の研究も含め)
    • "There is much to be gained from recognizing not just what was said, but why; from identifying conclusions people naturally draw from both what has been said and hasn't" (Workshop CFP)
  • 1980年代の観点から見て、今のシステムがどのように協調的であり、どのように協調的であるべきかを考える必要がある

4. Amanda Stent, Yahoo! Labs, NY

In the Beginning Were Problems

Then Problem Definitions ...

  • Finite-state script
    • call transfer
  • Frame based
    • getting flight info
  • Sets of contexts
    • booking travel
  • Plan-based models
    • kitchen design consultant
  • Agent-based models
    • disaster relief management
  • 対話の問題設定は様々考えることができる
    • 上から下にいくほど複雑になる
    • 出典は Allen et al. (2001), AI Magazine

Evaluation Metrics and Parametrizable Methods, Data and Time

Challenges

  • Move beyond info-seeking dialog
    • 情報を探すだけの対話から更に発展させる
    • ユーザーのコストを削減するのではなく、ユーザーに利益を与えるような対話システム
    • 新しい評価指標
    • やりとりに関わるパラメータを増やす
  • Go back to our roots: human intelligences としての AI モデル
    • Entrainment
      • 情報共有的な意味での同期: 語彙のレベルや知識表現が良くなければユーザーと等しい情報を持つことができない
    • Anaphora resolution and grounding
      • 照応と物理的世界の参照
    • Contextually appropriate, mixed-initiative generation
      • 文化的・社会的慣習などの文脈に適合すること
      • 発話のタイミングが入り組んでも対応できること
    • Non-cooperative and semi-cooperative dialog
      • 必ずしも協調的でない対話ができること

Interesting Current Directions

  • Complex and flexible tasks, evaluation beyond efficiency
    • タスク設定と評価方法
  • Anapora and entrainment, shared language representations
    • 照応、情報の同期、共有される言語表現
  • Non-cooperative (situated) dialog
    • 協調的ではない対話
  • それぞれについての論文はスライド末尾(-1)参照

Stent さんおすすめの参考文献

以下、メモ作成者のメモ

Issues

  • understand very well and wery quickly
  • turn-taking / mixed-initiative
  • diarization (who speack when + what)
  • indirect speech acts / helpful response (cooperation / non-cooperation)
  • physical world, social context (semantics, vocabulary)

そういえば岡野原さんがIBISで言ってたこと (http://www.slideshare.net/pfi/ibis2016okanohara-69230358)

  • 知識をどのように埋め込むか、記憶と想起
  • 心理モデルや意図推定
  • コミュニケーションの目的関数と評価

やはりマーっぽい記述のモデルで整理するといいのでは(以下省略)

  • おわり

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