日本語テキスト処理のためのPC基礎講座
~言語処理やプログラミング以前の基礎知識
2018/06/26 コマンドラインツール
GUIとCUI
- コマンドプロンプト(cmd.exe)
- Bash (Linux)
Bash on Ubuntu on Windows
コマンドプロンプトでlinuxのツールを使うには
ディレクトリとファイル操作
バッチ処理
テキスト処理ツール
入出力とパイプ
XMLツール
- xmllint (libxml2)
- xsltproc
※要確認:サクラエディタの改行の取り扱い
2018/05/29 XML
- XML Extensible Markup Language(拡張可能なマーク付け言語)
マークアップ言語とXML
- HTMLとXML
- HTML 言わずと知れたWebページ記述言語
- XHTML XML化したHTML
- SGML HTMLのもと、XMLの先祖
- HTMLとXMLの違い
- HTMLは使えるタグやその意味(タグセット)があらかじめW3Cによって規定されているのに対し、XMLはタグの作り方・使い方などが定義されているだけで利用者が自分でタグセットを決めて使える
- 業界団体などであらかじめタグセットを規定したものもあり、それに則ってつかう方法も MusicXML, MathML, 防災情報XML (東京都の天気)etc.
- 人間にも機械にも可読なデータを目指す
- (参考)HTMLの構造と見た目の分離
- XHTMLは文書の構造(意味)記述に。見た目(スタイル)はCSSで。
- CSSはXMLのスタイル記述にも使われる
- (参考)軽量マークアップ言語
人間が直接記述するのがたいへんなので、簡単な入力形式を変換
- 青空文庫形式
XMLの基本
- 空要素
- <br/>と<br></br>はXMLとして等価
- テキストデータとしてももちろん別のものだが、XMLを解釈するXMLアプリケーションに於いては完全に同じものとして扱われる
- ルート要素
<, >, &
- XMLのタグ等の記述に必要となる記号(<>&)のエスケープシーケンス
曽 🍺
- 文字をunicodeの文字コード番号で参照できる(曽・🍺) &#xは16進数記述
(演習)テキストファイルをXML文書にしてみる
- ノード(node)と軸(Axis)
- 述語(predicate)
XMLの文書型定義と検証
- XML文書の検証(validation)
- Well-formed(整形式)
- Valid(妥当)
- DTD
- XMLスキーマ(xsd)
- RELAX NG
Oxygen
2018/05/08 Excel
基本
- 並べ替えとフィルタ
- 並べ替え(sort)
- テキストフィルタ(≒grep)
- 重複の削除(uniq)
ピボットテーブル
文字列関数
VLOOKUP
ネ申Excel問題
2018/04/17 テキストエディタと正規表現
準備
サンプルデータ
下記のデータ(青空文庫の夏目漱石作品を整形したもの)をダウンロードし、デスクトップに展開(解凍)してください。「なつめそうせき(夏目漱石)」というフォルダができます。
エディタ
正規表現対応のテキストエディタがない人は下記からサクラエディタ(V2)をインストールしてください。
なぜテキストデータか
- 検索・置換、grep・タグジャンプ
- 検索で初出行を調べる
- 置換で用例数を数える
- grepで用例リストを作る
- タグジャンプで文脈を確認する
- フォルダ内のgrep
利用例
- 動詞「日本語」の用例をgrep
- grep結果を置換して表形式にする
- 特殊な記号文字(メタ文字)を使って文字列のパターンを表現する
- エディタでは置換・検索・grepで利用できる(エディタ以外にもさまざまなアプリケ-ションやコンピュータ言語で利用されている)
- 正規表現を使った置換により、プログラミングなしでもかなりの程度まで、テキストの整形・形式変換・データ抽出・チェックなどができる
基本的な正規表現
- 授業資料/正規表現
- 文字クラス [ ]
- 文字クラスの否定(補集合)[^ ]
- 繰り返し(最長一致) ? + * ※
- 繰り返し最短一致 +? *? ※
- n回以上m回以下のくり返し {n,m} ※
- グループ化 ()
- OR(論理和) |
- 文頭 ^、文末 $
タグ付き正規表現
走[らりるれろ] でgrepした結果を置換するにはどうしたらいいか
- タグ付き正規表現
- カッコ(半角丸カッコ)と\1(\2,\3…)を使う
- タグ付けへの応用例 (「.+?」) -> <quote>\1</quote> ※
- 後方参照
- マッチした部分を検索語の中で再利用する 例: (..)\1
最長一致の原則(greedy matching)
- 正規表現は通常、パターンが一致する最も長い範囲にマッチする
- 例:あ+ → 【\1】
- ああああああああ → 【ああああああああ】
そのせいで…
- 例:「(.+)」 → 【\1】
- 「こんにちは」「さようなら」 → 【こんにちは」「さようなら】
- 括弧の組ごとに置換するためには「([^」]+)」 → 【\1】 のように書かなければならない
- 「こんにちは」「さようなら」 → 【こんにちは】【さようなら】
- よりかんたんに指定するには(最短一致,ものぐさ指定)
- 「(.+?)」「(.*?)」のように、繰り返し指定の+*の後に「?」をつける
課題
(検索・置換)
- 夏目漱石『坊ちゃん』における「山嵐」の初出行は何行目か。
- 夏目漱石『坊ちゃん』における「赤シャツ」の用例数は何例か。
- サンプルデータ(夏目漱石の青空文庫全作品)における「言葉」の用例数は何例か。
(正規表現)
- 次の語を検索する場合に用いる検索文字列をできるだけ簡潔な正規表現で記しなさい。
- 形容詞「暗い」(ただし、漢字「暗」で表記されるもの)
- 動詞「蹴る」(漢字「蹴」またはひらがなで表記されるもの)
- 「言葉」が2回出てくる行
- 「「」で始まり、「」」が現れない行
- 「○る○る」(「ぐるぐる」など)
- 次の問いに答えよ。
- サンプルデータ(夏目漱石の青空文庫全作品)における動詞「笑う」および名詞「笑い」の用例数は計何例か
- サンプルデータ(夏目漱石の青空文庫全作品)における形容詞「赤い」の用例数は何例か
(正規表現によるテキスト整形)
次のデータ(「こころ」Wordファイル)をダウンロードして下記の課題を行え。
ただし、データ中に現れる記号は下記のようになっている(青空文庫形式)。
《》:ルビ
(例)私《わたくし》は
|:ルビの付く文字列の始まりを特定する記号
(例)先生一人|麦藁帽《むぎわらぼう》を
[#]:入力者注 主に外字の説明や、傍点の位置の指定
(数字は、JIS X 0213の面区点番号、または底本のページと行数)
(例)※[#「てへん+劣」、第3水準1-84-77]
- 注と振り仮名を削除し1文1行となる形式のテキストファイルを作成せよ。
- 注を削除し、振り仮名を本文と入れ換えたテキストファイルを作成せよ。(例:「私《わたくし》は」→「わたくしは」)
- 1.で作成したデータから、次のような「それぎり」「それきり」のKWIC用例集のExcelデータを作成せよ。
kokoro.txt | 225 | 先生も | それぎり | 何ともいわなくなった。 |
kokoro.txt | 244 | 私もその話は | それぎり | にして切り上げた。 |
見た目と論理構造の話
どっちが「きれいなデータ」だろうか?
太陽コーパス 近代語 書き言葉
日本語話し言葉コーパス 現代語 話し言葉
現代日本語書き言葉均衡コーパス 現代語 書き言葉
日本語歴史コーパス 古代~近代語 書き言葉
太陽コーパス 近代語 書き言葉
日本語話し言葉コーパス 現代語 話し言葉
現代日本語書き言葉均衡コーパス 現代語 書き言葉
日本語歴史コーパス 古代~近代語 書き言葉
ちゃんとしたデータを作るために
- ちゃんとしたデータ=機械処理に適したデータとして大事なのは構造。見た目は気にしないで後回しでよい。後でどうにでもなる。
- テキスト、スプレッドシート(Excel)、一般の文書(Word)、マークアップ(XML)などのデータ設計あらゆることに共通した課題
関連キーワード・リンク集