mocchaso note

サーバーエンジニアが何か色々呟いているところ。

言語処理100本ノック 2020「28. MediaWikiマークアップの除去」

(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note

27本目に続き、↓をベースに実装しました。 qiita.com

ファイルの除去に関しては、上記サイトとは異なり、内部リンクマークアップの除去とは別パターンでマッチさせました。
(内部リンクマークアップの除去にて、表示文字の箇所にlangテンプレートを含む場合も検知できるように改造したため)

+以下、実装している上での学び等のメモです。

正規表現の記法

  • ?:
    後方参照(キャプチャ)しないグループ化。
  • ^
    行頭だけではなく、文字の否定も表すことができる。
    文字クラス([xyz]のように使うパターン)の最初の括弧の直後に^が来ていたら、「否定」
    ※例: [^|] = |以外の文字にマッチするパターン

テンプレート

+自分の方では、Cite webテンプレート、centerテンプレートも行けそうだったので、除去してみました。
lang
仮リンク
Cite Web
center

言語処理100本ノック 2020「27. 内部リンクの除去」

(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note

上記まとめにも記載した解説記事より、マッチングパターンを流用しました。 qiita.com

\[\[(?:[^|]*?\|)??([^|]*?)\]\]
このマッチングパターンの仕組みは、素人の言語処理100本ノック:27 で細かく説明されています。
正規表現のメタ文字列を1個ずつ追うことができたので良かった...!

言語処理100本ノック 2020「22. カテゴリ名の抽出」

(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note

「括弧でパターンの一部を抽出」できればOKです。
下記サイトの、正規表現パターンの活用例 → 括弧でパターンの一部を抽出
note.nkmk.me

言語処理100本ノック 2020「19. 各行の1コラム目の文字列の出現頻度を求め,出現頻度の高い順に並べる」

(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note

cut -f 1 popular-names.txt | sort | uniq -c | sort -r -k 1 -t ' '
sort -r -kkオプションで、1, 3, 1000等数字をどれにしても出力結果が変わらないのは何故?
→ ※考え&調査中

言語処理100本ノック 2020「18. 各行を3コラム目の数値の降順にソート」

(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note

sortのtオプションでタブ区切りを指定する時は、先頭に$マークを付ければOKです。
qiita.com

ただ、Ubuntuだとこの書き方は出来ないみたいです...。
単に-t \tと指定してみたらうまく動きました。

-t
    列の区切り文字を指定する。デフォルトはスペース。 -t, でコンマ区切りになる。 
    bashやzshでは -t $'\t' でタブ区切りのファイルを処理できるようになる。 
    Ubuntuの /bin/sh の実態はdashで、dashではこのタブの書き方ができない。

hydrocul.github.io

言語処理100本ノック 2020「12. 1列目をcol1.txtに,2列目をcol2.txtに保存」

(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note

区切り文字をタブにしたい時は、何も指定しなくてOK
cutのデフォルト区切り文字はタブ
takuya-1st.hatenablog.jp