2010-01-01から1年間の記事一覧

ウェブコーパスの形態素頻度

現在手元にあるウェブコーパスの 1 割に相当する約 600 万のウェブページから切り出したテキストについて,形態素の出現頻度を求めてみました. 文数 623,455,629(約 6 億) 形態素数 9,058,967,398(約 90 億) 前処理の内容は某社が作成した N-gram コー…

テキストファイルを行単位でランダム順に並べ替える

概要 コマンド sort にオプション -R(--random-sort)を渡してやると,各行のハッシュ値をキーとする整列になります.でも,ハッシュ値の計算に時間がかかる上に,同じ行は必ず連続して配置されるという癖があるため,使い方には注意が必要です.そこで,こ…

C/C++ におけるデータ入力の速度

100 万行のテキストファイル(test-data)を C/C++ で作成したプログラムで読み込むとき,どのくらいの時間がかかるかを調べた結果です.データ入力がボトルネックになるような状況では,std::fgets(), std::fread(), std::istream::read() を使った方が良さ…

マルチキークイックソート(Multikey Quicksort)のための C++ ヘッダ 改良版

概要 マルチキークイックソート(Multikey Quicksort)は大量の文字列を整列するのに適した整列手法です.例えば,ランダム順になっている URL 集合や Wikipedia のタイトル集合を整列する場合であれば,単純なクイックソートと比べて 1/2 程度の時間で整列…

Unicode の方向制御文字は思いのほかに厄介かも

