このスクリプトは言語処理学会年次大会発表論文集の各年のプログラムのHTMLを受け取り、JSONファイルにタイトル (title)、著者リスト (author_list)などをキーとするJSONファイルを出力します。

  • HTMLファイルはすべてUTF-8にエンコードされている(変換済み)とします。
  • 元HTMLの構造が一部壊れている部分(開始タグに対応する終了タグがないなど)は、ほぼ手作業で修正します。
    • この修正結果も公開したいのですが、無許諾での著作物再配布になってしまいそうなので未公開です。
    • 最近数年の講演プログラムは修正が不要なようです。
  • 講演プログラムを構成するHTMLテーブルに一定のパターンがあることを利用してアドホックに抽出しています。
  • 招待講演は今のところ未対応とします。

In [1]:
import bs4
import json
import codecs

table = []
for y in xrange(1995, 2016):
    f = 'anlp%d.html' % y
    soup = bs4.BeautifulSoup(open(f), 'html.parser')
    for p in soup.find_all('td', {'class': ['paper_id', 'pid']}):
        e = p.parent
        try:
            title = e.find(['span', 'a'], class_='title').get_text().strip()
            author = e.find_next_sibling('tr').get_text().strip()
            pid = p.get_text()
            if pid and len(pid) > 0:
                table.append({
                        'year': y,
                        'pid': '%d/%s' % (y, pid),
                        'title': title,
                        'author_list': author,
                        'url': 'http://www.anlp.jp/proceedings/annual_meeting/%d/pdf_dir/%s.pdf' % (y, pid),
                        'program_url': 'http://www.anlp.jp/proceedings/annual_meeting/%d/index.html' % y})
            else:
                print('# skipped: %s: %s' % (f, p.parent))
        except AttributeError:
            print('# error: %s: %s' % (f, p.parent))
json.dump(table, codecs.open('history.json', 'w', encoding='utf-8'), indent=2, ensure_ascii=False)


