Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

コーパスの準備

良質な学習コーパスは、モデルの精度にとって不可欠です。このガイドでは、Universal Dependencies (UD) Treebanks を使用したコーパスの準備方法を説明します。

データソース: UD Treebanks

Litsea は単語分割と品詞推定の両方のデータソースとして UD Treebanks を使用します。UD Treebanks は、多くの言語に対して CoNLL-U 形式の高品質な手動アノテーション済みデータを提供しています。

利用可能な Treebanks

言語ツリーバンクリポジトリ
日本語UD Japanese-GSDUD_Japanese-GSD
中国語UD Chinese-GSDUD_Chinese-GSD
韓国語UD Korean-GSDUD_Korean-GSD
英語UD English-EWTUD_English-EWT

ステップ 1: UD Treebank のダウンロード

scripts/download_udtreebank.sh を使用して UD Treebank をダウンロードします。スクリプトは学習用 CoNLL-U ファイルのパスを標準出力に出力します:

conllu_file=$(bash scripts/download_udtreebank.sh -l ja -o /tmp)

対応言語: ja(日本語、デフォルト)、ko(韓国語)、zh(中国語)、en(英語)。-o で出力ディレクトリを指定できます(デフォルト: カレントディレクトリ)。

単語分割用コーパス

単語分割(AdaBoost)用のコーパスは以下の条件を満たすプレーンテキストファイルである必要があります:

  • 1行1文
  • 単語をスペースで区切る
太郎 は 走っ た 。
Litsea は コンパクト な 単語 分割 ソフトウェア です 。

CoNLL-U から単語分割用コーパスに変換

scripts/corpus_udtreebank.sh を使用して、CoNLL-U ファイルからスペース区切りの単語を抽出します:

conllu_file=$(bash scripts/download_udtreebank.sh -l ja -o /tmp)
bash scripts/corpus_udtreebank.sh "$conllu_file" corpus.txt

これにより、CoNLL-U データがスペース区切りの単語(1行1文)に変換されます。

空白保持 TSV コーパス(韓国語、英語)

上記のスペース区切り形式では、元の文の空白情報は失われます(学習時には単語が空白なしで連結されます)。韓国語と英語ではこれにより最も強力な境界シグナル(韓国語の語節間の空白、英語の単語間の空白)が失われてしまうため、代わりに -s フラグを使用します。このフラグは、(ツリーバンクの SpaceAfter アノテーションから復元した)元の各空白を独立したトークンとして保持する タブ区切りコーパス を出力します:

conllu_file=$(bash scripts/download_udtreebank.sh -l ko -o /tmp)
bash scripts/corpus_udtreebank.sh -s "$conllu_file" ko_corpus.tsv

conllu_file=$(bash scripts/download_udtreebank.sh -l en -o /tmp)
bash scripts/corpus_udtreebank.sh -s "$conllu_file" en_corpus.tsv

