全文検索システム『ひまわり』
講習会
山口昌也（国立国語研究所）

全文検索システム『ひまわり』講習会資料（2017-09-07）

本日の内容 全文検索システム『ひまわり』を使って，各種のコーパスを利用する方法を紹介『ひまわり』 （ver.1.6_ls2 = ver.1.6b02+実習資料・開発版）
 国会会議録（本会議） 名大会話コーパス
 青空文庫（サンプル） 全体的な流れ『ひまわり』の紹介と基本的な使い方
 さまざまな検索と各種機能
 コーパスの構造と検索
 応用例
 テキストデータのインポート

2

『ひまわり』とは 言語研究用の全文検索システム

指定された文字列を網羅的に検索して，前後文脈付きで結果を表示します（コンコーダンサ） 『太陽コーパス』（２０世紀初頭の総合雑誌『太陽』）用の検索システムとして構築しました 特徴

ＸＭＬでタグづけされたコーパスを全文検索できます Windows, Mac OS, Linux など，多くのOS上で動作します 無料ですVer.1.6 ⇒ 統計的な分析に必要なデータの収集支援機能を強化（例：総文字数，総単語数）
3

『ひまわり』の基本的な使い方

4

『ひまわり』を起動する
普段使うとき（Windows 専用）
himawari.exe
himawari.exe

himawari_debug.exe

コーパスを作るとき
検索の途中経過を見たいとき（Windows 専用）
himawari_debug.exe

汎用（Windows，Mac，Linux など）
himawari.jar
himawari.jar

5コーパスの選択
 ［ファイル］⇒［コーパス選択］

本日使うコーパス（「外部DB」
6）

コーパスファイルに直接記述していない付与データを格納『青空文庫』サンプルの場合
は，形態素解析結果従来どおり，設定ファイルを『ひまわり』にドロップする方法でもOK

検索する「検索文字列」欄では右クリックで履歴表示

検索文字列

検索の実行

検索結果途中経過の表示
7

検索総数

ブラウザでの閲覧

閲覧したい用例をダブルクリック

閲覧用のブラウザの変更
検索キーは，
赤い字で表示［ツール］⇒［オプション］⇒ [ブラウザ]
8検索結果のソート
列名を左クリック

昇順
列タイトルをクリック



複数列を考慮したい場合


優先順位の逆順でソートを実行

降順
シフトキーを押しながら列タイトルをクリック

9



例：「話者」ごとに「後文脈」でソート→ 「後文脈」「話者」の順

結果の絞り込み
 検索時に指定「著者」欄が「夏目」で始まる結果のみに絞り込まれる 検索後に絞り込み絞り込みたい値を選択⇒右クリック⇒フィルタでもＯＫ
10

列名を右クリックさまざまな検索と各種機能

11前後文脈の制限A)

B)

後文脈を「は」で「始まる」に制限

正規表現で「は」で「始まる」を表現

私

私＾ … 文字列の先頭を表すC)「私」＋格助詞，係助詞

私（「検索オプション」の「後文脈を含む」をチェックしてみましょう）

12

単語での検索（１）

青空文庫サンプル（形態素解析結果付き）を対象に
config_aozora_sample.sd.xml

 単語単位で正規表現検索

単位をまたいだ検索はできない 青空文庫サンプルは，MeCab (ver.0.996)で解析
 名大会話コーパスについては，HPを参照
A)「日」を含む単語「基本形ー１」「基本形１」
欄は，それぞれ前後の単語の基本形

B)「キー」欄（出現形）の一覧を求める「キー」欄のどれかを選択⇒右クリック⇒統計13

単語での検索（２）C)

先頭が「日」の単語
正規表現の「^」（文字列の先頭）D)

末尾が「日」の単語
正規表現の「$」（文字列の末尾）

E)

単語「日」のみF)

活用語の基本形すべての語形を一括して検索

14

青空文庫サンプル（形態素解析結果付き）を対象に
config_aozora_sample.sd.xml

形態素解析結果の閲覧
この機能は，config_xxx.sd.xml タイプの資料のみ実行可能
当該作品の形態素一覧⇒Shift + ダブルクリック

語彙一覧（頻度付き）⇒（どの行でもよい）「品詞」 「基本形」「活用型」
を Ctrl + クリックで選択⇒右クリック
⇒統計
テキスト
進行方向

15

※macOSの場合は，commandコーパスの構造と検索

16

コーパスの構造と検索（青空文庫サンプル） コーパス全体の構造コーパス

一覧機能（ユーザ入力）で付与情報を閲覧

記事ｒ （ルビ）
（こころ）
morph



記事

記事＋morph記事ｒ （ルビ）（吾輩は猫である）
morph
記事
ｒ （ルビ）（猿蟹合戦）morph
記事
ｒ （ルビ）（蜘蛛の糸）
morph

17

各「記事」に含まれる単語数を計測

コーパスの構造と検索（青空文庫サンプル） 記事部分記事
ヘッダ（タイトルや著者名）
本文
ｒ （ルビ）

本文
ｒ （ルビ）

morph

（本文）
morph

コーパス本体を見たい場合
Corpora/aozora_sample/corpus.xml

フッタ（書誌情報や著作権表示）

ブラウザで閲覧した記事
Corpora/aozora_sample/xslt/__searched_tmp.xml※「秀丸」などのテキストエディタを利用のこと

18

config_kokkai_honkaigi.xml

コーパスの構造と検索（国会会議録）
corpus
会議録
会議録:

corpuscorpuscorpus
会議録
会議録
会議録
会議録
会議録
会議録

:



計８個のサブコーパス







:




Control キー + 左クリックで複数選択

Control キー + aで全選択

001-048回
049-096回
097-144回
145回-

サブコーパスにしている
理由


