HN 日本語サマリー

← 一覧へ戻る
オープンソース

Usenet Archive Toolkit – Usenetメッセージを検索可能なアーカイブに処理

Usenet Archive Toolkit – process Usenet messages into a searchable archive (github.com)

15 pointsby bilegeek0 コメント

要約

Usenet Archive Toolkitは、様々なUsenetメッセージソースを整理し、検索可能なアーカイブに変換するためのツール群です。オフラインでの利用や、重複メッセージやスパムのフィルタリング、UTF-8への変換、破損ヘッダーのデコードなどをサポートします。これにより、過去のUsenetディスカッションを効率的に検索・閲覧することが可能になります。

全文翻訳

Usenet Archive Toolkit Usenet Archive Toolkitプロジェクトは、様々なUsenetメッセージソースを、一貫性のある検索可能なアーカイブに処理するためのツールセットを提供することを目的としています。 通常、2つの使用パターンがあります。 すでに作成されたアーカイブファイルがあり、それを読みたい場合。その場合、tbrowserユーティリティをダウンロードまたはビルドするだけで済みます。 ソースからアーカイブファイルを作成したい場合。提供されているユーティリティのほとんどを使用する必要があります。 ワークフローグラフに従うのが良い出発点です。 要するに: 利用可能なアーカイブファイルをダウンロードし、tbrowserを使用してそれらを読みます。 UATアーカイブファイルのリストポーランドのUsenetアーカイブ: https://usenet.nereid.pl/。PCゲームUsenetアーカイブ: https://archive.org/details/usenet-uat-pc-games。 動機Usenetは死んでいます。あなたはそうではないと思うかもしれませんが、実際には死んでいます。 2016年8月から2016年12月までのポーランドのUsenetメッセージ数(概算)。人々は様々なフォーラム、Facebook、Twitterに移動し、そこで元気なようです。一方、古い議論はゆっくりと腐っていきます。 Googleグループは悲しくて、使えないジョークです。Archive.orgのデータセットは、少なくともポーランドのUsenetアーカイブに関しては、非常に不完全です。 データを取得したり、閲覧したり、検索したりする簡単な方法はありません。 だから、何かをする必要があるかもしれません。どうしてそんなに難しいのでしょうか?(それほど難しくはありません:動作するプロトタイプに1ヶ月、磨きとバグ修正にさらに1ヶ月。) 利点なぜUATを使うのか?なぜGoogleグループ、Archive.orgのアーカイブ、または長い履歴を持つNNTPサーバーのような既存のソリューションを使わないのか? UATはオフライン作業のために設計されています。「クラウド」のデータにアクセスするためにネットワーク接続は必要ありません。クエリへの応答を待つ必要も、ましてや「Web 2.0」インターフェースに耐える必要もありません。 UATアーカイブは突然消えることはありません。あなたのディスクにあります。 Googleグループは、インターフェースの新しいイテレーションごとに劣化しています。また、Googleは、もはや収益性がないと感じたサービスをシャットダウンすることで知られています。Googleリーダー、Googleコード検索、Googleコードなど。その他の小規模サービスは、ディスククラッシュ1回でネットワークから完全に消滅する可能性があります。 UATアーカイブ形式は、高速アクセスと効率的な検索のために設計されています。各メッセージは、即時アクセスを容易にするために個別に圧縮されますが、より良い圧縮のためにアーカイブ全体の辞書を使用します。 検索は、Googleの元の論文に似た設計のデータベースを通じて実現されます。 総アーカイブサイズは、メッセージの非圧縮コレクションよりも小さいです。 複数のメッセージソースを、メッセージの重複なしに、単一のUATアーカイブにマージできます。このようにして、ソースA(例: NNTPアーカイブサーバー)の欠落をソースB(例: はるかに小さいArchive.orgダンプ)のメッセージで補うことができます。 このようにして作成されたアーカイブは、利用可能な最も完全なメッセージコレクションです。 UATアーカイブには重複メッセージ(NNTPサーバーでさえ一般的です)や、他のグループからの無関係なメッセージ(Archive.orgのコレクションには多くの偽のメッセージが含まれています)は含まれていません。 他のUsenetアーカイブはスパムメッセージで散らかっています。UATはスパムをフィルタリングできるため、以前は読めなかったニュースグループが簡単に読めるようになります。 適切にトレーニングされたスパムデータベースは、偽陽性および偽陰性の割合が非常に低いです。 すべてのメッセージはUTF-8に変換されるため、低機能クライアントで表示できます。 UATは、破損している、または完全に無効なヘッダー、エンコーディングが指定されていない、またはエンコーディングが悪いメッセージを正しくデコードしようとします。 メッセージのHTML部分は削除されます。 引用符で囲まれた印刷可能なコンテンツ(おそらく不正な形式)の解析について心配する必要もありません。 そして検索を忘れないでください。UATなしでそのBase64エンコードされたメッセージをgrepして楽しんでください。 UATアーカイブには、事前に計算されたメッセージ接続グラフが含まれており、「References」ヘッダー(しばしば破損している)を解析したり、メッセージを日付順に並べたりする必要がなくなります。 UATは、他のメッセージで引用されたテキストを検索することによって、メッセージヘッダーに示されていない欠落した接続性を「復元」することもできます。 アーカイブへのアクセスは、単純なlibuatインターフェースを通じて可能です。 UATアーカイブはメモリにマッピングされ、100%ディスクバックアップされます。高いメモリ圧力状況では、アーカイブページは単にパージされ、後でオンデマンドで再ロードされる場合があります。 通常のlibuat操作中に必要なメモリ割り当ては、次のものだけです。 単一メッセージを解凍するための、小さく、静的に成長するバッファ。 検索操作中に使用されるstd::vectors。 このようなアプローチの利点は、メッセージあたり25MBの管理情報しか必要としないtbrowserで見ることができます。 ツールキットの説明UATは、それぞれ独自のタスクに特化した多数のユーティリティを提供します。 各ユーティリティの簡単な説明を以下に示します。 インポート形式Usenetメッセージは、さまざまなソースから取得できます。現在、次のものをサポートしています。 import-source-maildir --- 各ファイルが個別のメッセージであるディレクトリツリーからインポートします(例: slrnpullは、動作させるために追加の簡単なセットアップでこれを生成します)。 import-source-maildir-7z --- 単一の7z圧縮ファイルに圧縮されたmaildirツリーからインポートします。 import-source-mbox --- Archive.orgは、すべての投稿が単一のファイルにマージされたmbox形式でUsenetメッセージのコレクションを保持しています。 google-groups --- Googleグループをクロールし、グループをmaildir形式で保存します。 nntp-get --- NNTPサーバーからメッセージを取得します。 インポートされたメッセージは、メッセージごとのLZ4圧縮メタ+ペイロードデータベースに保存されます。 データ処理生のインポートメッセージは、使用可能にするために処理する必要があります。次のユーティリティを提供します。 extract-msgid --- 各メッセージの一意の識別子を抽出し、ID経由で任意のメッセージに高速アクセスするための参照テーブルを構築します。 extract-msgmeta --- 「From」および「Subject」フィールドを抽出し、アーカイブブラウザ用のクイックリファレンスとします。 merge-raw --- 2つのインポートされたデータセットを1つにマージします。メッセージを重複させません。 relative-complement --- 2番目のセットに存在しないメッセージを最初のセットから抽出します。 utf8ize --- メッセージを共通の文字エンコーディングであるUTF-8に変換します。 connectivity --- メッセージの接続グラフを計算します。「Date」フィールドも解析します。これは時系列ソートに必要です。 threadify --- 一部のメッセージには、ヘッダーに接続データが埋め込まれていません。例: ニュースメールゲートウェイの使用における一般的なアーティファクトです。このツールはトップレベルのメッセージを検索し、引用を探し、他のメッセージでこれらの引用を検索して、子と親の間の欠落した接続を作成します(復元ではありません!それは決してそこにはありませんでした!)。 repack-zstd --- すべてのメッセージの共通辞書を構築し、zstdメタ+ペイロード+辞書データベースに再圧縮します。 update-zstd --- 辞書の再計算なしに、既存のzstdアーカイブを新しいデータで更新します。 repack-lz4 --- zstdデータベースをLZ4データベースに変換します。 package --- すべてのデータベースを単一のファイルにパッケージ化します。アンパックをサポートします。 sort --- メッセージをスレッド-時系列順に並べます。 データフィルタリングインポート直後の生のデータは、直接使用するには不向きです。メッセージは重複しており、スパムがあります。これらのユーティリティはクリーンアップを支援します。 kill-duplicates --- 重複メッセージを削除します。これは比較的まれですが、単一のNNTPサーバーからのデータセットでさえ、同じメッセージが2回含まれている場合があります。 filter-newsgroups --- 一部のデータソース(例: Archive.orgのGiganewsコレクション)には、コレクションのニュースグループに送信されなかったメッセージが含まれています。このユーティリティは、そのような偽のメッセージを削除します。 filter-spam --- スパムのように見えるメッセージを学習し、それらを削除します。 データ検索アーカイブの検索は、単語の辞書の手助けを借りて実行されます。次のツールがその準備に使用されます。 lexicon --- 単語のリストと各単語のヒットテーブルを構築します。 lexstats --- 辞書の統計を表示します。 lexdist --- 単語間の距離を計算します。 lexsort --- 辞書データを並べ替えます。 データアクセスこれらのツールはアーカイブデータへのアクセスを提供します。 query-raw --- LZ4データベースに対するクエリを実装します。extract-msgidユーティリティの結果が必要です。サポートするもの: メッセージ数。 メッセージ識別子のリスト。 識別子によるメッセージのクエリ。 データベースレコード番号によるメッセージのクエリ。 libuat --- アーカイブ