Jump to content

PetScan

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page PetScan and the translation is 97% complete.
Outdated translations are marked like this.
Coolest Tool Award 2022 logo
PetScan

2022 Coolest Tool
Award Winner

in the category
Reusable

PetScanは強力なクエリ(問い合わせ)ツールです。PetScan送信フォームにクエリが準備されています。合わせてこのツールの背景にある根拠を確認してください。

はじめに

PetScanは特定の基準に合致するウィキペディア(および関連プロジェクト)のページあるいはウィキデータの項目の一覧を生成することができます。例えば、特定カテゴリに属するすべてのページであったり、特定のプロパティを持つすべての項目などです。また、PetScanはいくつかの一時的な一覧(ここでは「ソース」と呼びます)を様々な方法で組み合わせて、新しい一覧を作成することもできます。ソースには以下のものが含まれます。

ウィキペディアやウィキメディアのページ

これらは「カテゴリ」、「ページ情報」、および「テンプレートとリンク」のタブで定義します。特定のカテゴリツリーに属するページや、特定のテンプレートを使用しているページ、あるいは特定ページのリンク元・リンク先を抽出することができます。さらに結果を特定の名前空間のみ、Botあるいは人による編集のみ、最近の編集やページ作成のみ、などに限定することもできます。これら3つのタブはかつてのCatScan2の機能に相当します。これらのクエリ結果は、その後「カテゴリソース」としてまとめられます。

その他のソース

このタブでは、ウィキデータSPARQL(WDQS)クエリやPagePileリストなど、さらなるソースを追加することができます。複数のソースを統合する方法も定義することができます。デフォルトでは、部分集合(つまり全てのソースに出現する項目だけ)を最終的な結果として返します。例えばウィキペディアとウィキデータの結果を組み合わせる場合に、一覧がどのウィキを指し示すようにしたいのか指定することもできます。

ウィキデータ

このタブでは、結果にさらに注釈を付けたり、「フィルター」をかけることができます。例えば文を持たないウィキデータ項目だけを返すようにできます。これらのいずれかのフィルターを使用すると、一覧がウィキデータに変換されます。

出力

ここでは、一覧検索結果を出力する形式(ウェブページ、Wiki、PagePileなど) を指定することができます。また、例えばページ名や項目のラベルに対して正規表現を使って、結果にさらなるフィルターをかけることもできます。結果一覧を未執筆のトピック(赤リンク)のランク付けされた一覧に置き換えることもできます。

クエリの定義

クエリフォームで指定可能な欄は以下の通りです。

条件欄 意味 既定値 注記
言語 プロジェクトの言語コードを選んでください。例えば、日本語は「ja」、英語は「en」、ドイツ語は「de」です。ウィキメディア・コモンズは「コモンズ」を選んでください。 "en"
プロジェクト 検索するウィキメディアプロジェクト(ウィキペディア、ウィクショナリーなど) "wikipedia" NOTE: If you choose "Commons," be sure to go to the "Page properties" tab and check the "File" namespace to get useful results.
カテゴリ深度 検索するカテゴリツリーの深さ。0にするとサブカテゴリを検索しない。 "0"
カテゴリ カテゴリの一覧。「Category:」の部分は除いて、1行に1カテゴリを記述する。 カテゴリ名の後ろに'|'(パイプ文字)と数字を付加すると、このカテゴリに対しては「カテゴリ深度」欄で選択したカテゴリツリーの深度よりも優先して反映する。
対象から除外するカテゴリ 上記と同様のカテゴリのリスト。指定されたカテゴリに含まれる項目は除外される。
組み合わせ 上記のカテゴリの使い方:
  • カテゴリのリスト: 下位カテゴリを一覧にする
  • サブセット(部分集合): 全カテゴリツリーに属するページすべて
  • ユニオン(和集合): 最低1件のカテゴリに属するページすべて
  • Difference: 単一のカテゴリツリーにのみ属するページすべて
  • 最低 (N) 件: 最低 N 件以上のカテゴリツリーに属するページすべて

現状利用できるオプションは「サブセット(部分集合)」と「ユニオン(和集合)」。

サブセット(部分集合)
名前空間 検索対象の名前空間 標準
リダイレクトを表示 いずれか
テンプレート 以下の条件を満たすページのみを使用する。
  • ボックス1:次のテンプレートをすべて含む(AND検索)
  • ボックス2:次のテンプレートのいずれかを含む(OR検索)
  • ボックス3:次のテンプレートを含まない(NOT検索)

1行につき1つのテンプレート名を「Template:」接頭辞なしで入力する。各ボックスの下にあるチェックボックス「代わりにトーク(ノート)ページを使用」を選択して修飾することもできる。