ウェブコーパスからテキストを切り出して,分かち書きをして,頻度を求めて,…というような処理を試していたところ,テキストに含まれる表示方向を制御する文字(例えばアラビア語で用いる)のおかげで,出力結果の表示があっち向いたりこっち向いたりする(…

形態素解析器(MeCab)の出力データを圧縮するとどのくらいのサイズになるか?

MeCab の出力データを圧縮するとどのくらい小さくなるのかを調べてみました. テキストの圧縮結果 まず,形態素解析する前のテキスト(UTF-8)を圧縮してみたところ,圧縮率(※)は 20 - 30% 程度になりました.やはり,xz の圧縮率は魅力的です.bzip2 は伸…

XZ Utils(liblzma)による圧縮・伸長(C++)

xz の概要 xz(XZ Utils)は lzma(LZMA Utils)の後継となる圧縮形式です.ちょっとした性能テスト(コマンド xz の圧縮率と圧縮速度 - やた@はてな日記,コマンド xz による圧縮・伸長のメモリ消費 - やた@はてな日記)でも分かるように,圧縮にかかるコ…

ICU(C++)を使って Unicode 正規化

文字列を処理するのに Python はとても便利ですが,速度が気になる状況では,やはり C/C++ を使いたいところです.ということで,Unicode 正規化(http://homepage1.nifty.com/nomenclator/unicode/normalization.htm)のために ICU(ICU - International Co…

コマンド xz の圧縮率と圧縮速度

それなりにサイズのあるテキストファイル(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(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>…

HTTP レスポンスヘッダの Content-Type に現れる charset

BeautifulSoup の文字コード判定が HTTP レスポンスヘッダを使っていないことに思い至って,50 万件くらいのウェブページから,HTTP レスポンスヘッダの Content-Type に指定されている charset(いわゆる文字コード)を抜き出してみました.結果は以下の通…

ウェブコーパスの作成方法と内容,現状での課題

先月から作成中のウェブコーパス(Amazon EC2 を使ってウェブコーパスを作成中 - やた@はてな日記)について,現状でのまとめです. はじめに 統計的言語処理の研究において,大規模な言語資源(コーパス)はとても貴重なデータです.特に,ウェブコーパス…

ruby タグで表記と読みのペアを抽出(できるかも)

HTML のルビ振り用タグ(<ruby>)は表記と読みのペアを抽出するのに使えそうな気がしたので,約 1000 万ページからルビを取り出してみました.ルビを使っているページ自体が少ないので,抽出できたルビはノイズや重複込みで約 800 万件,重複を除くと約 80 万件で</ruby>…

最近の簡単・Python プログラミング

ウェブコーパスの作成については,規模が大きいのが厄介なだけで,ほとんどプログラミングをしていません.わずかな作業も Python やシェルスクリプトを使えば簡単に片付いてしまいます. 同一内容ページの検出 アーカイブの中からメッセージダイジェスト(S…

大量の HTML 文書は URL 順に整列してから圧縮する

概要 大規模なウェブコーパスを作成するときは,HTML 文書を URL 順に整列することで,圧縮率をかなり改善できます.理由は,類似した文書を固めることができるからです.という内容が,n-yo さんに紹介していただいた論文 ``On Compressing the Textual Web…

作成中のウェブコーパスの内容について

続けてコメントをいただいたので,ウェブコーパスの中身について分かっていることを書いておきます. アダルト系のページについて Yahoo! ウェブ検索 Web API を使うとき,デフォルトの設定(adult_ok は値なし)にしているので,アダルト系のページはかなり…

リソースを気軽に投入できるのは便利

昨日の話(Amazon EC2 を使ってウェブコーパスを作成中 - やた@はてな日記)に関して有用なコメントをいただいたので,とりあえず bzip2 から xz への移行をしています.# bzip2 から xz への移行により,コーパスのサイズは 10-15% くらい小さくなると思い…

「パソコンがおかしいからなんとかして欲しい」という言葉

「パソコンがおかしいからなんとかして欲しい」という言葉は厄介です.今回は,HDD の故障によりシステムファイルが破損して OS を起動できない様子だったので,1. 手持ちの HDD と交換して,2. システムを復元した後,3. 旧 HDD から可能な範囲でデータを復…

Amazon EC2 を使ってウェブコーパスを作成中

概要 最近,Amazon EC2 を利用してウェブコーパスを作成しています.収集対象は Yahoo! ウェブ検索 Web API により得られる検索結果(上位 1000 件)に含まれるウェブページで,検索のクエリには ipadic 2.7.0 の見出し語(217,550 語)を用いています.取得…

続・BeautifulSoup で HTML 文書からタグを取り除く(Python)

前回(BeautifulSoup で HTML 文書からタグを取り除く(Python) - やた@はてな日記)の内容でも,ある程度は問題なく処理できていました.しかし,大量の HTML 文書を渡してみると,新たに 2 つの問題が見つかりました.それぞれの内容と今回の対処は以下…

BeautifulSoup で HTML 文書からタグを取り除く(Python)

はじめに HTML の解析に便利な BeautifulSoup(Python ライブラリ)を使って HTML 文書のテキスト部分の切り出しを試みましたというお話です.「間違えているところがある」とか「もっと良い方法がある」という場合,コメントをいただけると幸いです.※ HTML…

案の定,落ちました

面接にてダメダメだったので落ちるだろうと思っていましたが,案の定,落ちました.覚悟していても,多少は凹むようです.

近況

二週間ほど前に親が入院しました.慢性的な病気で長いこと調子が悪かった上に,肺炎が追加されて病院送りという流れです.入院前後はかなり危険な状態でしたが,幸いにも,快方に向かっているようです.というようなことがあって,少しばかり肝を冷やしまし…

Xperia で気になること

Xperia に機種変更してから 40 日ほど経過しました.それほど使い込んでいるわけではありませんが,現状で気になることをメモしておきます.解決策が分かっていないものなので,読んでも役には立ちません.「書いておいたら,誰かが解決策を教えてくれるかも…

本番でベストの力を発揮できないのも実力の内

今日の自分に対する言葉です.反省….

文字コードを勉強して不満足になる

日本語を含む文字列を操作するプログラムを C 言語で開発していたことがあり,Web コーパスを扱ったこともあるため,文字コードについては,それなりに知っているつもりでした.それでも,書籍で確認してみると,存外に知らないことが沢山あるということに気…

総合病院の待ち時間が長すぎた(愚痴)

付き添いで中央病院まで行ったのですが,診察までに 20 分,検査結果が出るまで 30 分,最後に支払いのために 25 分くらい待たされて,呆れました.25 分も待たされて,支払い金額は 1000 円にも満たないとか,むしろ笑えます.薬を受け取るわけでもなく,ど…

タイ焼き,金太郎飴,そして Lisp

「初めての人のための Lisp」は面白い本でした.しかし,真面目に読むには面白すぎるかもしれません.Lisp には詳しくありませんが,元になっているのが 20 年以上も前の本ですから,内容が古いことは間違いないでしょう.それでも,とくに色あせていないよ…

劇場版 TRICK を観てきました

映画館まで自転車で 30 分くらいかかるので敬遠していたのですが,運動もかねて,久しぶりに映画を観に行ってきました.観てきたのは TRICK です.選んだ理由は,たまたま公開初日だったからです.せっかくなので少し感想を….全体として面白かったと思いま…