# error: anlp1995.html: <tr><td class="paper_id">B1-3</td>
<td>(発表取り消し)</td></tr>
# error: anlp1995.html: <tr><td class="paper_id">B4-5</td>
<td><a href="pdf_dir/B4-5.pdf"><span class="title">カタカナ表記からの英訳推定による専門用語辞書作成</span></a><img alt="PDF" src="pdf_icon.gif"/></td></tr>
# error: anlp1999.html: <tr><td class="paper_id">C2-4</td>
<td>(発表取り消し)</td></tr>
# skipped: anlp2006.html: <tr><td class="pid"><a name="I1-1"></a></td>
<td><span class="title">人間の統語処理---内部言語と他の要因の相互作用</span> (p.1)</td></tr>
# skipped: anlp2006.html: <tr><td class="pid"><a name="I1-2"></a></td>
<td><span class="title">話し言葉と書き言葉</span> (pp.2-3)</td></tr>
# error: anlp2006.html: <tr><td class="pid"><a name="A2-4">A2-4</a></td>
<td>(発表取消)</td></tr>
# error: anlp2006.html: <tr><td class="pid"><a name="C3-4">C3-4</a></td>
<td>(発表取消)</td></tr>
# error: anlp2006.html: <tr><td class="pid"><a name="P7-6">P7-6</a></td>
<td>(発表取消)</td></tr>
# skipped: anlp2007.html: <tr><td class="pid"><a name="I1-1"></a></td>
<td><span class="title">発話が伝える意味 −発話意図を理解する脳機構とその発達−</span> (pp.1-2)</td></tr>
# skipped: anlp2007.html: <tr><td class="pid"><a name="I1-2"></a></td>
<td><span class="title">人間の言語処理における選択的遅延処理モデル −「ガ格連続文」の処理過程を中心に−</span> (pp.3-4)</td></tr>
# skipped: anlp2007.html: <tr><td class="pid"><a name="I2-1"></a></td>
<td><span class="title">大量情報からの価値創出</span> (pp.5-6)</td></tr>
# error: anlp2007.html: <tr><td class="pid"><a name="D1-8">D1-8</a></td><td>(発表取消)</td></tr>
# error: anlp2007.html: <tr><td class="pid"><a name="B4-3">B4-3</a></td><td>(発表取消)</td></tr>
# error: anlp2007.html: <tr><td class="pid"><a name="B4-8">B4-8</a></td><td>(発表取消)</td></tr>
# skipped: anlp2008.html: <tr><td class="pid"><a name="I1-1"></a></td>
<td><span class="title">動物発声から考える言語の起源</span></td></tr>
# skipped: anlp2008.html: <tr><td class="pid"><a name="I1-2"></a></td>
<td><span class="title">文系の頭,理系の思考</span></td></tr>
# error: anlp2008.html: <tr><td class="pid"><a name="PB1-7">PB1-7</a></td>
<td>(発表取消)</td></tr>
# error: anlp2008.html: <tr><td class="pid"><a name="C4-1">C4-1</a></td>
<td>(発表取消)</td></tr>
# error: anlp2008.html: <tr><td class="pid"><a name="PB3-5">PB3-5</a></td>
<td>(発表取消)</td></tr>
# skipped: anlp2009.html: <tr><td class="pid"><a name="I1-1"></a></td>
<td><span class="title">意識と言語と情報</span> (pp.1-2)</td></tr>
# skipped: anlp2009.html: <tr><td class="pid"><a name="I1-2"></a></td>
<td><span class="title">日本における『裁判と言語』</span> (p.3)</td></tr>
# error: anlp2009.html: <tr><td class="pid"><a name="C1-5">C1-5</a></td>
<td>発表取消</td></tr>
# error: anlp2009.html: <tr><td class="pid"><a name="P2-29">P2-29</a></td>
<td>発表取消</td></tr>
# error: anlp2009.html: <tr><td class="pid"><a name="P3-17">P3-17</a></td>
<td>発表取消</td></tr>
# error: anlp2009.html: <tr><td class="pid"><a name="P3-25">P3-25</a></td>
<td>発表取消</td></tr>
# error: anlp2009.html: <tr><td class="pid"><a name="C5-6">C5-6</a></td>
<td>発表取消</td></tr>
# skipped: anlp2010.html: <tr>
<td class="pid"><a name="PL-1"></a></td>
<td><span class="title">これからの言語処理とその応用</span> (p.1)</td>
</tr>
# skipped: anlp2010.html: <tr>
<td class="pid"><a name="PL-2"></a></td>
<td><span class="title">総合学術オントロジー</span> (p.2)</td>
</tr>
# skipped: anlp2010.html: <tr>
<td class="pid"><a name="PL-3"></a></td>
<td><span class="title">MASTARプロジェクト&amp;ALAGINフォーラム</span> (p.3)</td>
</tr>
# skipped: anlp2010.html: <tr>
<td class="pid"><a name="S-1"></a></td>
<td><span class="title">The Challenge of the Multicores</span></td>
</tr>
# error: anlp2010.html: <tr>
<td class="pid"><a name="C1-5">C1-5</a></td>
<td>発表取消</td>
</tr>
# error: anlp2010.html: <tr>
<td class="pid"><a name="PA1-17">PA1-17</a></td>
<td>発表取消</td>
</tr>
# skipped: anlp2011.html: <tr><td class="pid"><a name="S-1"></a></td>
<td> <span class="title">ゲノムを読む</span> (p.1)</td></tr>
# skipped: anlp2011.html: <tr><td class="pid"><a name="S-2"></a></td>
<td> <span class="title">実務翻訳の現状と未来</span> (p.2)</td></tr>
# skipped: anlp2011.html: <tr><td class="pid"><a name="S-3"></a></td>
<td><span class="title">表現から意味へ:言語処理技術と言語の科学</span> (p.4)</td></tr>
# error: anlp2011.html: <tr><td class="pid"><a name="F2-5">F2-5</a></td>
<td>発表取消</td></tr>
# error: anlp2012.html: <tr><td class="pid"><a name="T-a"></a></td>
<td> <span class="title">大規模言語資源時代の意味談話処理</span></td>
<tr><td></td>
<td> 乾 健太郎 氏(東北大学)</td></tr>
</tr>
# error: anlp2012.html: <tr><td class="pid"><a name="T-b"></a></td>
<td> <span class="title">統計的機械翻訳の最先端</span></td>
<tr><td></td>
<td> 渡辺 太郎 氏(NICT)</td></tr>
</tr>
# error: anlp2012.html: <tr><td class="pid"><a name="T-c"></a></td>
<td> <span class="title">ネットワークと機械学習</span></td>
<tr><td></td>
<td> 鹿島 久嗣 氏(東京大学)</td></tr>
</tr>
# error: anlp2012.html: <tr><td class="pid"><a name="T-d"></a></td>
<td> <span class="title">『現代日本語書き言葉均衡コーパス』による日本語研究の展開</span></td>
<tr><td></td>
<td> 山崎 誠 氏(国立国語研究所)</td></tr>
</tr>
# error: anlp2012.html: <tr><td class="pid"><a name="S-1"></a></td>
<td> <span class="title">Active Objects: An Entity-Centric Search Experience</span> (p.1)</td>
<tr><td></td>
<td> Patrick Pantel 氏(Microsoft Research)</td></tr>
</tr>
# skipped: anlp2012.html: <tr><td class="pid"><a name="S-2"></a></td>
<td> <span class="title">障害者・高齢者と対話のことば</span> (p.2)</td></tr>
# error: anlp2013.html: <tr><td class="pid"><a name="T-a"></a></td>
<td><span class="title">言語処理研究におけるソフトウェアの開発と公開</span></td>
<tr><td></td>
<td>岡崎 直観 氏(東北大学), 吉永 直樹 氏(東京大学), 工藤 拓 氏(グーグル株式会社)</td></tr>
</tr>
# error: anlp2013.html: <tr><td class="pid"><a name="T-b"></a></td>
<td><span class="title">テキストアノテーション:現状と今後の方向性</span></td>
<tr><td></td>
<td>飯田 龍 氏(東京工業大学)</td></tr>
</tr>
# error: anlp2013.html: <tr><td class="pid"><a name="T-c"></a></td>
<td><span class="title">言語処理の後先(あとさき):意味はどこから来てどこへ行くのか.</span></td>
<tr><td></td>
<td>齋藤 洋典 氏(名古屋大学)</td></tr>
</tr>
# error: anlp2013.html: <tr><td class="pid"><a name="T-d"></a></td>
<td><span class="title">組合せ最適化入門:線形計画から整数計画まで</span></td>
<tr><td></td>
<td>梅谷 俊治 氏(大阪大学)</td></tr>
</tr>
# error: anlp2013.html: <tr><td class="pid"><a name="S-1"></a></td>
<td><span class="title">脳は計算機科学者に解明されるのを待っている − 機械学習器としての脳 −</span></td>
<tr><td></td>
<td> 一杉 裕志 氏(産総研)</td></tr>
</tr>
# skipped: anlp2013.html: <tr><td class="pid"><a name="S-2"></a></td>
<td><span class="title">役割語研究の現在</span></td></tr>
# error: anlp2013.html: <tr>
<td class="pid"><a name="SP-1"></a></td>
<td>2012年度の論文賞を受賞された著者 (3名)に講演をお願いしています.<br> 論文賞については,オープニングで発表します.</br></td>
</tr>
# error: anlp2014.html: <tr><td class="pid"><span id="invidatedp"></span></td>
<td>
2013年度の論文賞を受賞された著者 (4名)に講演をお願いしています.<br>
論文賞については,オープニングで発表します.
</br></td></tr>
# error: anlp2014.html: <tr><td class="pid"></td>
<td> <span class="title"><a href="html/workshop.html">自然言語処理の発展に向けた情報共有・討論</a></span></td>
<tr><td></td>
<td> </td></tr>
</tr>
# skipped: anlp2015.html: <tr><td class="pid"></td>
<td><span class="title">招待論文</span></td></tr>
# skipped: anlp2015.html: <tr><td class="pid"></td>
<td> <span class="title"><a href="https://sites.google.com/site/kansaimtlog/11">第11回 関西機械翻訳勉強会</a></span></td></tr>
# skipped: anlp2015.html: <tr><td class="pid"></td>
<td> <span class="title"><a href="html/workshop.html">自然言語処理におけるエラー分析(兼:Project Next NLP報告会)</a></span></td>
</tr>