「Template:」のテンプレート名前空間上にあるテンプレートのみが検索対象となる。「User:」の利用者名前空間上は対象外。ウィキメディアコモンズでは「Creator:」または「Institution:」の名前空間上にテンプレートが存在するが、これらは対象外
リンク元:
最終編集 表示するページを最終編集者によって指定。Botか否か、匿名(IP)編集か否か、またフラグ付きか否か。 いずれか、いずれか、いずれか
最終編集日
Last change
最終編集日時は年月日時分秒の順に、数字のみYYYYMMDDHHMMSS形式 (短縮表記可) で指定。 「上記の期間に作成されたページのみ表示」にチェックを入れると、最終編集ではなく「最初の変更」(新規作成)を探すことができる。
サイズ ファイルサイズ (範囲指定可、単位はバイト)。 記事のファイルサイズの上限および/または下限で絞り込むことができる。
リンク ページに含まれる内部リンク数を指定。 特定リンク数以上または以下で絞り込むことができる。
赤リンク
トップカテゴリ
Top categories
未実装。
ソート
Sort
未実装 (検索結果出力時に並べる順番を指定)
(手動)一覧
Manual list
指定したプロジェクトから(名前空間接頭辞付きの)ページ名もしくはウィキデータ項目の一覧を提供することができる プロジェクトを指定する部分がややこしいですが、正しくはコードを次のように指定してください:
  • 英語版ウィキペディア:enwiki
  • ドイツ語版ウィキソース:dewikisource または dewikisourcewiki
  • ギリシャ語版ウィクショナリー:elwiktionarywiki
  • 英語版ウィキニュース:enwikinews
  • ウィキデータ:wikidatawiki
ウィキデータ
Wikidata
一致するウィキデータ項目を抽出。
出力形式 検索結果の出力形式は
HTML:ウェブページ
CSV:クォーテーションマークで囲まれたコンマ区切り値
TSV:タブ区切り値
WIKI:ウィキテーブル
PHP:PHPファイル
XML:XMLファイル
実行 指定した条件で検索を実施するボタン。

ノウハウ

PetScan ID (PSID)

2016年4月4日現在、PetScanで実行されたすべてのクエリは(匿名で!)記録され、PSIDと呼ばれる一意で安定な識別番号が割り当てられます。このPSIDを使うと以下のようなことができます。

  • WD-FISTのような)PSIDをサポートしているツールの入力としてPetScanを実行します。
  • "短縮URL"に埋め込む:https://petscan.wmflabs.org/?psid=PSID は、すべてPSIDの設定でクエリを実行します。
  • 以前実行したクエリのパラメータをプログラム的に「上書き」して拡張: https://petscan.wmflabs.org/?format=wiki&psid=PSID は、出力形式が(デフォルトのHTMLや元々選択していた何らかの形式の代わりに)wikiとなることを除き、以前と同一のクエリを実行します。

注意事項:

  • PSIDはクエリだけを保存し、検索結果は保存しません。
  • (例えば手動でたくさんの項目を設定した)大きなクエリは保存されません。この場合、PSIDは表示されません。
  • チェックボックスが空の結果にも、ウィキデータのセットが合致する可能性があります。
  • ウィキ間リンクpetscan:を永続的なクエリのショートカットを生成するために、例えば [[petscan:PSID]] のように使用することができます。
  • 記録されたクエリは重複排除されないので、既存のPSIDを変更なしに呼び出さない限り、毎回新しいPSIDが生成されます。

ウィキペディアの記事がウィキデータに未登録の場合に項目を作成(Creator 機能)

  • ウィキペディア(もしくはその他の、ウィキデータではないプロジェクト)のページの一覧を返すクエリを設定するか、「その他のソース/一覧」欄に一覧を貼り付けます。
  • 「ページ情報」タブでは「リダイレクトを表示=いいえ」を選択 この処理は自動化されたのでもはや不要です。もし、どうしてもリダイレクトページを一覧に加えたい場合は、「リダイレクトを表示=いいえ」を元に戻すこともできます!
  • 「ウィキデータ」タブで、「項目のないページのみ表示」オプションを選択します。
  • クエリを実行します
  • 「結果」のヘッダの横に、追加の要素が表示されます (もしWiDaRにログインしていると該当するリンクを表示。)
  • 完全一致するウィキデータ上のラベルや別名がないすべてのページには、デフォルトでチェックが付きます。
  • 必要に応じてチェックボックスに手動でマークを付けたり外したりすることもできます。
  • 「文の追加」ボックスにすべての新規項目に追加される既定の文を追加することもできます。したがって、もし人物項目のみ作成するならば、「P31:Q5」を追加します。この方法で複数の文を追加することができます(1行に1件)。注意点としてPとQは必ず大文字にする必要があり、さもないと何も起きずに失敗します。
  • 新規項目に追加される既定の説明を指定することもできます。たとえばドイツ語の説明に Dde:"some description" のように。
  • 緑色の「QSを開始」ボタンをクリックします。これにより新しいページが開きます。
  • 「実行」をクリックしてブラウザでバッチを実行するか、「バックグラウンドで実行」をクリックしてウィキメディアサーバから実行することができます。詳細はHelp:QuickStatementsを参照してください。