19

001-048回
049-096回
097-144回
145回-

衆議院/本会議


会議録 :
会議録
会議録

会議録

参議院/本会議

ファイルサイズ・検索速度などシステム上の制約
テキストの品質（145回より古い会議はOCRによるテキスト入力）

コーパスの構造と検索（国会会議録）
 会議録全体
衆議院，本会議，９９９回，９９号（minutes）
討議前部分



議事日程
会議案件
式辞など

最初の発言が始まるまでの内容



正規表現検索は，通常の検索よりも低速



発言者検索では，結果の発言全体が「キー」欄に入る

討議部

最初の発言から最後の発言までの内容

コーパス本体を見たい場合
Corpora/Kokkai/honkaigi/corpus_sangiin_hon0x.xml

討議後部分



終了時間
出席者など

最後の発言以降の内容

ブラウザで閲覧した記事
Corpora/Kokkai/xslt/__searched_tmp.xml※「秀丸」などのテキストエディタを利用のこと

20

コーパスの構造と検索（国会会議録）
 討論部分
付属情報は本文の全文検索から除外

21



発言者の「国会太郎」を全文検索してもマッチしない

ブラウザ表示では，付属情報も含めて表示される

「法律案を」にマッチする「（内閣提出、衆議院送付）」は読み飛ばされる「国会会議録」パッケージを概観する


収録されている会議録一覧



発言者一覧

22

応用例

23

国会会議録config_kokkai_honkaigi.xml

表記の経年変化１「条件」と「條件」の検索

参議院/本会議(001-048回) を対象に「条件」と入力して，「字体変換」ボタン

２ 「キー」「開催日」のセルを選択し，「統計」※常用漢字の旧字体に変換

３

年月日を年に置換

４

再集計「キー」「開催日」を選択

右クリック
正規表現

-.*

現在の頻度欄の値を考慮

24

発言者の年齢分布の経年変化
１

２

発言者の一覧

［ツール］⇒［一覧］⇒ [ユーザ入力]

エクスポート３date 属性（開催年月日）

Excel などの外部プログラムに「貼り付け」

birth_year
属性（発言者生年）

下図はピポットテーブルでクロス集計し，グラフ表示したもの

整形

衆議院・本会議100%

年月日⇒年変換



生年が空白のデータをフィルタリング⇒列名を右クリック⇒フィルタ⇒文字列指定（正規表現の「.」 ）

2580%
60%
40%
20%0%
1940

1950

1960

年齢

304050

1970

1980

1990

607080

2000
90

2010

各種応用例A)

青空文庫サンプル（形態素解析結果付き）を対象に
config_aozora_sample.sd.xml

共起語の集計（「～へ行く」，「～に行く」）「基本形－２」欄に対して，「統計」機能を適用

B)

文字種の指定（例：カタカナ列の単語）¥p{InHiragana} … ひらがな
¥p{InKatakana} … カタカナ
¥p{InCJKUnifiedIdeographs} … 漢字+… 直線の文字の繰り返し

C)

繰り返し表現の抽出() … 範囲を定義¥n … n番目の範囲(..)¥1 … 1番目の範囲の繰り返し

26

macOSの場合， 「¥」は上図のように逆スラッシュ（optionキー+「¥」）を使用

テキストファイルのインポート
sampleフォルダを，起動している『ひまわり』にドラッグ＆ドロップlesson/sample フォルダakutagawa_ryunosukemiyazawa_kenji





27

kumono_ito.txt
yamanashi.txt

フォルダの情報をインポート時に利用

フォルダ階層 ⇒ Path 欄

ファイル名 ⇒ タイトル欄

生テキストやHTML，XMLをインポート可能

文字コードは自動判別

詳細オプションで形態素解析も実行可能（MeCab もしくは JUMAN をインストールのこと）



インポート時の文字列変換規則も定義可能インポート時のオプション


文字正規化


ユーザ定義： 半角英数字⇒全角(.himawari_import_config.xml参照)



NFKC: Unicodeで規定される正規化


例： 全角英数字 ⇒ 半角英数字



例： 半角カタカナ ⇒ 全角カタカナ

テキスト変換

resources/htd/aozora.htd で定義


改行位置に，<br />を挿入注記，ルビをタグに変換

変換後［＃８字下げ］一［＃「一」は中見出し］
ある日の事でございます。御釈迦様《おしゃかさま》は極楽の蓮池《はすいけ》のふちを、独りでぶらぶら御歩きになっていらっしゃいました。

変換前28<br /><注 内容="＃８字下げ" 付与="" 種別="注記" />一<注 内容="＃「一」は中見出し" 付与="" 種別="注記" /><br /><br />
ある日の事でございます。<r rt="おしゃかさま">御釈迦様</r>は極楽の<r rt="はすいけ">蓮池</r>のふちを、独りでぶらぶら御歩きになっていらっしゃいました。

おわりに 全文検索システム『ひまわり』チュートリアル
 『ひまわり』の紹介と基本的な使い方
 さまざまな検索と各種機能
 コーパスの構造と検索

 応用例

 さらに詳しく知るには『ひまわり』ホームページ（ver.1.6は本年度安定版になる予定）
 『ひまわり』用各種パッケージのWebページ
 青空文庫
 名大会話コーパスなど

29

参考資料
 全文検索システム『ひまわり』(http://www2.ninjal.ac.jp/lrc)『国会会議録』パッケージ 『名大会話コーパス』パッケージ 『ひまわり』で『日本語話し言葉コーパス』を利用する方法
 簡単な検索用データの作成方法2
 正規表現Java Pattern クラス（ 『ひまわり』で利用できる正規表現の仕様）(https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Pattern.html)

30「Java正規表現の使い方」(http://www.javadrive.jp/regex/)