IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
ページコンテンツ multiprocessing で MapReduce を実装する SimpleMapReduce ファイルの単語を数える ナビゲーション コンテンツテーブル 前: プロセス間通信 次: readline – GNU readline ライブラリのインタフェース This Page Show Source サンプルプログラム PyMOTW の全てのサンプルプログラムの出力は、 注記されていない限りは Python 2.7.2 で生成されています。 標準ライブラリの初期のバージョンでは利用できない機能も紹介している 可能性があります。 multiprocessing で MapReduce を実装する¶ Pool クラスは1サーバで簡単な MapReduce 実装を作成するために使用することができます。それは分散処理の最大限の利点を得るものではないですが、ある問題を個々の分
「全てのwebエンジニアがPythonを勉強するべき2013年到来」(2013-01-01)という記事が人気を集めているようだ。巳年(ヘビ年)にひっかけて、これからPythonを勉強したい人を対象に、書籍やライブラリなどを紹介している。有益な情報が多数含まれているが、ちょっとPythonを試してみたいという程度の人には、これだと敷居が高すぎるように思う。 Pythonに限らないが、あたらしい言語をはじめるとき、もっとも障害になるのは「環境構築」だろう。Pythonの場合、LinuxやMacであれば、Pythonインタプリタは最初から入っているので、Pythonそのものをインストールする必要はない。しかし、「そのあとどうするのか?」というのが、なかなかむずかしい。例えば、「Hello, World!」を出すWebアプリを書くには、そこからどうすればいいのか。なんらかのWebフレームワークを使
(この記事は 2008年03月14日に別のブログに投稿した記事を移動・編集したものです。) インターネット上の日本語を扱っていると、全角半角が統一されていない事による表記揺れをなんとかしたい場面に出くわします。半角で書かれた iPod も、全角で書かれたiPodも同じものとして扱いたいときや、あるいは単に見た目がきれいになるように、英数字は半角に、カタカナは全角にそろえたい、という場合です。 Python では setomitsさんによる zenhan.py を使うと、文字種ごとに全角半角を選択して変換することができ、除外文字も設定できるので便利です。ただ、そこまで柔軟でなくても良く、単に表記揺れがなくなれば良い、という場合も多いかと思います。その場合はPythonの標準ライブラリに含まれる unicodedata モジュールの normalize 関数を使うと便利です。 >>> impo
1. type, isinstance 関数で、変数の型を調べる Python で、変数の中身が、どのクラスに所属するのか、または、関数なのか調べたい。 2.1 組み込み関数 によると、 (装飾は、引用者による) type(object) object の型を返します。返される値は型オブジェクトです。 isinstance(object, classinfo) 引数 object が引数 classinfo のインスタンスであるか、 (直接または間接的な) サブクラスのインスタンスの場合に真を返します。 例えば、「数値」の場合、次のようにして、数値に対して type 関数を適用する。 print type(100) #=> <type 'int'> type 関数の結果を用いて、isinstance 関数の引数に指定した。 print isinstance(100, int)
probabilistic latent semantic analysis (PLSA)は、 ・文書dがP(d)で選ばれる ・潜在変数zがP(z|d)で選ばれる ・語wがP(w|z)で生成される というプロセスを経て、結果として(d,w)のペアが観測されるという文書と語の生成モデル。 式で表すと (1) となる。P(d,w)の尤もらしい確率分布を見つけたい。対数尤度関数は (2) となる。n(d,w)は語wが文書dに出現する回数。この式は訓練データn(d,w)(;どの語がどの文書に何回出現したか)が尤もらしい確率分布P(d,w)に従うとき最大になる。ベイズの定理を用いると (3) となることを利用して、この尤度関数を最大化するためにEMアルゴリズムを用いて実装してみる。(過学習を回避するために文献ではTempered EM (TEM)を用いている。)尤度関数が収束するまで以下のE-ste
昨日Pythonでメモリを食い過ぎた時に見直すポイントを書いたが、使ったツールの説明を忘れていた。 Guppy-PE: A Python Programming Environmentを使うとこんな感じの出力が得られる。 Partition of a set of 2330379 objects. Total size = 355901024 bytes. Index Count % Size % Cumulative % Kind (class / dict of class) 0 447287 19 125240360 35 125240360 35 dict of __main__.Node 1 53016 2 85891008 24 211131368 59 dict (no owner) 2 467204 20 66360776 19 277492144 78 str 3 457
pythonbrewとvirtualenvを使ってPythonの開発環境を整えてみました。 ツールの詳しい説明は、リンク先を見てくださいということではぶきます。 続きました→ その2 対象 環境:LinuxやFreeBSDなど。Bourne Shell系(bash, ksh, zshは確認済み) 人:Pythonインタプリタのインストールを手動でしたくない上に複数のバージョンを切り替えて使いたい人。 1.pythonbrewのインストール ざっくり言って、Pythonインタプリタのインストールを楽にするツールです。 これがないと、このエントリの意味が分からないので、とりあえずインストール方法の解説からしていきたいと思います。 以下のコマンドを実行すると、pythonbrew一式がインストールされます。 $ curl -kL http://github.com/utahta/pythonbr
libsvmをコンパイルして「その場で動かす」だけなら README に書いてある手順で進められますが、実用的には好きな場所で実行できるようにしたい。ということでその手順です。 【蛇足コラム】 svm-trainとかの場所をos.path.exists()で確認するようなスクリプトになっているので絶対パスで指定せざるを得ないのだけど、cdll.LoadLibrary()のように環境変数か何かで指定されたPATHを参照して対象ファイルが存在するかを判断するようなライブラリって無いんだろうか。 ConfigParserあたりで変更箇所を一括管理する形で書くのも良いかもしれないけど。 環境構築手順 libsvm本家サイトからソースをダウンロード。 コンパイル。 > tar xvfz libsvm-3.1.tar.gz > cd libsvm-3.1 > make 実行ファイルを ~/bin/li
メモがわりに MeCab + Python のインストールで引っかかったところを書く。 状況:研究室のサーバのローカル環境にインストールする。suになれる権限はない。 1.MeCabのインストール とりあえずmecab-0.98を持ってくる。 wget http://sourceforge.net/projects/mecab/files/mecab/0.98/mecab-0.98.tar.gz そして、インストール ./configure --prefix=自分のローカル --with-charset=utf8 を打ち込む。 「--prefix=自分のローカル」がないと、勝手に/usr/local/のほうにインストールされることになって、もちろんそんな権限はないのでエラーが起きる。 makeのときに、 make[2]: `all' に対して行うべき事はありません。 make instal
何度かBeautifulSoupについては書いているのですが、未だに使い方が覚えられずにイライラします。仕方が無いのでまとめて置く事にしました。BeautifulSoupはHTMLから情報を取得するだけ無く、HTMLの編集もできますが、ここではスクレイピング用途のみに絞っています。 使用するのは以下のHTMLです。 このHTMLを使って色々と情報を取得したのが以下です。覚えるべきはfindAllだけです。注意する必要があるのは、textを指定した場合にタグオブジェクトが取れずに、テキストオブジェクトが取れるので、一旦parentで親のタグ取りましょうという事と、正規表現で条件指定する場合は、re.compileで正規表現オブジェクトを渡すという事位ですか。 #!/usr/bin/python # -*- coding: utf-8 -*- import re import urllib f
しばらくベンチマークコードを書いてなくてすっかり忘れていたので、メモ書きです。今回は例題として、yahooのこのページをBeautifulSoupとlxmlでのスクレイピング比較をしてみる事にしました。比較対象の関数は以下の通りです。どちらのコードも入力・出力ともに同じなので、どちらが実行時間やメモリ使用量が少ないのかを知りたくなりますね。 # BeautifulSoup def scrape_with_bs(html): from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) rows = soup.find('table', attrs={'class':'channel9'}).findAll('tr') channels = rows[0].findAll('td', attrs={'class':'st
環境 この記事の内容は、Ubuntu 6.10, Python 2.4で確認しました。 現象 ユニコード文字列をstr関数に与えると、UnicodeEncodeErrorが発生します。 $ python Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02) [GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> s = u'ほげ' >>> str(s) Traceback (most recent call last): File "", line 1, in ? UnicodeEncodeError: 'ascii' codec
Pydictionって? VimでPythonのコーディングをする時に、コード補完が可能になるため、楽にコーディング出来るようになります。 インストール 配布元からパッケージを取得してきます。 現在の最新版は、1.2のようです。 $> wget http://www.vim.org/scripts/download_script.php?src_id=11062 $> mv download_script.php\?src_id\=11062 pydiction-1.2.zip $> unzip pydiction-1.2.zip $> mkdir -p ~/.vim/after/ftplugin/ $> cp pydiction-1.2/python_pydiction.vim ~/.vim/after/ftplugin/ $> mkdir -p ~/.vim/pydiction/ $>
前回のエントリーで、python のインストールが完了しました。 早速実行してみます。 # python2.7 -V python2.7: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory バージョン情報を取得しようとしたのですが、エラーが出ています。 どうやら、ライブラリが足りない様子。 ldd コマンドで確認してみます。 # cd /usr/local/bin/ # ldd python2.7 libpython2.7.so.1.0 => not found libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b9dde53e000) libdl.so.2
はじめに この文書は、 Steven Bird, Ewan Klein, Edward Loper 著 萩原 正人、中山 敬広、水野 貴明 訳 『入門 自然言語処理』 O'Reilly Japan, 2010. の第12章「Python による日本語自然言語処理」を、原書 Natural Language Processing with Python と同じ Creative Commons Attribution Noncommercial No Derivative Works 3.0 US License の下で公開するものです。 原書では主に英語を対象とした自然言語処理を取り扱っています。内容や考え方の多くは言語に依存しないものではありますが、単語の分かち書きをしない点や統語構造等の違いから、日本語を対象とする場合、いくつか気をつけなければいけない点があります。日本語を扱う場合にも
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く