ウィキデータ項目の文を追加/除去

PetScanでウィキデータ項目の文 (statement) を追加/除去することができます。このためには「その他のソース -> ウィキを使用」で「ウィキデータ」を選んでおくことが極めて重要です。すると件数の横にコマンドボックスが表示され、前節で述べた通りに続けることができます。

リファラー

(V2 限定) 他のツールからクエリを作成するためにPetScanを開くのならば、referrer_urlおよびreferrer_nameパラメータを渡すことができます(既定ではreferrer_url)。referrer_url{PSID}文字列を持つべきであり、これは利用者が参照するPSIDで置き換えられます。クエリを実行すると、ページ上部でメッセージボックスが、PSIDを変更したreferrer_urlを使って元のツールへ戻るよう利用者に促します。

特定のウィキプロジェクトの記事

このマニュアルの議論ページでのリクエスト:標準名前空間で「WikiProject UK geography」(ウィキプロジェクト イギリスの地理)に該当するすべての記事を見つけてください。PetScanの既定の送信用フォームから始めて、テンプレート列の最初のボックスに「WikiProject UK geography」とだけ追加し、そのすぐ下で「代わりにトーク(ノート)ページを使用」を選びます。 クエリの記入例はこちら ページ下部の「実行」ボタンを押します。2015年8月16日時点のクエリ処理時間は1.5秒、検出結果は21,408記事でした。(画面にそのまま残っている)送信フォームよりに一覧が表示されるので、結果を見るにはスクロールする必要があります。

ウィキプロジェクト内の曖昧さ回避

曖昧さ回避に取り組む編集者が、コンテンツエリアのウィキプロジェクト、特にウィキプロジェクト・カナダの参加者に支援を求めています。PetScanのレポートが与えられたウィキプロジェクト内で曖昧さ回避ページへのリンクを持つすべての記事を見つけるように設計されています。適用する基準は以下の通りです。

  1. 曖昧さ回避ページへのリンクを持つページは「Category:All articles with links needing disambiguation」(Category:曖昧さ回避を必要とするリンクを持つすべての記事)に入っているので、PetScanのカテゴリ欄に「All articles with links needing disambiguation」を貼り付けます。
  2. 「カテゴリ深度」は無作為に9とし、つまり「needing disambiguation」親カテゴリから9段階深い下位カテゴリまでの記事が見つかります(この事例でそこまで深い必要はないものの無害。)
  3. ウィキプロジェクト・カナダ内の記事はそのトークページに「Template:WikiProject Canada」があるので、PetScanの「次のテンプレートのいずれかを含む」欄に「WikiProject Canada」を貼り付け、そのすぐ下で修飾子として「代わりにトーク(ノート)ページを使用」を選択します。
  4. ほしいのは曖昧さ回避ページではなく通常の記事であり、曖昧さ回避ページはtemplate:disambiguationがあることによって識別できるので、PetScanの「次のテンプレートを含まない」欄に「Disambiguation」を貼り付け、「代わりにトーク(ノート)ページを使用」が選択されていないことを確かめます。
  • これらの基準がこちらの入力済みPetScanクエリ送信フォームに組み込まれています。クエリを送信するには、下部の「実行」を選択します。
  • 2015年8月25日に送信したときには、クエリは31秒かけて実行され、結果は255記事の一覧でした。結果はその場に残っているPetScanクエリ送信フォームの〈下〉に表示されるので、画面に変化がないように見えるかもしれません。下にスクロールしないと、結果が表示されないのです!そのリクエストは既定の出力形式「HTML」で実行されました。
  • ウィキプロジェクトのサブページで共有するために、結果をウィキテーブル形式で得るには、形式で「WIKI」を選択してリクエストを修正することができます。
  • 一覧を曖昧さ回避の作業者のために、もっと便利なものにするには、任意の項目をクリックするとDabSolverが開くように設定します。以下のような段階処理に従うことができます。ここでは代わりに結果をタブ区切り形式で保存し、その後Exceに取り込み、結果を単純なテキスト文字列に連結した列を作り、その列をコピペしました。結果は英語版ウィキペディア内の告知ページ (2015年8月17日)に貼り付けられ、discussion at the WikiProject Canada talk page(ウィキプロジェクト・カナダのトークページ)のスクロールウィンドウ内にも投稿されました。 --Doncram (talk) 19:50, 24 August 2015 (UTC) リンク調整。 DexDor (talk) 06:58, 29 March 2016 (UTC)[reply]

名前空間名とカテゴリの組み合わせが異常なページの検出

