正規表現

本研究で使用した正規表現の一覧を示す。 基本的には、先に書いてあるものから順番に正規表現を適用するものとする。 下記の正規表現を使用する際は、 毎回パターン修飾子uを付加し、UTF-8として処理を行っている。 (例:/パターン/u) これについては PHP: 正規表現パターンに使用可能な修飾子 - Manualを参照。

正規表現の項目中で、下線を引いている部分は、 プログラム中の変数の値であることを示す。 また、置換パターンの項目中で、数字が中括弧({および})で 囲まれている部分は、正規表現のサブパターンであることを示す。 正規表現のサブパターンについては、 PHP: サブパターン - Manualを参照。

使用した正規表現
正規表現置換パターン
単語抽出時、マッチしたらスキップする表現
^(新しいページ|ログインまたはアカウント作成|履歴表示|編集|メインページ|コミュニティ・ポータル|おまかせ表示|練習用ページ|℃|ヘルプ|お知らせ|バグの報告|寄付|リンク元|関連ページの更新状況|ソース表示|ページ|特別ページ|印刷用バージョン|この版への固定リンク|利用規約|この項目を引用する|免責事項|Mobile view|Simple English|執筆中|RDF|PDF|協力者を求めています|書きかけの節のある項目|節内の全座標を示した地図|MegaNet|最近の|一覧|アップロード|クリエイティブ・コモンズ|プライバシー・ポリシー)$ (なし)
出典|追加|検証|\s|\t|(T|t)emplate:|.*(W|w)ikipedia.*|^http:\/\/.+|^(C|c)ategory: (なし)
(\w)m²*|^(\w)$|("|\'|#|\^|%)|ウィキ.+ (なし)
[0-9〇一元二三四五六七八九十百千]+年|[0-9〇一元二三四五六七八九十百千]+月|[0-9〇一元二三四五六七八九十百千]+日|[0-9〇一元二三四五六七八九十百千]+世紀 (なし)
^(中世|国立|小学校|中学校|高校|高等学校|大学|短期大学|短大)$ (なし)
^(平成|昭和|大正|明治)$ (なし)
\/|(.+) (なし)
(市|県|町|郡|島|村|山|川|新|藩|峠|湖|海|雨|春|夏|秋|冬|湾|道)$ (なし)
^([0-9〇一元二三四五六七八九十百千]+)$ (なし)
^(気候|高原|関東|四国|九州|地方|人口|県庁)$ (なし)
(遺跡|大学|学校|判所|電鉄|道路|大臣|県事|公園)$ (なし)
年表生成時、日付の表記を整形するために使用する表現
([0-9]+年)(([^0-9〇一元二三四五六七八九十百千]+[0-9〇一元二三四五六七八九十百千]+年[^)]*))(.*) {1}{3}
([0-9〇一元二三四五六七八九十百千]+日)
\p{Han}+[0-9〇一元二三四五六七八九十百千]+年(([0-9]+年)[^)]*)([0-9]+月)?((\p{Han}+))(.+) {1}{2}{4}
\p{Han}+[0-9〇一元二三四五六七八九十百千]+年(([0-9]+年)[^)]*)
\p{Han}+[0-9'.KANSUJI.']+年(([0-9]+年)[^)]*) {1}
\p{Han}+[0-9'.KANSUJI.']+年[0-9'.KANSUJI.']+月(([0-9]+年[0-9]+月).*) {1}
/\p{Han}+[0-9'.KANSUJI.']+年[0-9'.KANSUJI.']+月[0-9'.KANSUJI.']+日(([0-9]+年[0-9]+月[0-9]+日).*?) {1}
(.+)(([0-9]+年[^)]+))(.+) {1}{3}
年表生成時、日付の書式をチェックする表現(1)
[0-9][0-9][0-9][0-9]?年.*?[0-9]+月.*?[0-9]+日.*。 (なし)
[0-9][0-9][0-9][0-9]?年.*?[0-9]+月.*。 (なし)
[0-9]+月.*?[0-9]+日.*?。 (なし)
年表生成時、特殊な日付の書き方に対応する表現
(.+)(([0-9][0-9][0-9][0-9]?年))(.*。) {1}{3}
([^0-9]+)([0-9][0-9][0-9][0-9]?年現在、?)(.*。) {1}{3}
。([^0-9。]+)(は)([0-9][0-9][0-9][0-9]?年)に?(.*。) {1}{2}{4}
(.+)([0-9][0-9][0-9][0-9]?年(.+)) {1}{2}
(.+)の([0-9][0-9][0-9][0-9]?年)に(.+) {1}に{3}
(.+)は([0-9][0-9][0-9][0-9]?年)に(.+) {1}は{3}
年表生成時、日付の書式をチェックする表現(2)
[0-9][0-9][0-9][0-9]?年.*。 (なし)
[0-9]+月.*。 (なし)
年表生成時、マッチしたらスキップする表現
^また、|.*中略.*|[0-9]+年前 (なし)
[0-9]+年BP', '以下の通り(。|、)?$ (なし)
(以来|以下|以降)(。|、)?$ (なし)
年表生成時、出来事の文章に適用する表現(1)
出来事が起きた日付の年 同年
年表生成時、出来事の文章に適用する表現(2)
^((.+?)(\s\-\s)?の?(には)?)
^(\s?\-\s)|^(\s?–\s)|^(\s?[::]\s?)|^の|^に?、|^には?|^(頃に?)
^から.*にかけて|^からは?|同日|^-|(・[0-9]+年)+\s?-?\s?|[0-9]+日+\s?-?\s?
^起きた|^さらに
年表生成時、出来事の文章に適用する表現(3)
^、|^。
(^に)([一-龠]+) {2}
(^代に) この年代に
年表生成時、出来事の文章に適用する表現(3)
(([^()]+?)。?)$|([^)]+$
穴埋め・多肢選択式問題生成時、マッチしたらスキップする表現
^ただし|^しかし|^また|)。$|その後|出典|人口|^(.*)$ (なし)
^それ|^その他|^特に (なし)
^[、。,.]$|^\s$ (なし)
穴埋め・多肢選択式問題生成時、問題文に適用する表現
^((中でも|他方で|他に|一方|この|むしろ)(、*))
、+。+$
多肢選択式問題生成時、問題文に適用する表現
(る。)$ るのは?
(い。)$ いのは?
(ぶ。)$ ぶのは?
(た。)$ たのは?
(く。)$ くのは?
(。)$ なのは?
単語群問題生成時、データベースに登録された単語(括弧に囲まれていない)を検出する表現
(?!(.*|\(.*)単語(?![^(\(]*)|[^(\(]*\)) #数値#

データベース

本研究で使用したデータベースの構成について記述する。

データベース構成図
autogenデータベース共通事項
データベースエンジン照合順序
MyISAM utf8_unicode_ci
articleテーブル
項目名データ型説明
idint自動インクリメントが有効・主キー
datetimedatetimeデータが登録された日付
namevarchar(100)記事のURL
datalongtext記事のXML文書
sizeint記事のサイズ
basedataテーブル
項目名データ型説明
idint自動インクリメントが有効・主キー
nametext都道府県名
areadouble都道府県の面積
neighborstext隣接都道府県名(カンマ区切り)
history_eventテーブル
項目名データ型説明
idint自動インクリメントが有効・主キー
wordtext歴史上の出来事の単語名
urltext歴史上の出来事の記事URL
lengthint歴史上の出来事の記事のサイズ
NGtinyintNGワード設定(0: NGではない, 1: NG)
wordrankテーブル
項目名データ型説明
idint自動インクリメントが有効・主キー
wordvarchar(30)単語名
countint単語が登場した記事の数
scoredouble情報量

データベース構造(phpMyAdminでエクスポート済)
ダウンロード

プログラム

ソースコード
ダウンロード

ファイル内容
ファイル名種類説明
classes.phpPHP Script クラスの定義。
func.phpPHP Script ほとんどの関数の定義。
getall.phpPHP Script 47都道府県全ての記事を取得してデータベースに保存する画面。
getwrank.phpPHP Script 単語の情報量をデータベースから読み込む画面(デバッグ用)。
history_ng.phpPHP Script 歴史上の出来事・人物のNGワード設定画面。
jquery-1.6.4.min.jsJavaScript jQuery。history_ng.phpで使用。
quiz.cssスタイルシート 結果表示に使用するスタイル。
test4.phpPHP Script 問題を生成・表示する画面
text.phpPHP Script テキスト関係の関数の定義。