コーパスとしてのWikipedia
前のエントリでさりげなく"best"を使っていましたが、こういう単語(つまりソートに関して不変)は何個ぐらいあるのかWikipedia(英語版)から抽出した単語リストで調べてみました。
抽出
あまり知られていませんが、Wikipediaはテキストについては巨大なxmlファイルで公開しています。
などの種類があるようです。
しかしコーパスとして使うならば最新の記事のみで充分なのでダウンロードして展開します。
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のデータならば
- ほとんどの固有名詞はカバーされている
- 実在しない固有名詞もしばらくしたらカバーされる
という利点があります。
使用例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ってなんだ?と思って調べてみると
- 人名: Coor
- COOR (エステルRCOORの一部)
- coordiateの略
- どっかの組織の略称
2はかなり意外でしたが、WPならば一番多いかもしれません。
まとめ: 適度に大きい・適度に乱雑なデータの利点
人間が頭を捻って、言語(や文脈)に依存する処理を組み込めば小さいデータセットを有効に活用出来ますが、どんどんそのアプリケーションに特化してしまいます。
Googleのようなリソースのある組織ならばWWW全体を処理して有意なデータを作り出すことができますが、普通は難しいでしょう。
Wikipediaは個人が手に入れられる生の自然言語データとしては最大で、多言語の百科事典なので非常に幅広い文章が含まれています。
というわけでWikipediaの有用性は分かっていただけたかと思います。生データの持つ可能性は無限です!
皆さんも何か言語学的なおもちゃを作るとき、既存のAPIが物足りないなぁと感じたらこの巨大なデータのことを思い出してみましょう。きっと何かの役に立つと思います。