"BOKU"のITな日常

62歳・文系システムエンジニアの”BOKU”は日々勉強を楽しんでます

自然言語の学習に必要なテキストデータ(コーパス)を集める方法あれこれ。

自然言語の学習・推論の勉強に必要なテキストデータ(コーパス)を集める方法について書いてみようと思います。

f:id:arakan_no_boku:20190404222009j:plain

 

WEBスクレイピングは相手に迷惑だから考えたくない

 

データを取得する方法として、WEBスクレイピングを紹介する本や記事があります。 

便利なのはわかりますが、注意が必要です。

大量一括処理すると、相手方のリソースを不当に消費します。

負荷がかかりすぎないように配慮する必要があります。

自分が利用しているpythonプログラムを紹介します。

負荷がかからないように一つずつURLを指定する使い方しか想定してません。

ブラウザで表示するかわりに、テキストデータで抜き取るだけの処理です。

# -*- coding: utf-8 -*-
import requests as web
import bs4
import re
import codecs

spaces = r'[\s\t ]'
output_file = "output.txt"
resp = web.get('http://arakan-pgm-ai.hatenablog.com/entry/2017/02/03/190828')
resp.raise_for_status()

# 取得したHTMLをパースする
soup = bs4.BeautifulSoup(resp.text, "html.parser")
# 検索結果のタイトルとリンクを取得
link_elem = soup.select('p')
fout = codecs.open(output_file, 'w', 'utf8') 
for i in range(len(link_elem)):
    s = re.sub(spaces,"",link_elem[i].get_text())
    if(re.sub(r'[\r\n]',"",s)): #改行のみ以外
        fout.write(s + "\r\n")
fout.close()

 

やってることは指定したURLにアクセスして、<p></p>に囲まれている部分のテキストだけ抜き出し、余分な空白や改行だけの空行とか以外をファイルに書き出しています。

はてなブログを想定しています。 

 

フリーのライセンスのテキストデータ

 

テキストデータをフリーのライセンスで公開されてるものがあります。

自分が知っている有名所は、この3つです。

 これらには、それぞれに特徴があります。

 

青空文庫は素晴らしい。古典が多いのは当然だけど。

 

青空文庫著作権切れの小説とかが中心です。 

テキストを分類するとかの用途には、作家別に取得できるのですごく使いやすいです。 

例えば、芥川龍之介太宰治を学習させて、新たに入力した文章がどちら風かを判定させるとか(思いつきで書いてますけど・・)やってみるとかですね。 

でも、どうしても古典的な作品が多くなります。 

だから、現代文よりの文章を期待すると、ちょっと厳しいです。

 

Wikipediaのテキストはとにかくサイズがでかい

 

wikipediaは、意味のある文章の宝庫です。 

だから、日本語の自然言語処理の対象データとしては、素晴らしいな・・と常々思います。 

でも、当たり前ですが・・サイズがでかいです。 

ここにアクセスすると、インデックスが表示されます。

f:id:arakan_no_boku:20180211214332j:plain

ここで、latest以外の最新の日付を選択します。 

latestを選んでも良いですが・・生のダンプデータなので、どれを使って良いかわからないと思います。 

日付のリンクを選ぶと、こんな感じのページが表示されます。

f:id:arakan_no_boku:20180211215511j:plain

 

このページから、「pages-meta-current.xml.bz2 : 全ページの最新版のダンプ」をダウンロードすれば良いです。 

ですが、1ファイルが数百MB~1GB近くあり、それが数ファイルにわかれてます。 

ダウンロードサイズ(圧縮ファイル)で400MB未満だったファイルを解凍すると、約1.5GBのサイズのテキストデータになりました。 

 

livedoor ニュースコーパスは手軽で使いやすい

 

一番、使いやすいのは、これです。 

HTMLタグとかを取り去ったテキストデータですし。 

1ファイルが数KB程度と非常にコンパクトです。 

内容はスポーツやトピックなど様々なジャンルのニュースです。 

例えば。

http://news.livedoor.com/article/detail/5907376/
2011-10-03T11:59:00+0900
紳助とたけしの明暗を分けたものとは
今年で20回目を迎えたTBSのオールスター感謝祭に、1回目から総合司会を務めていた島田紳助さんの姿は無かった。

司会者不在という異例の事態に、その場にいたタレントの持ち回りで司会が進められる中、思わぬ芸能人の登場に会場が盛り上がる。自身も暴力団との関わりを指摘されていたビートたけしだ。

たけしらしいユーモアがあり、かつ無理難題な出題に会場が沸いた。ひな壇の芸能人たちは紳助不在でのびのびとしているようにも見える。

のような文章ですから、とても使いやすいので重宝してます。 

 

 

以上です。 

今回はこんなところで。

ではでは。