ダウンロードした WikipediaXML ファイルから,見出しと要約を 5,000 記事分だけテキスト抽出

Linuxコマンド

処理の流れ

 状態:確認中  閲覧数:473  投稿日:2016-06-17  更新日:2016-08-11
.shファイル実行
・下記2つのファイルが新規生成される

見出し5,000 記事分
▼data/title.txt … 33.5MB

要約5,000 記事分
▼data/abstract.txt … 141MB



shファイル / extract_title_abstract.sh

 閲覧数:132 投稿日:2016-06-17 更新日:2016-08-13 

shファイル


▼scripts/extract_title_abstract.sh
#!/bin/bash

BASEDIR=$(cd $(dirname $0)/.. && pwd)
DATADIR=$BASEDIR/data
SCRIPTDIR=$BASEDIR/scripts

INPUT=${1:-$DATADIR/jawiki-latest-abstract.xml}
TITLE=${2:-$DATADIR/title.txt}
ABSTRACT=${3:-$DATADIR/abstract.txt}


tmpfile=$(mktemp)
grep -B2 '^<abstract>' $INPUT | grep '^<[ta]' >$tmpfile
grep '^<t' $tmpfile | cut -f2- -d' ' | sed 's,<[^>]*>$,,' >$TITLE
grep '^<a' $tmpfile | sed 's/^<[^>]*>//' | sed 's/<[^>]*>$//' >$ABSTRACT

rm -f $tmpfile




shファイル実行



$ sh extract_title_abstract.sh



実行すると?


下記2つのファイルが新規生成される
▼data/abstract.txt … 141MB
right|thumb|100px|[[Trebuchet MS フォント]]
この記事では言語(げんご、、)について解説する。
日本国語大辞典(小学館)の日本語の項によれば、ニホンゴ° 日本国語大辞典(小学館)の日本語の項によれば、ニッポンゴ°
地理学(ちりがく、、、)は、空間ならびに自然と、経済・社会・文化等との関係を対象とする学問の分野。地域や空間、場所、自然環境という物理的存在を対象の中に含むことから、人文科学、社会科学、自然科学のいずれの性格も有する。地球科学の一分野である。広範な領域を網羅することから、「地理学と哲学は諸科学の母」と称される法政大学文学部地理学科&quot;法政大学文学部地理学科|地理学科とは・・・|教育理念・目的&quot;(2013年4月13日閲覧)。


▼data/title.txt … 33.5MB
アンパサンド
言語
日本語
地理学
EU (曖昧さ回避)
国の一覧
SandBox
パリ
ヨーロッパ
生物


extract_title_abstract.sh / 日本語対比

 閲覧数:164 投稿日:2016-06-19 更新日:2016-08-14 

シェルとして bash を使用


#!/bin/bash

シバン (Unix)
・UNIXスクリプトの#!から始まる1行目のこと
・起動してスクリプトを読み込むインタプリタを指定する
・ここでは、シェルとして bash を使用


「実行中スクリプトがあるディレクトリ」の「親ディレクトリ絶対パス文字列」を、BASEDIRへ格納


BASEDIR=$(cd $(dirname $0)/.. && pwd)
$(cd $(dirname $0)/.. && pwd)


$0
・実行中のスクリプトのパス (bash や sh に渡された引数そのもの) を表す

dirname
・引数で与えたパス文字列のディレクトリ部分を返すコマンド

dirname 引数
・引数文字列のディレクトリ部分だけを返す

dirname $0
・「実行中スクリプトのパス文字列」のディレクトリ部分を返す

pwd
・カレントディレクトリを絶対パスで返すコマンド

$( ... )
・シェルで ... を実行した結果 (標準出力) の文字列に置き換えられる
・$(〜)はコマンド置換の構文
・コマンドの実行結果を取得
・`〜`(バッククォート)と同じ
・バッククォートはエスケープとか入れ子がややこしくなるので普通は使わない
・コマンド置換はサブシェルで実行されるので、元の環境には影響を与えない(この中で cd を記述してもディレクトリは移動しない)
Man page of BASH

&&
・左辺のコマンドがステータス0の正常終了なら右辺も実行する

$(cd DIR && pwd)
$(cd $(dirname $0) && pwd)
・ディレクトリ DIR (相対パスを含む) の絶対パスを取得するためのポータブルな方法
・cdでそのディレクトリーに移動し、pwdでその場所(絶対パス)を取得している
※サブシェルで実行されるので、元の環境には影響を与えない($( ... )の中で cd を記述しても実際のディレクトリは移動しない)
・スクリプトファイルのカレントディレクトリ絶対パス
※どこから実行してもファイルの絶対パスを返す
・実行順序
dirname $0
 ↓
cd $(dirname $0)
 ↓
cd $(dirname $0) && pwd
 ↓
$(cd $(dirname $0) && pwd)

ポータビリティ(可搬性)
・ソフトウェアの分野では「異なる環境への移植のし易さ」を意味する


$(cd $(dirname $0)/.. && pwd)実行例


▼/tmp/script.sh
コマンド 内容 $ bash /tmp/script.sh ← bash にスクリプトとして絶対パスを指定して実行。任意階層より実行 $ bash script.sh  ← bash にスクリプトとして相対パスを指定して実行。▼/tmp/より実行
echo $0 実行中スクリプトのパス /tmp/script.sh
・絶対パスが返る
script.sh
・相対パスが返る
echo $(dirname $0) 「実行中スクリプトのパス文字列」のディレクトリ部分 /tmp
・絶対パスが返る
.
・相対パスが返る
echo $(cd $(dirname $0) && pwd) 「実行中スクリプト」のディレクトリ絶対パス /tmp
・絶対パスが返る
/tmp
・絶対パスが返る
echo $(cd $(dirname $0)/.. && pwd) 「実行中スクリプト」の親ディレクトリ絶対パス /
・絶対パスが返る
/
・絶対パスが返る


