2010-07-01から1ヶ月間の記事一覧
追記(2010-09-22):完成版がこちら(N-gram コーパス - 日本語ウェブコーパス 2010)にあります.追記(2010-08-06):文末記号(</S>)を追加したものを作成しました(形態素 N-gram コーパスの修正版 - やた@はてな日記). ダウンロード 頻度が 100 以上の…
現在手元にあるウェブコーパスの 1 割に相当する約 600 万のウェブページから切り出したテキストについて,形態素の出現頻度を求めてみました. 文数 623,455,629(約 6 億) 形態素数 9,058,967,398(約 90 億) 前処理の内容は某社が作成した N-gram コー…
概要 コマンド sort にオプション -R(--random-sort)を渡してやると,各行のハッシュ値をキーとする整列になります.でも,ハッシュ値の計算に時間がかかる上に,同じ行は必ず連続して配置されるという癖があるため,使い方には注意が必要です.そこで,こ…
100 万行のテキストファイル(test-data)を C/C++ で作成したプログラムで読み込むとき,どのくらいの時間がかかるかを調べた結果です.データ入力がボトルネックになるような状況では,std::fgets(), std::fread(), std::istream::read() を使った方が良さ…
概要 マルチキークイックソート(Multikey Quicksort)は大量の文字列を整列するのに適した整列手法です.例えば,ランダム順になっている URL 集合や Wikipedia のタイトル集合を整列する場合であれば,単純なクイックソートと比べて 1/2 程度の時間で整列…
ウェブコーパスからテキストを切り出して,分かち書きをして,頻度を求めて,…というような処理を試していたところ,テキストに含まれる表示方向を制御する文字(例えばアラビア語で用いる)のおかげで,出力結果の表示があっち向いたりこっち向いたりする(…
MeCab の出力データを圧縮するとどのくらい小さくなるのかを調べてみました. テキストの圧縮結果 まず,形態素解析する前のテキスト(UTF-8)を圧縮してみたところ,圧縮率(※)は 20 - 30% 程度になりました.やはり,xz の圧縮率は魅力的です.bzip2 は伸…
xz の概要 xz(XZ Utils)は lzma(LZMA Utils)の後継となる圧縮形式です.ちょっとした性能テスト(コマンド xz の圧縮率と圧縮速度 - やた@はてな日記,コマンド xz による圧縮・伸長のメモリ消費 - やた@はてな日記)でも分かるように,圧縮にかかるコ…
文字列を処理するのに Python はとても便利ですが,速度が気になる状況では,やはり C/C++ を使いたいところです.ということで,Unicode 正規化(http://homepage1.nifty.com/nomenclator/unicode/normalization.htm)のために ICU(ICU - International Co…
それなりにサイズのあるテキストファイル(335,388,465 bytes,日本語,UTF-8)を gzip, bzip2, xz で圧縮して,圧縮後のサイズ(%)と圧縮時間(秒)を表にしました. 圧縮後のサイズ(%) 圧縮レベル gzip bzip2 xz xz -e 0 - - 34.2 29.6 1 41.4 29.7 33.…
xz(XZ Utils)のメモリ消費は lzma(LZMA Utils)よりも大きくなっているようです.新しい PC では問題ないと思いますが,古い PC を使っている場合,-9 を使うのは止めておいた方が良いかもしれません. 圧縮プリセット 圧縮 伸長 0 1.4MB 232KB 1 1.4MB 2…
実際にウェブページで用いられている文字コードについて,もう少し詳しく調べてみました.調べた内容は,HTTP レスポンスヘッダに記述されている charset,本文の先頭にある BOM(Byte Order Mark),XML 宣言()の encoding,META タグ(<meta>)を使って指定さ</meta>…
BeautifulSoup の文字コード判定が HTTP レスポンスヘッダを使っていないことに思い至って,50 万件くらいのウェブページから,HTTP レスポンスヘッダの Content-Type に指定されている charset(いわゆる文字コード)を抜き出してみました.結果は以下の通…
先月から作成中のウェブコーパス(Amazon EC2 を使ってウェブコーパスを作成中 - やた@はてな日記)について,現状でのまとめです. はじめに 統計的言語処理の研究において,大規模な言語資源(コーパス)はとても貴重なデータです.特に,ウェブコーパス…
HTML のルビ振り用タグ(<ruby>)は表記と読みのペアを抽出するのに使えそうな気がしたので,約 1000 万ページからルビを取り出してみました.ルビを使っているページ自体が少ないので,抽出できたルビはノイズや重複込みで約 800 万件,重複を除くと約 80 万件で</ruby>…
ウェブコーパスの作成については,規模が大きいのが厄介なだけで,ほとんどプログラミングをしていません.わずかな作業も Python やシェルスクリプトを使えば簡単に片付いてしまいます. 同一内容ページの検出 アーカイブの中からメッセージダイジェスト(S…
概要 大規模なウェブコーパスを作成するときは,HTML 文書を URL 順に整列することで,圧縮率をかなり改善できます.理由は,類似した文書を固めることができるからです.という内容が,n-yo さんに紹介していただいた論文 ``On Compressing the Textual Web…