wp2txt 1.1.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.dockerignore +12 -0
- data/.github/workflows/ci.yml +13 -13
- data/.gitignore +14 -0
- data/CHANGELOG.md +284 -0
- data/DEVELOPMENT.md +415 -0
- data/DEVELOPMENT_ja.md +415 -0
- data/Dockerfile +19 -10
- data/Gemfile +2 -8
- data/README.md +259 -123
- data/README_ja.md +375 -0
- data/Rakefile +4 -0
- data/bin/wp2txt +863 -161
- data/lib/wp2txt/article.rb +98 -13
- data/lib/wp2txt/bz2_validator.rb +239 -0
- data/lib/wp2txt/category_cache.rb +313 -0
- data/lib/wp2txt/cli.rb +319 -0
- data/lib/wp2txt/cli_ui.rb +428 -0
- data/lib/wp2txt/config.rb +158 -0
- data/lib/wp2txt/constants.rb +134 -0
- data/lib/wp2txt/data/html_entities.json +2135 -0
- data/lib/wp2txt/data/language_metadata.json +4769 -0
- data/lib/wp2txt/data/language_tiers.json +59 -0
- data/lib/wp2txt/data/mediawiki_aliases.json +12366 -0
- data/lib/wp2txt/data/template_aliases.json +193 -0
- data/lib/wp2txt/data/wikipedia_entities.json +12 -0
- data/lib/wp2txt/extractor.rb +545 -0
- data/lib/wp2txt/file_utils.rb +91 -0
- data/lib/wp2txt/formatter.rb +352 -0
- data/lib/wp2txt/global_data_cache.rb +353 -0
- data/lib/wp2txt/index_cache.rb +258 -0
- data/lib/wp2txt/magic_words.rb +353 -0
- data/lib/wp2txt/memory_monitor.rb +236 -0
- data/lib/wp2txt/multistream.rb +1383 -0
- data/lib/wp2txt/output_writer.rb +182 -0
- data/lib/wp2txt/parser_functions.rb +606 -0
- data/lib/wp2txt/ractor_worker.rb +215 -0
- data/lib/wp2txt/regex.rb +396 -12
- data/lib/wp2txt/section_extractor.rb +354 -0
- data/lib/wp2txt/stream_processor.rb +271 -0
- data/lib/wp2txt/template_expander.rb +830 -0
- data/lib/wp2txt/text_processing.rb +337 -0
- data/lib/wp2txt/utils.rb +629 -270
- data/lib/wp2txt/version.rb +1 -1
- data/lib/wp2txt.rb +53 -26
- data/scripts/benchmark_regex.rb +161 -0
- data/scripts/fetch_html_entities.rb +94 -0
- data/scripts/fetch_language_metadata.rb +180 -0
- data/scripts/fetch_mediawiki_data.rb +334 -0
- data/scripts/fetch_template_data.rb +186 -0
- data/scripts/profile_memory.rb +139 -0
- data/spec/article_spec.rb +402 -0
- data/spec/auto_download_spec.rb +314 -0
- data/spec/bz2_validator_spec.rb +193 -0
- data/spec/category_cache_spec.rb +226 -0
- data/spec/category_fetcher_spec.rb +504 -0
- data/spec/cleanup_spec.rb +197 -0
- data/spec/cli_options_spec.rb +678 -0
- data/spec/cli_spec.rb +876 -0
- data/spec/config_spec.rb +194 -0
- data/spec/constants_spec.rb +138 -0
- data/spec/file_utils_spec.rb +170 -0
- data/spec/fixtures/samples.rb +181 -0
- data/spec/formatter_sections_spec.rb +382 -0
- data/spec/global_data_cache_spec.rb +186 -0
- data/spec/index_cache_spec.rb +210 -0
- data/spec/integration_spec.rb +543 -0
- data/spec/magic_words_spec.rb +261 -0
- data/spec/markers_spec.rb +476 -0
- data/spec/memory_monitor_spec.rb +192 -0
- data/spec/multistream_spec.rb +690 -0
- data/spec/output_writer_spec.rb +400 -0
- data/spec/parser_functions_spec.rb +455 -0
- data/spec/ractor_worker_spec.rb +197 -0
- data/spec/regex_spec.rb +281 -0
- data/spec/section_extractor_spec.rb +397 -0
- data/spec/spec_helper.rb +63 -0
- data/spec/stream_processor_spec.rb +579 -0
- data/spec/template_data_spec.rb +246 -0
- data/spec/template_expander_spec.rb +472 -0
- data/spec/template_processing_spec.rb +217 -0
- data/spec/text_processing_spec.rb +312 -0
- data/spec/utils_spec.rb +195 -16
- data/spec/wp2txt_spec.rb +510 -0
- data/wp2txt.gemspec +5 -3
- metadata +146 -18
- data/.rubocop.yml +0 -80
- data/data/output_samples/testdata_en.txt +0 -23002
- data/data/output_samples/testdata_en_category.txt +0 -132
- data/data/output_samples/testdata_en_summary.txt +0 -1376
- data/data/output_samples/testdata_ja.txt +0 -22774
- data/data/output_samples/testdata_ja_category.txt +0 -206
- data/data/output_samples/testdata_ja_summary.txt +0 -1560
- data/data/testdata_en.bz2 +0 -0
- data/data/testdata_ja.bz2 +0 -0
- data/image/screenshot.png +0 -0
data/README_ja.md
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
<img src='https://raw.githubusercontent.com/yohasebe/wp2txt/master/image/wp2txt-logo.svg' width="400" />
|
|
2
|
+
|
|
3
|
+
Wikipediaダンプファイルからテキストコンテンツとカテゴリデータを抽出するコマンドラインツールキット
|
|
4
|
+
|
|
5
|
+
[English](README.md) | 日本語
|
|
6
|
+
|
|
7
|
+
## クイックスタート
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# インストール
|
|
11
|
+
gem install wp2txt
|
|
12
|
+
|
|
13
|
+
# 日本語Wikipediaからテキストを抽出(自動ダウンロード)
|
|
14
|
+
wp2txt --lang=ja -o ./output
|
|
15
|
+
|
|
16
|
+
# 特定の記事を抽出
|
|
17
|
+
wp2txt --lang=ja --articles="東京,京都" -o ./articles
|
|
18
|
+
|
|
19
|
+
# カテゴリから記事を抽出
|
|
20
|
+
wp2txt --lang=ja --from-category="日本の都市" -o ./cities
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 概要
|
|
24
|
+
|
|
25
|
+
WP2TXTはWikipediaダンプファイルからプレーンテキストとカテゴリ情報を抽出します。XMLダンプ(bzip2圧縮)を処理し、MediaWikiマークアップを除去して、コーパス言語学やテキストマイニングなどの研究に適したクリーンなテキストを出力します。
|
|
26
|
+
|
|
27
|
+
## 主な機能
|
|
28
|
+
|
|
29
|
+
- **自動ダウンロード** - 言語コード指定でダンプを自動ダウンロード
|
|
30
|
+
- **タイトル指定抽出** - フルダンプをダウンロードせずに特定記事を抽出
|
|
31
|
+
- **カテゴリベース抽出** - 特定のWikipediaカテゴリから全記事を抽出
|
|
32
|
+
- **カテゴリメタデータ抽出** - 記事のカテゴリ情報を出力に保持
|
|
33
|
+
- **テンプレート展開** - 日付・単位・座標などの一般的なテンプレートを可読テキストに変換
|
|
34
|
+
- **多言語対応** - 350以上のWikipedia言語でカテゴリ・リダイレクトを検出
|
|
35
|
+
- **ストリーミング処理** - 中間ファイルなしで大規模ダンプを処理
|
|
36
|
+
- **JSON出力** - データパイプライン向けの機械可読JSONL形式
|
|
37
|
+
|
|
38
|
+
## ユースケース
|
|
39
|
+
|
|
40
|
+
wp2txtは以下の用途に適しています:
|
|
41
|
+
|
|
42
|
+
- カテゴリ情報を活用した分野別コーパスの構築
|
|
43
|
+
- トピック領域を横断した比較言語研究
|
|
44
|
+
- NLPタスク向けのメタデータ付きWikipediaテキスト抽出
|
|
45
|
+
- 並行カテゴリ構造を利用した対照言語研究
|
|
46
|
+
|
|
47
|
+
## データアクセス
|
|
48
|
+
|
|
49
|
+
wp2txtは[公式Wikipediaダンプファイル](https://meta.wikimedia.org/wiki/Data_dumps)を使用します。これはバルクデータアクセスの推奨方法であり、Wikimediaのインフラガイドラインに準拠しています。
|
|
50
|
+
|
|
51
|
+
## インストール
|
|
52
|
+
|
|
53
|
+
### wp2txtのインストール
|
|
54
|
+
|
|
55
|
+
$ gem install wp2txt
|
|
56
|
+
|
|
57
|
+
### システム要件
|
|
58
|
+
|
|
59
|
+
WP2TXTは`bz2`ファイルを解凍するために、以下のコマンドのいずれかが必要です:
|
|
60
|
+
|
|
61
|
+
- `lbzip2`(推奨 - 複数CPUコアを使用)
|
|
62
|
+
- `pbzip2`
|
|
63
|
+
- `bzip2`(ほとんどのシステムにプリインストール済み)
|
|
64
|
+
|
|
65
|
+
macOS(Homebrew):
|
|
66
|
+
|
|
67
|
+
$ brew install lbzip2
|
|
68
|
+
|
|
69
|
+
Windows:[Bzip2 for Windows](http://gnuwin32.sourceforge.net/packages/bzip2.htm)をインストールしてPATHに追加。
|
|
70
|
+
|
|
71
|
+
### Docker(代替方法)
|
|
72
|
+
|
|
73
|
+
```shell
|
|
74
|
+
docker run -it -v /path/to/localdata:/data yohasebe/wp2txt
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`wp2txt`コマンドはコンテナ内で使用可能です。入出力には`/data`ディレクトリを使用してください。
|
|
78
|
+
|
|
79
|
+
## 基本的な使い方
|
|
80
|
+
|
|
81
|
+
### 自動ダウンロードと処理(推奨)
|
|
82
|
+
|
|
83
|
+
$ wp2txt --lang=ja -o ./text
|
|
84
|
+
|
|
85
|
+
日本語Wikipediaダンプを自動的にダウンロードし、プレーンテキストを抽出します。ダウンロードは`~/.wp2txt/cache/`にキャッシュされます。
|
|
86
|
+
|
|
87
|
+
### タイトルで特定記事を抽出
|
|
88
|
+
|
|
89
|
+
$ wp2txt --lang=ja --articles="認知言語学,生成文法" -o ./articles
|
|
90
|
+
|
|
91
|
+
インデックスファイルと必要なデータストリームのみがダウンロードされるため、フルダンプの処理よりはるかに高速です。
|
|
92
|
+
|
|
93
|
+
### カテゴリから記事を抽出
|
|
94
|
+
|
|
95
|
+
$ wp2txt --lang=ja --from-category="日本の都市" -o ./cities
|
|
96
|
+
|
|
97
|
+
`--depth`でサブカテゴリを含める:
|
|
98
|
+
|
|
99
|
+
$ wp2txt --lang=ja --from-category="日本の都市" --depth=2 -o ./cities
|
|
100
|
+
|
|
101
|
+
ダウンロードせずにプレビュー(記事数を表示):
|
|
102
|
+
|
|
103
|
+
$ wp2txt --lang=ja --from-category="日本の都市" --dry-run
|
|
104
|
+
|
|
105
|
+
### ローカルダンプファイルを処理
|
|
106
|
+
|
|
107
|
+
$ wp2txt -i ./jawiki-20220801-pages-articles.xml.bz2 -o ./text
|
|
108
|
+
|
|
109
|
+
### その他の抽出モード
|
|
110
|
+
|
|
111
|
+
# カテゴリ情報のみ(タイトル + カテゴリ)
|
|
112
|
+
$ wp2txt -g --lang=ja -o ./category
|
|
113
|
+
|
|
114
|
+
# サマリーのみ(タイトル + カテゴリ + 冒頭段落)
|
|
115
|
+
$ wp2txt -s --lang=ja -o ./summary
|
|
116
|
+
|
|
117
|
+
# メタデータのみ(タイトル + セクション見出し + カテゴリ)
|
|
118
|
+
$ wp2txt -M --lang=ja --format json -o ./metadata
|
|
119
|
+
|
|
120
|
+
# 特定セクションを抽出(カンマ区切り、'summary'で冒頭テキスト)
|
|
121
|
+
$ wp2txt --lang=ja --sections="概要,歴史,関連項目" --format json -o ./sections
|
|
122
|
+
|
|
123
|
+
# セクション見出しの統計
|
|
124
|
+
$ wp2txt --lang=ja --section-stats -o ./stats
|
|
125
|
+
|
|
126
|
+
# JSON/JSONL出力
|
|
127
|
+
$ wp2txt --format json --lang=ja -o ./json
|
|
128
|
+
|
|
129
|
+
## 出力サンプル
|
|
130
|
+
|
|
131
|
+
### テキスト出力
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
[[記事タイトル]]
|
|
135
|
+
|
|
136
|
+
記事の内容がセクションと段落で表示されます...
|
|
137
|
+
|
|
138
|
+
CATEGORIES: カテゴリ1, カテゴリ2, カテゴリ3
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### JSON/JSONL出力
|
|
142
|
+
|
|
143
|
+
各行に1つのJSONオブジェクト:
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{"title": "記事タイトル", "categories": ["カテゴリ1", "カテゴリ2"], "text": "...", "redirect": null}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
リダイレクト記事の場合:
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{"title": "NYC", "categories": [], "text": "", "redirect": "New York City"}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## キャッシュ管理
|
|
156
|
+
|
|
157
|
+
$ wp2txt --cache-status # キャッシュ状態を表示
|
|
158
|
+
$ wp2txt --cache-clear # 全キャッシュをクリア
|
|
159
|
+
$ wp2txt --cache-clear --lang=ja # 日本語のみクリア
|
|
160
|
+
$ wp2txt --update-cache # 強制的に新規ダウンロード
|
|
161
|
+
|
|
162
|
+
キャッシュが有効期限(デフォルト: 30日)を超えると、wp2txtは警告を表示しますが、キャッシュされたデータの使用は許可されます。
|
|
163
|
+
|
|
164
|
+
## 詳細オプション
|
|
165
|
+
|
|
166
|
+
### コンテンツタイプマーカー
|
|
167
|
+
|
|
168
|
+
特殊コンテンツはデフォルトでマーカープレースホルダーに置き換えられます:
|
|
169
|
+
|
|
170
|
+
**インラインマーカー**(文中に出現):
|
|
171
|
+
|
|
172
|
+
| マーカー | コンテンツタイプ |
|
|
173
|
+
|----------|------------------|
|
|
174
|
+
| `[MATH]` | 数式 |
|
|
175
|
+
| `[CODE]` | インラインコード |
|
|
176
|
+
| `[CHEM]` | 化学式 |
|
|
177
|
+
| `[IPA]` | IPA発音記号 |
|
|
178
|
+
|
|
179
|
+
**ブロックマーカー**(独立したコンテンツ):
|
|
180
|
+
|
|
181
|
+
| マーカー | コンテンツタイプ |
|
|
182
|
+
|----------|------------------|
|
|
183
|
+
| `[CODEBLOCK]` | ソースコードブロック |
|
|
184
|
+
| `[TABLE]` | Wikiテーブル |
|
|
185
|
+
| `[INFOBOX]` | 情報ボックス |
|
|
186
|
+
| `[NAVBOX]` | ナビゲーションボックス |
|
|
187
|
+
| `[GALLERY]` | 画像ギャラリー |
|
|
188
|
+
| `[REFERENCES]` | 参考文献リスト |
|
|
189
|
+
| `[SCORE]` | 楽譜 |
|
|
190
|
+
| `[TIMELINE]` | タイムライングラフィック |
|
|
191
|
+
| `[GRAPH]` | グラフ/チャート |
|
|
192
|
+
| `[SIDEBAR]` | サイドバーテンプレート |
|
|
193
|
+
| `[MAPFRAME]` | インタラクティブ地図 |
|
|
194
|
+
| `[IMAGEMAP]` | クリッカブル画像マップ |
|
|
195
|
+
|
|
196
|
+
`--markers`で設定:
|
|
197
|
+
|
|
198
|
+
$ wp2txt --lang=ja --markers=all -o ./text # 全マーカー(デフォルト)
|
|
199
|
+
$ wp2txt --lang=ja --markers=math,code -o ./text # MATHとCODEのみ
|
|
200
|
+
|
|
201
|
+
**注意**: `--markers=none`は非推奨です。特殊コンテンツの完全な削除は周囲のテキストを意味不明にする可能性があります。
|
|
202
|
+
|
|
203
|
+
### テンプレート展開
|
|
204
|
+
|
|
205
|
+
一般的なMediaWikiテンプレートは自動的に展開されます(デフォルトで有効):
|
|
206
|
+
|
|
207
|
+
| テンプレート | 出力 |
|
|
208
|
+
|--------------|------|
|
|
209
|
+
| `{{birth date\|1990\|5\|15}}` | May 15, 1990 |
|
|
210
|
+
| `{{convert\|100\|km\|mi}}` | 100 km (62 mi) |
|
|
211
|
+
| `{{coord\|35\|41\|N\|139\|41\|E}}` | 35°41′N 139°41′E |
|
|
212
|
+
| `{{lang\|ja\|日本語}}` | 日本語 |
|
|
213
|
+
| `{{nihongo\|Tokyo\|東京\|Tōkyō}}` | Tokyo (東京, Tōkyō) |
|
|
214
|
+
| `{{frac\|1\|2}}` | 1/2 |
|
|
215
|
+
| `{{circa\|1900}}` | c. 1900 |
|
|
216
|
+
|
|
217
|
+
サポート対象:日付/年齢テンプレート、単位変換、座標、言語タグ、引用、分数など。パーサー関数(`{{#if:}}`、`{{#switch:}}`)とマジックワード(`{{PAGENAME}}`、`{{CURRENTYEAR}}`)もサポート。
|
|
218
|
+
|
|
219
|
+
`--no-expand-templates`で無効化。
|
|
220
|
+
|
|
221
|
+
### 引用抽出
|
|
222
|
+
|
|
223
|
+
デフォルトでは引用テンプレートは削除されます。`--extract-citations`でフォーマットされた引用を抽出:
|
|
224
|
+
|
|
225
|
+
$ wp2txt --lang=ja --extract-citations -o ./text
|
|
226
|
+
|
|
227
|
+
サポート対象:`{{cite book}}`、`{{cite web}}`、`{{cite news}}`、`{{cite journal}}`、`{{Citation}}`など。
|
|
228
|
+
|
|
229
|
+
## コマンドラインオプション
|
|
230
|
+
|
|
231
|
+
Usage: wp2txt [options]
|
|
232
|
+
|
|
233
|
+
入力ソース(--input または --lang のいずれかが必須):
|
|
234
|
+
-i, --input=<s> 圧縮ファイル(bz2)またはXMLファイルへのパス
|
|
235
|
+
-L, --lang=<s> Wikipedia言語コード(例: ja, en, de)
|
|
236
|
+
-A, --articles=<s> 特定の記事タイトル(カンマ区切り)
|
|
237
|
+
-G, --from-category=<s> Wikipediaカテゴリから記事を抽出
|
|
238
|
+
-D, --depth=<i> サブカテゴリ再帰深度(デフォルト: 0)
|
|
239
|
+
-y, --yes 確認プロンプトをスキップ
|
|
240
|
+
--dry-run カテゴリ抽出をプレビュー
|
|
241
|
+
-U, --update-cache キャッシュファイルを強制更新
|
|
242
|
+
|
|
243
|
+
出力オプション:
|
|
244
|
+
-o, --output-dir=<s> 出力ディレクトリ(デフォルト: カレント)
|
|
245
|
+
-j, --format=<s> 出力形式: text または json(デフォルト: text)
|
|
246
|
+
-f, --file-size=<i> 出力ファイルサイズ(MB)(デフォルト: 10, 0=単一)
|
|
247
|
+
|
|
248
|
+
キャッシュ管理:
|
|
249
|
+
--cache-dir=<s> キャッシュディレクトリ(デフォルト: ~/.wp2txt/cache)
|
|
250
|
+
--cache-status キャッシュ状態を表示して終了
|
|
251
|
+
--cache-clear キャッシュをクリアして終了
|
|
252
|
+
|
|
253
|
+
設定:
|
|
254
|
+
--config-init デフォルト設定を作成(~/.wp2txt/config.yml)
|
|
255
|
+
--config-path=<s> 設定ファイルへのパス
|
|
256
|
+
|
|
257
|
+
抽出モード(排他的):
|
|
258
|
+
-g, --category-only タイトルとカテゴリのみ抽出
|
|
259
|
+
-s, --summary-only タイトル、カテゴリ、サマリーを抽出
|
|
260
|
+
-M, --metadata-only タイトル、見出し、カテゴリのみ抽出
|
|
261
|
+
|
|
262
|
+
セクション抽出:
|
|
263
|
+
-S, --sections=<s> 特定セクションを抽出(カンマ区切り)
|
|
264
|
+
--section-output=<s> 出力モード: structured または combined(デフォルト: structured)
|
|
265
|
+
--min-section-length=<i> 最小セクション長(文字数)(デフォルト: 0)
|
|
266
|
+
--skip-empty 該当セクションのない記事をスキップ
|
|
267
|
+
--alias-file=<s> セクション別名定義ファイル(YAML形式)
|
|
268
|
+
--no-section-aliases セクション別名マッチングを無効化(完全一致のみ)
|
|
269
|
+
--section-stats セクション見出しの統計を収集・出力(JSON)
|
|
270
|
+
--show-matched-sections JSON出力にmatched_sectionsフィールドを含める
|
|
271
|
+
|
|
272
|
+
コンテンツフィルタリング:
|
|
273
|
+
-a, --category, --no-category カテゴリ情報を表示(デフォルト: true)
|
|
274
|
+
-t, --title, --no-title ページタイトルを保持(デフォルト: true)
|
|
275
|
+
-d, --heading, --no-heading セクションタイトルを保持(デフォルト: true)
|
|
276
|
+
-l, --list リスト項目を保持(デフォルト: false)
|
|
277
|
+
--table Wikiテーブルの内容を保持(デフォルト: false)
|
|
278
|
+
-p, --pre 整形済みテキストブロックを保持(デフォルト: false)
|
|
279
|
+
-r, --ref 参照を[ref]...[/ref]形式で保持(デフォルト: false)
|
|
280
|
+
--multiline 複数行テンプレートを保持(デフォルト: false)
|
|
281
|
+
-e, --redirect リダイレクト先を表示(デフォルト: false)
|
|
282
|
+
-m, --marker, --no-marker リストマーカーを表示(デフォルト: true)
|
|
283
|
+
-k, --markers=<s> コンテンツマーカー(デフォルト: all)
|
|
284
|
+
-C, --extract-citations フォーマットされた引用を抽出
|
|
285
|
+
-E, --expand-templates テンプレートを展開(デフォルト: true)
|
|
286
|
+
--no-expand-templates テンプレート展開を無効化
|
|
287
|
+
|
|
288
|
+
パフォーマンス:
|
|
289
|
+
-n, --num-procs=<i> 並列プロセス数(デフォルト: 自動)
|
|
290
|
+
--no-turbo ターボモードを無効化(ディスク容量節約、低速)
|
|
291
|
+
-R, --ractor Ractor並列処理を使用(Ruby 4.0+、ストリーミングのみ)
|
|
292
|
+
-b, --bz2-gem システムコマンドの代わりにbzip2-ruby gemを使用
|
|
293
|
+
|
|
294
|
+
出力制御:
|
|
295
|
+
-q, --quiet 進捗出力を抑制(エラーのみ表示)
|
|
296
|
+
--no-color カラー出力を無効化
|
|
297
|
+
|
|
298
|
+
情報:
|
|
299
|
+
-v, --version バージョンを表示
|
|
300
|
+
-h, --help ヘルプを表示
|
|
301
|
+
|
|
302
|
+
## 設定ファイル
|
|
303
|
+
|
|
304
|
+
永続的な設定を作成:
|
|
305
|
+
|
|
306
|
+
$ wp2txt --config-init
|
|
307
|
+
|
|
308
|
+
`~/.wp2txt/config.yml`が作成されます:
|
|
309
|
+
|
|
310
|
+
```yaml
|
|
311
|
+
cache:
|
|
312
|
+
dump_expiry_days: 30 # ダンプが古いと見なされるまでの日数(1-365)
|
|
313
|
+
category_expiry_days: 7 # カテゴリキャッシュの有効期限(1-90)
|
|
314
|
+
directory: ~/.wp2txt/cache
|
|
315
|
+
|
|
316
|
+
defaults:
|
|
317
|
+
format: text # デフォルト出力形式
|
|
318
|
+
depth: 0 # デフォルトサブカテゴリ深度
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
コマンドラインオプションは設定ファイルの設定を上書きします。
|
|
322
|
+
|
|
323
|
+
## パフォーマンス
|
|
324
|
+
|
|
325
|
+
MacBook Air M4でのベンチマーク結果(7並列プロセス、ターボモード、ダウンロード時間除く):
|
|
326
|
+
|
|
327
|
+
| Wikipedia | ダンプサイズ | 記事数 | 処理時間 | 出力 |
|
|
328
|
+
|-----------|-------------|--------|----------|------|
|
|
329
|
+
| 日本語 | 4.37 GB | 1,485,937 | 約27分 | 463ファイル (4.5 GB) |
|
|
330
|
+
| 英語 | 24.2 GB | 約680万 | 約2時間 | 2,000ファイル (20 GB) |
|
|
331
|
+
|
|
332
|
+
ターボモード(デフォルト)はbz2をXMLチャンクに分割してから並列処理します。ディスク容量を節約するには`--no-turbo`を使用してください(処理速度は低下します)。
|
|
333
|
+
|
|
334
|
+
## 注意事項
|
|
335
|
+
|
|
336
|
+
* 特殊コンテンツ(数式、コードなど)はデフォルトでプレースホルダーでマークされます。
|
|
337
|
+
* マークアップのバリエーションや言語固有のフォーマットにより、一部のテキストが正しく抽出されない場合があります。
|
|
338
|
+
|
|
339
|
+
## 変更履歴
|
|
340
|
+
|
|
341
|
+
詳細なリリースノートは[CHANGELOG.md](CHANGELOG.md)を参照してください。
|
|
342
|
+
|
|
343
|
+
**v2.1.0(2026年2月)**: SQLiteキャッシュ、Ractor並列処理(Ruby 4.0+)、テンプレート展開、コンテンツマーカー、Dockerイメージ更新。
|
|
344
|
+
|
|
345
|
+
**v2.0.0(2026年1月)**: 自動ダウンロードモード、カテゴリベース抽出、タイトル指定抽出、JSON出力、ストリーミング処理、Ruby 4.0サポート。
|
|
346
|
+
|
|
347
|
+
## 便利なリンク
|
|
348
|
+
|
|
349
|
+
* [Wikipedia Database backup dumps](http://dumps.wikimedia.org/backup-index.html)
|
|
350
|
+
|
|
351
|
+
## 著者
|
|
352
|
+
|
|
353
|
+
* 長谷部陽一郎 (<yohasebe@gmail.com>)
|
|
354
|
+
|
|
355
|
+
## 参考文献
|
|
356
|
+
|
|
357
|
+
研究で以下のいずれかを言及していただけると幸いです。
|
|
358
|
+
|
|
359
|
+
* Yoichiro HASEBE. 2006. [Method for using Wikipedia as Japanese corpus.](http://ci.nii.ac.jp/naid/110006226727) _Doshisha Studies in Language and Culture_ 9(2), 373-403.
|
|
360
|
+
* 長谷部陽一郎. 2006. [Wikipedia日本語版をコーパスとして用いた言語研究の手法](http://ci.nii.ac.jp/naid/110006226727). 『言語文化』9(2), 373-403.
|
|
361
|
+
|
|
362
|
+
BibTeX:
|
|
363
|
+
|
|
364
|
+
```
|
|
365
|
+
@misc{wp2txt_2026,
|
|
366
|
+
author = {Yoichiro Hasebe},
|
|
367
|
+
title = {WP2TXT: A command-line toolkit to extract text content and category data from Wikipedia dump files},
|
|
368
|
+
url = {https://github.com/yohasebe/wp2txt},
|
|
369
|
+
year = {2026}
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## ライセンス
|
|
374
|
+
|
|
375
|
+
このソフトウェアはMITライセンスの下で配布されています。LICENSEファイルを参照してください。
|
data/Rakefile
CHANGED
|
@@ -17,6 +17,10 @@ end
|
|
|
17
17
|
|
|
18
18
|
task default: :spec
|
|
19
19
|
|
|
20
|
+
# =============================================================================
|
|
21
|
+
# Docker
|
|
22
|
+
# =============================================================================
|
|
23
|
+
|
|
20
24
|
desc "Push Docker images"
|
|
21
25
|
task :push do
|
|
22
26
|
sh <<-SCRIPT.strip_heredoc, { verbose: false }
|