DATADIR
・$(cd $(dirname $0)/.. && pwd)/data

テキスト抽出確認 / 「sh extract_title_abstract.sh」内容を一部変更後、個別に順次実施

 閲覧数:134 投稿日:2016-06-20 更新日:2016-08-08 

1.jawiki-latest-abstract.xmlよりデータ抽出


▼/data/jawiki-latest-abstract.xml(1.7G)よりデータ抽出
・「jawiki-latest-abstract.xmlファイル」の<abstract>文字列を検索
・マッチした行とその2行上までを取得
・先頭が<t、または<a のものだけを、a.tmpファイルへ出力
$ grep -B2 '<abstract>' jawiki-latest-abstract.xml | grep '^<[ta]' >a.tmp

grep -B2
・マッチした行とその2行上までを取得
・-Bnは、マッチした行と、そのn行上まで表示
grep のちょっとイカした使い方

先頭が<t
・<title>

先頭が<a
・<abstract>

grep '^<[ta]' >result.text

処理結果
▼/data/a.tmpファイルが作成される
・1.7GB → 246MB
<title>Wikipedia: アンパサンド</title>
<abstract>right|thumb|100px|[[Trebuchet MS フォント]]</abstract>
<title>Wikipedia: 言語</title>
<abstract>この記事では言語(げんご、、)について解説する。</abstract>
<title>Wikipedia: 日本語</title>
<abstract>日本国語大辞典(小学館)の日本語の項によれば、ニホンゴ° 日本国語大辞典(小学館)の日本語の項によれば、ニッポンゴ°</abstract>
<title>Wikipedia: 地理学</title>
<abstract>地理学(ちりがく、、、)は、空間ならびに自然と、経済・社会・文化等との関係を対象とする学問の分野。地域や空間、場所、自然環境という物理的存在を対象の中に含むことから、人文科学、社会科学、自然科学のいずれの性格も有する。地球科学の一分野である。広範な領域を網羅することから、「地理学と哲学は諸科学の母」と称される法政大学文学部地理学科&quot;法政大学文学部地理学科|地理学科とは・・・|教育理念・目的&quot;(2013年4月13日閲覧)。</abstract>



2.▼/data/a.tmp(246MB)よりデータ抽出


$ cd ../
$ cd data

2-1.a.tmp → title.txt
・「見出し」抽出
・「a.tmpファイル」の先頭が「<t」文字列を検索
※ここでは<title>文字列が該当
$ grep '^<t' a.tmp | cut -f2- -d' ' | sed 's,<[^>]*>$,,' >title.txt
・実行すると、下記ファイルが新規生成される
▼data/title.txt … 33.5MB
アンパサンド
言語
日本語
地理学
EU (曖昧さ回避)
国の一覧
SandBox
パリ
ヨーロッパ
生物


cut



2-2.a.tmp → abstract.txt
・「要約」抽出
$ grep '^<a' a.tmp | sed 's/<[^>]*>//g' >abstract.txt
・実行すると、下記ファイルが新規生成される
▼data/abstract.txt … 142MB
right|thumb|100px|[[Trebuchet MS フォント]]
この記事では言語(げんご、、)について解説する。
日本国語大辞典(小学館)の日本語の項によれば、ニホンゴ° 日本国語大辞典(小学館)の日本語の項によれば、ニッポンゴ°
地理学(ちりがく、、、)は、空間ならびに自然と、経済・社会・文化等との関係を対象とする学問の分野。地域や空間、場所、自然環境という物理的存在を対象の中に含むことから、人文科学、社会科学、自然科学のいずれの性格も有する。地球科学の一分野である。広範な領域を網羅することから、「地理学と哲学は諸科学の母」と称される法政大学文学部地理学科&quot;法政大学文学部地理学科|地理学科とは・・・|教育理念・目的&quot;(2013年4月13日閲覧)。
EU



3.▼/data/a.tmp(246MB)ファイル削除


データ抽出後、不要になったファイルを削除
$ rm a.tmp
・実行すると、上記ファイルが削除される




プログラマのための文書推薦入門


Linuxコマンド

cut



週間人気ページランキング / 9-19 → 9-25
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 16
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 15
3 PHPのmb_send_mail関数でメール送信できない | メール処理システム 11
4 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 10
5 tar: これは tar アーカイブではないようです 8
5 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) 8
5 さくらVPS0 8
6 manページ日本語表示 | CentOS 7 (CentOS) 7
6 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 7
7 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
7 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 6
7 PHPファイルでchmodエラー | PHP(プログラミング言語) 6
7 echo と cat の違い 6
8 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 5
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 5
8 「CentOS6」から「CentOS7」への移行 | CentOS 7 (CentOS) 5
8 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? | CentOS 7 2週間無料のお試し期間 Link(さくらVPS) 5
9 6回目-10.Nginxでバーチャルホスト設定確認 | CentOS 7 2週間無料のお試し期間 6回目(さくらVPS) 4
9 cronで定期実行しているphpファイルを、コマンドライン経由で即時実行する | cron(Linuxコマンド) 4
9 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/26 1:01 更新