英語に特有の点として、-s は複合語トークン(don't のような短縮形。CoNLL-U では 2 つの単語行にまたがる範囲行として表現されます)も処理します: 範囲に属する単語同士は間に空白トークンを挟まずに連結され、範囲自体の SpaceAfter アノテーションは最後の構成単語の後に適用されます。詳細は英語を参照してください。

TSV コーパスからの特徴量抽出には litsea extract --format tsv を使用します。-s-p と併用でき、単語/品詞 トークンの空白保持 TSV を出力します – これがスペース区切りの言語における二段構成 POS の学習コーパスであり(issue #198)、litsea extract --pos --format tsv で読み込みます。

品詞推定用コーパス

品詞推定(Averaged Perceptron)を行う場合、各単語に品詞タグを付与した形式のコーパスを使用します。

品詞付きコーパスの形式

1行1文で、各単語を 単語/品詞 の形式でスペース区切りに記述します:

これ/PRON は/ADP テスト/NOUN です/AUX 。/PUNCT
Litsea/PROPN は/ADP 単語/NOUN 分割/NOUN ソフトウェア/NOUN です/AUX 。/PUNCT

品詞タグは Universal POS (UPOS) タグセットに準拠し、17カテゴリで構成されます: ADJ, ADP, ADV, AUX, CCONJ, DET, INTJ, NOUN, NUM, PART, PRON, PROPN, PUNCT, SCONJ, SYM, VERB, X。

CoNLL-U から品詞付きコーパスに変換

scripts/corpus_udtreebank.sh-p オプションを指定して、CoNLL-U ファイルを 単語/品詞 形式に変換します:

conllu_file=$(bash scripts/download_udtreebank.sh -l ja -o /tmp)
bash scripts/corpus_udtreebank.sh -p "$conllu_file" pos_corpus.txt

複合語トークンや空ノードは変換時に自動的に処理されます。

コーパスの自動作成

Litsea には、UD Treebank のダウンロードと変換を自動化するヘルパースクリプトが scripts/ ディレクトリに用意されています:

  • scripts/download_udtreebank.sh – UD Treebank をダウンロードし、学習用 CoNLL-U ファイルのパスを出力します
  • scripts/corpus_udtreebank.sh – CoNLL-U ファイルを Litsea のコーパス形式に変換します
# UD Treebank をダウンロードして CoNLL-U ファイルのパスを取得
conllu_file=$(bash scripts/download_udtreebank.sh -l ja -o /tmp)

# 単語分割用コーパスを生成
bash scripts/corpus_udtreebank.sh "$conllu_file" corpus.txt

# 品詞付きコーパスを生成
bash scripts/corpus_udtreebank.sh -p "$conllu_file" pos_corpus.txt

download_udtreebank.sh の対応言語: ja(日本語、デフォルト)、ko(韓国語)、zh(中国語)、en(英語)。

Wikipedia ダンプからのコーパス作成

大規模な学習データが必要な場合、Wikipedia の全文ダンプから scripts/corpus_wikidump.sh を使ってコーパスを作成できます。このスクリプトは wicket でプレーンテキストを抽出し、文章のみをフィルタリングした後、lindera でトークナイズします。

使い方

# 日本語(デフォルト)
bash scripts/corpus_wikidump.sh jawiki-latest-pages-articles.xml.bz2 corpus_ja.txt

# 韓国語
bash scripts/corpus_wikidump.sh -l ko kowiki-latest-pages-articles.xml.bz2 corpus_ko.txt

# 中国語
bash scripts/corpus_wikidump.sh -l zh zhwiki-latest-pages-articles.xml.bz2 corpus_zh.txt

オプション

オプション説明デフォルト
-l lang言語コード: ja, ko, zhja
-n max_lines処理する最大文数(0 = 無制限)100000

文章フィルタリング

スクリプトは以下の2つのフィルタを適用し、整形された文章のみを抽出します:

  1. 文末記号 – 行が .!? で終わる必要があります。これにより、セクション見出し(例: 「参考文献」)、箇条書き項目、メタデータが除外されます。
  2. 最小文字数 – 行は20文字以上である必要があります。これにより、短い断片や孤立したラベルが除外されます。

トークナイザー辞書

言語辞書トークンフィルタ
日本語 (ja)embedded://unidicjapanese_compound_word(数詞複合語)
韓国語 (ko)embedded://ko-dicなし
中国語 (zh)embedded://cc-cedictなし

コーパスサイズのガイドライン

推奨されるコーパスサイズは用途によって異なります:

サイズ(文数)用途
~10,000プロトタイピングや動作確認の最小限
50,000 – 100,000モデル学習の実用的な範囲
100,000 – 500,000高品質でロバストなモデル
無制限最大精度を目指す場合は全量使用

corpus_wikidump.sh のデフォルト max_lines=100000 は、実用〜高品質の範囲を想定しています。

コーパスの品質に関するヒント

  • 多様性 – さまざまな分野のテキストを含める(ニュース、文学、ウェブなど)
  • データ量 – 推奨サイズはコーパスサイズのガイドラインを参照
  • 一貫性 – コーパス全体で一貫したトークン化を確保する
  • 重複排除 – 偏りを避けるために重複文を除去する
  • クリーニング – HTML タグ、特殊なフォーマット、非テキストコンテンツを除去する