PetScanを利用し、特定の名前空間にあるページにはふさわしくないカテゴリ(もしくはカテゴリの組み合わせ)が含まれているページ(例えばウィキペディアの管理系のページで百科事典項目用のカテゴリが付いたもの)を見つけることができます。そうすれば、(例えば記事を正しい名前空間へ移動したり、議論でカテゴリに言及したときに欠落していた半角コロン「:」を挿入する編集を行うことによって)これを修正することができます。このプロセスの最初のステップとして、間違ってカテゴライズされている(例えばウィキペディア管理系なのに記事名前空間カテゴリに置かれた)カテゴリを(PetScanを使って)特定します。

所与の言語でコモンズに投稿されたカテゴリ未指定の写真を探す

Grants:Learning patterns/Treasures or landmines: detecting uncategorized, language-specific uploads in Commonsに基づいています。リンク先で動機と詳しい説明をご参照ください。User:Spiritiaさんほか、そちらで投稿・コメントを寄稿してくださったウィキメディア利用者の皆さんに感謝します。)

以下の設定でPetScan クエリを実行します。

Language = commons
Project = wikimedia
Depth = 1
Categories = カテゴリ分けされていないファイル
Combination = ☑ Subset
Namespaces = ☑ File
Templates : Has all of these templates = <あなたの言語コード> 
Format:  ☑ Extended data for files     ☑ File usage data

言語コードは英語「en」、ルーマニア語「ro」です。ルーマニア語話者がアップロードしてカテゴリ未定の画像を検出するクエリの一例は次のとおりです(HTMLで出力、自動実行なし)。

https://petscan.wmflabs.org/?language=commons&project=wikimedia&depth=1&categories=Uncategorized+files&ns%5B6%5D=1&templates_yes=ro&ext_image_data=1&file_usage_data=1

2016年3月15日現在、「実行」ボタンを押すと、クエリはおよそ105秒かけて、カテゴリ未指定の画像 1748 点を抽出します。

注記:

  1. 希望する言語を選択するために「言語=」欄は使用しません。代わりに「テンプレート」欄に希望する言語コードを設定してください。
  2. クエリでは言語コードに大文字が使えません。例えばルーマニア語なら「ro」が正しく「RO」は間違いです。
  3. そちらの結果を生成するには、出力の「形式」欄は既定のHtmlではなく、Wikiを選択☑してください。

準備完了です! 改めてUser:Spiritiaさんには特に感謝します!

文がない項目

「文がない」オプションは以下のようなものを見つけるために使うことができます。

  • ウィキペディアの特定のカテゴリに対して文がない項目(例:英語版ウィキペディアのアメリカ地理のスタブカテゴリen:Category:United States geography stubs
  • 特定の言語版ウィキペディア全体にある、文がない項目(例:"sowiki"

PetScanを利用してテンプレートをインポートする手順。

SPARQL クエリを利用して特定のプロジェクト関連のサイトリンクを抽出

  • 「カテゴリ」タブで対象のプロジェクトを指定。例えばドイツ語版ウィキペディアなら、言語欄はdeプロジェクト欄はwikipediaとする。
  • その他のソースタブでSPARQLクエリを入力
  • ウィキを使用欄でカテゴリからオプションを選択していることを確認。
  • 実行を押す。

これは、SPARQLクエリに基づいて特定のページ群のページビューを抽出するのに便利です。Pagepile出力タブを確認してください)にこれを保存しておいて、その後Pagepile IDをMassviews Analysisに入力することができます (ソースドロップダウンから「Page Pile」を選択。)

SPARQLクエリに基づいて除外するウィキデータ項目の一覧を取得する

例えば、職業 (P106) に「宝飾デザイナー」 (Q2519376) を、QuickStatementsのようなツールで追加したい人々のウィキデータID (QID) の一覧を手に入れたとします。しかしながら、既に「その職業を持っている」項目に職業を追加したくはありません。ここで、PetScanでこれを実施する方法があります:

  • テキストファイルにQIDの一覧をQIDごとに改行して用意します
  • 「その他のソース」タブで、「一覧」という欄にこのテキストを貼り付けます
  • 「Wiki」フォームに、文字列wikidatawikiを入力します
  • 「SPARQL」欄にSPARQLクエリを入力します。この例では、このクエリは職業が「宝飾デザイナー」であるすべての人間を与えます:
    select ?item where { ?item wdt:P31 wd:Q5; wdt:P106 wd:Q2519376. }
  • 最後に、除外をしたいので、「組み合わせ」欄に文字列manual NOT sparqlを追加して、「一覧」('manual list')によるすべてのQID、ただしSPARQLクエリによる項目を「除く」ものを取得できるようにします。
  • 「実行」を押します

サンプルをここに追加...

バグ報告、機能の要望、コードベース

関連項目

外部リンク