総研大2025
2025/06/16 (小木曽担当最終回)†
ひまわり用データの作成(続)†
XPath, XSLT†
XPathを使った検索†
- XPathの構文 /軸::ノードテスト[述語]/~
- 例1:/A/child::B/child::*/child::C[position()=1]
- 例2:/雑誌/child::記事[@著者名="上田万年"]/descendant-or-self::node()/child:注[@種類='誤字']
- 省略構文 ファイルのPathに似た書き方になる。普通は省略構文で書く
- 例1:/A/B/*/C[1]
- 例2:/雑誌/記事[@著者名="上田万年"]//注[@種類='誤字']
- 軸 axis
- 基準点(コンテクストノード)からみた方向・親子関係を指定する(child, descendant, parent, descendant-or-self, preceding-sibling...)
- ノードテスト node test
- 名前またはノードの種類を指定する(要素名, *, text(), node())
- 述語 predicate
- []の中に条件を記述して対象を絞り込む。条件式や簡単な関数*1が使える
2025/06/09†
小テスト返却†
XMLで言語資源を作る(続)†
ひまわり用データの作成†
- 本文:corpus.xml (UTF-16LE BOMつき, LF改行)*2
- 設定ファイル:config_tebukuro.xml
文書型定義(DTD)と検証(validation)†
- DTD (Document Type Definition)とは
- XML Schema (XSD)
tebukuro.xmlのDTDを作ってみる†
<!ELEMENT doc (title, author, body)>
<!ATTLIST doc title CDATA #REQUIRED>
<!ATTLIST doc author CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT body (#PCDATA|speech|r|br)*>
<!ELEMENT speech (#PCDATA|r|br)*>
<!ATTLIST speech speaker CDATA #IMPLIED>
<!ELEMENT r (#PCDATA)*>
<!ATTLIST r rt CDATA #REQUIRED>
<!ELEMENT br EMPTY>
- tebukuro.dtd
- tebukuro.xsd
自分の研究用データのXML文書化†
2025/06/02†
正規表現小テスト†
全文検索システム「ひまわり」とXML†
- 全文検索システム「ひまわり」
- ただのテキストファイル(プレーンテキスト)ではなく、XML形式にして、インデックスを付けた専用のデータを利用
- 自分で専用のデータを作ることもできるが、できあがって公開されているパッケージを利用するのが普通
「ひまわり」のインストール†
- ひまわり のダウンロードページからプログラム本体(zipファイル)をダウンロード
- zipファイルを右クリックしてプロパティを見る→「セキュリティ」の右の「許可する」をチェックして「OK」
- ダブルクリックして開き、中のフォルダをまるごとインストール先にコピー
- フォルダ内のhimawari.exeをダブルクリックで起動(MacはHimawari.jar、または最初からMac版をインストール)
「青空文庫パッケージ」のインストール†
- 青空文庫パッケージのダウンロード
- ひまわり用「青空文庫」パッケージのダウンロードページから「日本文学/小説(ndc913) 」をダウンロードして保存
- himawari.exeを起動
- Himawari画面のファイル→インストールをえらび、青空文庫パッケージのzipファイルを指定
- しばらく待つと完了(場合によっては数分から10分程度はかかる)
- 要らなくなったUSBメモリ上の青空文庫パッケージzipファイルは不要なので削除する
HimawariとXMLを使ったコーパス†
XMLで言語資源を作る†
XMLアノテーションの実際†
- VSCodeの拡張機能 XML Language Support by Red Hatを入れておくこと
- 例として(青空文庫の新美南吉「手袋を買いに」)をXMLに
- タグ付き正規表現を使った置換の応用
- ただし、通常の正規表現には、XMLのような入れ子のタグを完全にマッチさせる表現力はない
2025/05/26†
タグ付き正規表現†
- 走[らりるれろ] でgrepした結果を置換するにはどうしたらいいか
- 次のように置換するととんでもないことに…
- 検索文字列:走[らりるれろっ]
- 置換文字列:★走[らりるれろっ]
- タグ付き正規表現:カッコ(半角丸カッコ)と$1($2,$3…)を使う
- 授業資料/タグつき正規表現
正規表現の利用例:中納言の検索結果を整える†
エディタに検索結果の列を貼り付けて置換で整形
- 前後文脈をキーを含む文だけにする
.+# →
#.+ →
- 品詞大分類だけを利用する
-.+ →
- BCCWJのジャンルを整える
- (新) 1 哲学/198.37|(旧) 1 哲学/198
- 前後文脈でマッチした語を抜き出す
正規表現に関する参考資料†
マークアップ言語とXML†
BCCWJのXMLタグセット†
TEI (Text Encoding Initiative)†
2025/05/19†
VSCodeのGrep検索†
- フォルダを開く
- 検索
- "エディターで開く"
正規表現†
正規表現とは†
- 正規表現
- 文字を表すための特殊な文字(メタ文字)を使って文字列のパターンを表現する
- テキストエディタでは置換・検索・grepで利用できる (エディタ以外にもさまざまなアプリケ-ションやコンピュータ言語で利用されている)
- 特殊な文字(メタ文字)はすべて半角
正規表現のいろいろ†
- 繰り返し ? + *
- 正規表現は、パターンが一致する最も長い範囲にマッチする(greedy matching)
- 最短一致の繰り返し +? *?
- グループ化 ()
- or(論理和) |
- 文頭 ^、文末 $
正規表現の応用†
- カタカナ語
- 送りがなの揺れ(行う/行なう)
- 会話文中("「"で始まる文中)の用例を検索する
- 同一文中での共起
- 【課題】VS Codeで正規表現を使ってサンプルテキストのふりがなタグを置換で削除
テキストデータ(青空文庫の夏目漱石作品)の配布†
検索文字列の中での後方参照 (タグ付き正規表現)†
- 検索語の中でマッチした部分を()でキャプチャし、\1として使う
- (..)\1 「ころころ」「毎日毎日」など二文字の繰り返しにマッチ
- (.ろ)\1 「ころころ」「どろどろ」「へろへろ」などにマッチ
- (..)\1\1
- (...)\1
2025/05/12†
日本語電子化資料の歴史†
紙の資料からコーパスまで ~テキストの電子化とアノテーションの高度化†
- (紙の)本文
- (紙の)総索引(コンコーダンス)
- 電子テキスト:テキスト (199x年代~)
- 構造化テキスト:テキスト+XMLによる構造化タグ (200x年代~)
- 単語情報付きのコーパス:テキスト+XMLによる構造化タグ+形態論情報 (201x年代~)
コーパスのファイル形式とアプリケーション†
- ファイル形式と実例
- 電子テキスト:プレーンテキスト
- 構造化テキスト:XMLファイル
- 単語情報付きデータ:単語情報を埋め込んだXML /XMLファイル+CSVファイル
- それぞれの利用アプリケーション
- 電子テキスト:テキストエディタ+grepなど
- 構造化テキスト:全文検索システム「ひまわり」、XMLエディタ(Oxygen, VSCode)、XPath・XSLT
- 単語情報付きデータ:中納言(オンライン)/Chaki.Net・temari(ローカル)
テキストエディタ†
インストールと最初の設定†
- VS Codeのインストール
- WindowsのスタートメニューからMicrosoft Storeを起動
- VSCodeを検索
- インストール をクリック
- または
- ブラウザでhttps://code.visualstudio.com/ へ
- Download for Windowsをクリック
- ~.exeをダブルクリックして指示に従う
- VisualStudio Codeのインストールと設定
- 拡張機能 Japanese Language Packの追加
- ファイルオープン時にエンコーディングを自動判別するよう設定
- 拡張機能 XML Language Support by Red Hatの追加
テキストデータと文字コード†
- 【課題】サンプルテキスト(青空文庫の夏目漱石「こころ」)をダウンロードしてVS codeで開き、UTF-8で保存しなおす
正規表現について†