質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

4207閲覧

Wikipediaの検索の精度が低くて困っています…。

hacosato

総合スコア48

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/12/10 08:33

###前提・実現したいこと
MediaWiki APIを使って、Wikipediaの記事を検索しています。
具体的にいうと、音楽の曲のリリース年などの情報を知りたいです。
繰り返し大量の情報を処理したいのではなく、数百件の記事の情報を知りたいです。

なのにWikipediaの検索の精度が低くて困っています…!

###発生している問題・エラーメッセージ
たとえば
「PERFECT HUMAN RADIOFISH」で検索します。
[https://ja.wikipedia.org/w/api.php?format=xml&action=query&list=search&srsearch=PERFECT HUMAN RADIO FISH](https://ja.wikipedia.org/w/api.php?format=xml&action=query&list=search&srsearch=PERFECT HUMAN RADIO FISH)

最初にヒットするのはこれです。これは期待してたのではないです。
https://ja.wikipedia.org/wiki/SUPER_HITS_50

期待していたのはここです(検索結果の2番目に出てきてた)。
https://ja.wikipedia.org/wiki/PERFECT_HUMAN


別のクエリとして、「星野源 恋」で検索すると、ここが最初に出てきます。
https://ja.wikipedia.org/w/api.php?format=xml&action=query&list=search&srsearch=%E6%98%9F%E9%87%8E%E6%BA%90%20%E6%81%8B

最初にヒットするのはこれです。これは期待してたのではないです。
https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%AD%E3%82%A2%E3%83%AC%E3%83%8A%E3%82%B5%E3%82%A4

期待していたのはここです(検索結果の2番目に出てきてた)。
https://ja.wikipedia.org/wiki/%E6%81%8B_(%E6%98%9F%E9%87%8E%E6%BA%90%E3%81%AE%E6%9B%B2)

###その他調べたこと

Wikipedia:ウィキペディアを探検するには
には、

ウィキペディアで使用している検索エンジンLuceneは日本語の形態素解析に対応していないので、日本語検索の精度があまり高くありません

とあります。
また、

ウィキペディアの検索機能は、サーバへの負荷を軽減するために、一時的に休止している場合もあります。そのようなときは、外部の検索エンジンを使って検索することもできます。GoogleやYahoo! JAPANなどの検索エンジンでは、「項目名 Wikipedia」と入力して検索してみてください。

と書いてあります。

Wikipediaの検索の精度を高めるようなクエリの入れ方などはあるのでしょうか?
それかGoogleなどの検索のAPIを使うほうがいいですか?(制限がきついようで尻込みしています)

よい方法はありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Wikipediaの検索の精度を高めるようなクエリの入れ方などはあるのでしょうか?

現時点でのウィキペディアの検索機能については、サイト運営側自身が精度が低いと言明しているのですから、利用者側で工夫しても、精度は大して上がらないでしょう。

よい方法はありますか?

いくつか方法はありますが、決定打になるものはありません。

  • ウィキペディアの検索機能を改善する。こちらの説明を参考になさってください。

  • カテゴリ検索などを併用する。これは他の方が回答していらっしゃいます。

  • 数百件程度なら、検索を自動化するまでもなく、手作業で目的の記事を探してリストアップし、それを取得すればいいのではないでしょうか。MediaWiki APIには、記事名やカテゴリページ名を指定してページの内容を取得するインタフェースもあります。

  • (追記) Pywikibotという、MediaWikiからの情報取得や記事編集を (半)自動化するためのフレームワークがあります。例えば、検索クエリを送信して結果の一覧をコンソールに表示し、一覧から選択した記事をダウンロードする、といった一連の作業を行うアプリケーションを作ることができます。

  • どうしても検索できるようにしたいのなら、ウィキペディアの記事データを収集してご自分でインデクス化することも考えられます。しかし、ウェブ経由でウィキペディア記事を大量に収集するようなクローラ行為は非推奨です。かわりに、公開されているデータベースダンプを使うべきです。Wikipedia:データベースダウンロードを参照。

投稿2016/12/10 09:18

編集2016/12/10 11:53
ikedas

総合スコア4317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hacosato

2016/12/10 12:39

「ウィキペディアの検索機能を改善する。こちらの説明を参考になさってください。」 ↑リンクをクリックして笑いました。ありがとうございます。検討します♪ 数百件の手作業、つらい気持ちになります。 というか、検証をしていると結局手作業でWikipediaの検索をすることになってしまうので、 わたしGoogleから2回に1回ぐらいの割合でbotかどうか疑われてしまうという疑惑の身分になっています(検索するとかなりの割合でCaptchaが出る)。 Pywikibotは、まだきちんと調べきれてないですが、結局Wikipediaの検索機能を使わなければならない部分は変わらないですよね…? 該当ページを見つけたら正規表現を使って情報を収集する部分は、Pythonでなんとか書けたので、たぶんすぐには必要なさそうです。 ありがとうございました。
guest

0

ベストアンサー

ウィキペディアの記事はカテゴリ付けされていますので、それを検索条件に入れるのもありではないかと思います(今回の例ですと、「Category:(アーティスト名)の楽曲」などが使えると思います)。

また、MediaWikiの検索エンジンはCirrusSearchとなっているので、「incategory:カテゴリ名」という文字列を入れると、そのカテゴリ内の記事だけヒットします。

投稿2016/12/10 09:00

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hacosato

2016/12/10 12:34

ありがとうございます! しかし! https://ja.wikipedia.org/w/api.php?format=xml&action=query&list=search&srsearch=%E6%81%8B%20%E6%98%9F%E9%87%8E%E6%BA%90%20incategory%3A%E6%98%9F%E9%87%8E%E6%BA%90%E3%81%AE%E6%A5%BD%E6%9B%B2 「星野源 恋 incategory:星野源の楽曲」で検索すると、星野源のほかの曲(『SUN』)が上がってくるので結局目的の記事にたどり着けません(笑)。 もはや悪意を感じます!! 検索結果のattrをひとつひとつ洗って、正規表現でマッチするかを検討してみようと思います。 でもそうすると表記のゆれがありそうなのでやはり茨の道です…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問