読者です 読者をやめる 読者になる 読者になる

コーパスとしてのWikipedia

前のエントリでさりげなく"best"を使っていましたが、こういう単語(つまりソートに関して不変)は何個ぐらいあるのかWikipedia(英語版)から抽出した単語リストで調べてみました。

抽出

あまり知られていませんが、Wikipediaはテキストについては巨大なxmlファイルで公開しています。

  • 最新の記事のみ(User:やWikipedia:名前空間を含まない)
  • 履歴付き記事
  • 全データ (展開したら2TB越えるらしい)

などの種類があるようです。

しかしコーパスとして使うならば最新の記事のみで充分なのでダウンロードして展開します。

7.6G 2007-02-07 23:31 wikipedia-en-articles.xml
1.7G 2007-02-04 11:07 wikipedia-ja-articles.xml

2007年でこれなので今はかなり増えているでしょう。


ここから適当に単語を抽出したファイルを置いておきます。

行ごとに独立で単語<スペース>個数の形式になっていると思いますが、緩いフィルターを使ったのでノイズがかなり多いです。


こういうデータを眺めていると意外性があって面白いですね。

使用例1: スペルチェッカー

以前とある友人に「DVDをリップしたら字幕の小文字lと大文字Iがランダムに入れ替わってしまった、どうにかしてほしい」と頼まれたことがあります。(DVDの字幕は画像データなのでOCRで失敗する)

そのときは全ての単語について、iまたはlがn個含まれていたとすると、2^n個の単語を作って、さらに1〜2文字の曖昧検索で辞書を引いてもっともポイントの高いものを採用、という方法が有効でした。

(そのときは思いつきませんでしたが)普通はaspellなどを使うところだと思うのですが、今試してみたところ、中東を舞台にした戦争もの?の映画だったようで

  • 人名・地名
  • 特殊な略語

がさっぱりで、使いものになりませんでした。その点Wikipediaのデータならば

  1. ほとんどの固有名詞はカバーされている
  2. 実在しない固有名詞もしばらくしたらカバーされる

という利点があります。

使用例2: 統計を見て楽しむ

先ほどのソート不変単語ですが、4文字以上だと

first 1242127
been 989225
most 754275
city 738023
film 397111
best 295527
below 278022
know 169156
coor 152164
lost 143589
hill 123799
films 123416
almost 121555

よく見かける単語ばかりのようですが、coorってなんだ?と思って調べてみると

  1. 人名: Coor
  2. COOR (エステルRCOORの一部)
  3. coordiateの略
  4. どっかの組織の略称

2はかなり意外でしたが、WPならば一番多いかもしれません。

まとめ: 適度に大きい・適度に乱雑なデータの利点

人間が頭を捻って、言語(や文脈)に依存する処理を組み込めば小さいデータセットを有効に活用出来ますが、どんどんそのアプリケーションに特化してしまいます。

Googleのようなリソースのある組織ならばWWW全体を処理して有意なデータを作り出すことができますが、普通は難しいでしょう。

Wikipediaは個人が手に入れられる生の自然言語データとしては最大で、多言語の百科事典なので非常に幅広い文章が含まれています。


というわけでWikipediaの有用性は分かっていただけたかと思います。生データの持つ可能性は無限です!
皆さんも何か言語学的なおもちゃを作るとき、既存のAPIが物足りないなぁと感じたらこの巨大なデータのことを思い出してみましょう。きっと何かの役に立つと思います。