前回の記事でACL2019に採択された論文でarXivに上がっているものをリストとして公開したが、そのとき少しだけつまづいたところについて書く。ほんのメモ書く程度。
やったこととしては大したことは特にしていなくて、ACLのaccepted papersのページからタイトルを抜き出して、あとはarXivのAPI(今回はPython wrapper)を使って、タイトルを検索するだけ。
気持ちはこんな感じ。
import arxiv
res = arxiv.query(query=title, max_results=100)
for r in res:
arxiv_title = r["title"]
if title == arxiv_title:
hogehoge
arxiv_titleには"\n"のような改行が含まれていたりするから、そのあたりは正規表現とかで変更。
気をつけないといけないのは、arxiv.queryでタイトルで検索するとき。このとき、"!"など一部の特殊な文字が含まれていると意図した検索結果が返ってこない。正直うまくいかない全ての文字を列挙するのは大変なので、ある程度の文字が一致して入れば検索できるだろうということで、逆に検索に使う文字を限定してしまう。
use_char = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%&():;? "
ch = list(filter(lambda x: x in use_char, text))
title = "".join(ch)
こうすることで、「Learning from Dialogue after Deployment: Feed Yourself, Chatbot!」が「Learning from Dialogue after Deployment: Feed Yourself, Chatbot」になってなってtitleの中に入るので、api経由で検索しても大丈夫になる。
大量に何かすることがなければタイトルで検索してということは、普通にブラウザの方で検索すればいいので使う機会は少ないかもしれないが、PDFを一括でダウンロードしたりとか他のapiと連携させれば楽に作業ができるようになるので使う機会がどこかであるかもしれない…