- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-07-17T10:22:06+00:00","default:ogiwiki","ogiwiki")
[[日本語テキスト処理のためのPC基礎講座2023]]
**はじめに [#x3584c26]
***歴史を振り返る:紙の資料からコーパスまで ~テキストの電子化とアノテーションの高度化 [#s7dfd61c]
+(紙の)本文
+(紙の)総索引(コンコーダンス)
+電子化テキスト:テキストファイル (199x年代~)
--[[授業資料/テキストデータ紹介]]
+構造化テキスト:テキスト+XMLによる構造化タグ (200x年代~)
--[[太陽コーパス>https://ccd.ninjal.ac.jp/cmj/taiyou/]]など
+単語情報付きのコーパス:テキスト+XMLによる構造化タグ+形態論情報 (201x年代~)
--[[現代日本語書き言葉均衡コーパス(BCCWJ)>https://ccd.ninjal.ac.jp/bccwj/]]など
--[[日本語歴史コーパス(CHJ)>https://ccd.ninjal.ac.jp/chj/]]など
***コーパスのファイル形式とアプリケーション [#v16f2d86]
-ファイル形式と実例
++電子テキスト:プレーンテキストファイル,CSVファイル
++構造化テキスト:XMLファイル
++単語情報付きデータ:単語情報を埋め込んだXML /XMLファイル+CSVファイル
---XMLの限界とスタンドオフアノテーション
-それぞれの利用アプリケーション
++電子テキスト:テキストエディタ+grepなど
++構造化テキスト:全文検索システム[[「ひまわり」>https://www2.ninjal.ac.jp/lrc/index.php?%C1%B4%CA%B8%B8%A1%BA%F7%A5%B7%A5%B9%A5%C6%A5%E0%A1%D8%A4%D2%A4%DE%A4%EF%A4%EA%A1%D9]]、XMLエディタ(Oxygen, VSCode)、XPath・XSLTなど
++単語情報付きデータ:中納言(オンライン)/[[Chaki.Net>https://ja.osdn.net/projects/chaki/]](PC上)など
**テキストファイルとテキストエディタ [#d348fb77]
***準備:VS Codeのインストールと設定 [#n73b9aa1]
+VS codeのインストール
--https://code.visualstudio.com/
+拡張機能 Japanese Language Packの追加
--参考:https://web.yokkaichi-u.ac.jp/yucc/archives/1542
+ファイルオープン時にエンコーディングを自動判別するよう設定
--参考:https://www.javadrive.jp/vscode/setting/index3.html
**テキストデータについて [#nc66f223]
--[[授業資料/文字コード関連リンク]]
--[[授業資料/テキストデータ紹介]]
**サンプルテキスト(青空文庫の夏目漱石「こころ」) [#ddcc90cd]
-練習用サンプルデータ[[kokoto.txt>https://www.dropbox.com/s/r89ahi6goxy5a2c/kokoro.txt?dl=1]]
+ダウンロードしてVS codeで開き、UTF-8で保存しなおす
+検索
+置換
+Grep
***正規表現とは [#d216d4e0]
-''正規表現'' [[>用語>http://e-words.jp/w/E6ADA3E8A68FE8A1A8E78FBE.html]]
--文字を表すための特殊な文字(メタ文字)を使って文字列のパターンを表現する
--テキストエディタでは置換・検索・grepで利用できる (エディタ以外にもさまざまなアプリケ-ションやコンピュータ言語で利用されている)
--特殊な文字(メタ文字)はすべて半角
//--特殊な文字そのものを表す場合には\でエスケープする(特殊な意味を打ち消す) 例:1\+2
***正規表現のいろいろ [#q514651f]
-[[授業資料/正規表現]]
--文字クラス [ ]
--文字クラスの否定(補集合)[^ ]
--繰り返し ? + *
--グループ化 ()
--or(論理和) |
--文頭 ^、文末 $
***正規表現の応用 [#c7a3ea2d]
-カタカナ語
--カタカナ(外来語)の形容動詞語幹
-送りがなの揺れ(行う/行なう)
-会話文中("「"で始まる文中)の用例を検索する
-同一文中での共起
--全然~ない。
--もし~なら(ば)
***タグ付き正規表現(キャプチャ) [#z9ef50e5]
-走[らりるれろ] でgrepした結果を置換するにはどうしたらいいか
--次のように置換するととんでもないことに…
---検索文字列:走[らりるれろっ]
---置換文字列:★走[らりるれろっ]
-タグ付き正規表現:カッコ(半角丸カッコ)と\1(\2,\3…)を使う
-[[授業資料/タグつき正規表現]]
***最長一致の原則(greedy matching) [#y047e9bd]
-正規表現は、パターンが一致する最も長い範囲にマッチする
--例:''あ+'' → ''【\1】''
---ああああああああ → 【ああああああああ】
そのせいで…
--例:''「(.+)」'' → ''【\1】''
---「こんにちは」「さようなら」 → 【こんにちは」「さようなら】
--括弧の組ごとに置換するためには''「([^」]+)」'' → ''【\1】'' のように書かなければならない
---「こんにちは」「さようなら」 → 【こんにちは】【さようなら】
-よりかんたんに指定するには(最短一致,ものぐさ指定)
--''「(.+?)」「(.*?)」''のように、繰り返し指定の+*の後に「?」をつける
***検索文字列の中での後方参照 [#ra28185d]
-検索語の中で\1を使う
--(..)\1 「ころころ」「毎日毎日」など二文字の繰り返しにマッチ
--(.ろ)\1 「ころころ」「どろどろ」「へろへろ」などにマッチ
--(..)\1\1
--(...)\1
***正規表現に関する参考資料 [#w86de08b]
-サクラエディタの正規表現:http://sakura-editor.sourceforge.net/htmlhelp/HLP000089.html
-正規表現に関する本 [[amazonで検索>https://www.amazon.co.jp/s?k=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE]]
***ゲームの紹介 [#k337bfef]
-正規表現を学ぶ狩りに出ようRegex Hunting
--https://www.regex-hunting.com/
-【課題3】VS Codeで正規表現を使ってサンプルテキストのふりがなタグを置換で削除
//---|?(\P{sc=Han}+)《(.+?)》