<?xml version="1.0" encoding="utf-8" ?>


<?xml-stylesheet href="/allegro/rssxsl" type="text/xsl" media="screen"?>


<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xml:lang="ja">
<channel rdf:about="http://chick.g.hatena.ne.jp/allegro/rss">
	<title>雲雀は高く空を舞い</title>
	<link>http://chick.g.hatena.ne.jp/allegro/</link>
	<description>雲雀は高く空を舞い</description>

	<dc:creator>allegro</dc:creator>
	<items>
	<rdf:Seq>
		<rdf:li rdf:resource="http://chick.g.hatena.ne.jp/allegro/20091203/p2"/>
		<rdf:li rdf:resource="http://chick.g.hatena.ne.jp/allegro/20091203/p1"/>
		<rdf:li rdf:resource="http://chick.g.hatena.ne.jp/allegro/20091201/p1"/>
		<rdf:li rdf:resource="http://chick.g.hatena.ne.jp/allegro/20091130/p1"/>
		<rdf:li rdf:resource="http://chick.g.hatena.ne.jp/allegro/20091128/p1"/>
	</rdf:Seq>
	</items>
</channel>
<item rdf:about="http://chick.g.hatena.ne.jp/allegro/20091203/p2">
	<title>[python]コーディング規約</title>
	<link>http://chick.g.hatena.ne.jp/allegro/20091203/p2</link>
	<description> ここら辺。pepはPython Enhancement Proposalとか。 はてなブックマーク - PEP 8 -- Style Guide for Python Code 私家版 日本語 PEP 集 </description>

	<content:encoded><![CDATA[
		<div class="section">
			<p>ここら辺。pepは<a class="keyword" href="http://chick.g.hatena.ne.jp/keyword/Python">Python</a> Enhancement Proposalとか。</p>
			<ul>
				<li> <a href="http://b.hatena.ne.jp/entry/oldriver.org/python/pep-0008j.html" target="_blank">はてなブックマーク - PEP 8 -- Style Guide for Python Code</a></li>
				<li> <a href="http://homepage3.nifty.com/text/script/python/pep_index.html" target="_blank">私家版 日本語 PEP 集</a></li>
			</ul>

		</div>
]]></content:encoded>

	<dc:creator>allegro</dc:creator>
	<dc:date>2009-12-03</dc:date>
	<dc:subject>python</dc:subject>
</item>
<item rdf:about="http://chick.g.hatena.ne.jp/allegro/20091203/p1">
	<title>[python]パッケージに関する覚え書き</title>
	<link>http://chick.g.hatena.ne.jp/allegro/20091203/p1</link>
	<description> 6. モジュール パッケージについて __init__.pyの入ったディレクトリをパッケージとしてimportできる。Mac OS Xのバンドルみたいな感じ。 また、ディレクトリは多層構造にできるけど、その際各</description>

	<content:encoded><![CDATA[
		<div class="section">
			<ul>
				<li> <a href="http://www.python.jp/doc/2.5/tut/node8.html" target="_blank">6. モジュール </a></li>
			</ul>
			<h4> パッケージについて</h4>
			<p><code>__init__.py</code>の入ったディレクトリをパッケージとしてimportできる。Mac OS Xのバンドルみたいな感じ。</p>
			<p>また、ディレクトリは多層構造にできるけど、その際各ディレクトリに<code>__init__.py</code>が必要。</p>
			<p><code>__init__.py</code>はパッケージインポートの祭の初期化メソッドなどを記すが、空でもかまわない。</p>			<br>

			<h4> パッケージのインポート</h4>
<pre>
Sound/
    __init__.py
    Format/
        __init__.py
        echo.py
        sorround.py
     Filters/
        __init__.py
        equalizer.py
        vocoder.py
</pre>
			<br>

			<p>このようなパッケージがあった場合、<code>echo.py</code>をインポートするには<code>import Sound.Format.echo</code>や<code>from Sound.Format import echo</code>などとする．</p>
			<p>echo.py内の関数echofileterを使用する場合、<code>import Sound.Format.echo</code>とした場合は<code>Sound.Format.echo.echofilter(input, output)</code>とする。</p>
			<p><code>from Sound.Format impor echo</code>とした場合は<code>echo.echofilter(input, output)</code>とできる。</p>
			<p>また<code>from Sound.Format.echo import echofileter</code>と、直接関数をインポートすることもでき、この場合は<code>echofilter(input, output)</code>と使える．</p>
			<p><code>from package import item</code>とした場合、itemはサブパッケージ、サブモジュール、モジュール内で定義されている関数、クラス、変数などを指定できる。</p>
			<p><code>import package.item</code>とした場合、itemに指定できるのは、モジュールかパッケージのみ。</p>
			<h4> パッケージ内での暗黙のあるいは明示的な相対import</h4>
			<p>1) 暗黙の相対パスimport</p>
			<p>パッケージ内でのimport itemの実行はまずパッケージ内で探索されその後標準検索パスを見る。</p>
			<p>import されたモジュールが現在のパッケージ (現在のモジュールをサブモジュールにしているパッケージ) 内に見つからなかった場合、 import 文は指定した名前のトップレベルのモジュールを検索する。</p>
			<p>モジュール Sound.Filters.vocoder で Sound.Effects パッケージの echo モジュールをimportしたいときは、 <code>from Sound.Effects import echo</code>とする。</p>
			<p>2) 明示的な相対パスimport</p>
			<p>モジュール Sound.Filters.vocoderから他のパッケージやモジュールをimportする際は<code>from .. import Effects</code>, <code>from ..Effects import echo</code>, <code>from . import equalizer</code>などとする．</p>
			<p>3) もちろん絶対パスimport も行えるので可読性などのためには絶対パスimportが良いのでは</p>
		</div>
]]></content:encoded>

	<dc:creator>allegro</dc:creator>
	<dc:date>2009-12-03</dc:date>
	<dc:subject>python</dc:subject>
</item>
<item rdf:about="http://chick.g.hatena.ne.jp/allegro/20091201/p1">
	<title>[自然言語処理]mecabの解析辞書にUniDicを使い始めた</title>
	<link>http://chick.g.hatena.ne.jp/allegro/20091201/p1</link>
	<description> 1) Uni-dicについて あとで。 インストール方法 UniDicのページからバイナリがダウンロードできるのでそれを適当なディレクトリに置いて、mecabrcから指定するだけ。 形態素解析辞書 UniDic mecabr</description>

	<content:encoded><![CDATA[
		<div class="section">
			<h4> 1) Uni-dicについて</h4>
			<p>あとで。</p>
			<h4> インストール方法</h4>
			<p>UniDicのページからバイナリがダウンロードできるのでそれを適当なディレクトリに置いて、<code>mecabrc</code>から指定するだけ。</p>
			<ul>
				<li> <a href="http://www.tokuteicorpus.jp/dist/" target="_blank">形態素解析辞書 UniDic</a></li>
			</ul>
			<p>mecabrcのディレクトリは僕の場合は <code>/user/local/etc/mecabrc</code>，UniDicは<code>/usr/local/lib/mecab/dic/unidic</code>においた．</p>
			<p>mecabrcはには<code>dicdir=/usr/local/lib/mecab/dic/unidic</code>を記述。 (複数辞書同時に使う場合はどうするんだろう…？)</p>
			<h4> ユーザ辞書への語句の追加</h4>
			<p>追加語句リストをcsvファイルで作成して登録する方法自体は,辞書によらず<code>mecab-dict-index</code>を使うで共通．</p>
			<p>例。</p>
<pre>
csvファイル

あちょっ,-1,-1,-3200,感動詞,めりも言葉,&#42;,&#42;,&#42;,&#42;,アチョッ,あちょっ,あちょっ,&#42;,&#42;,め,あちょっ,アチョッ
めりも,-1,-1,-3200,名詞,固有名詞,人名,&#42;,&#42;,&#42;,メリモ,メリモ,めりも,メリモ,メリモ,固,めりも,メリモ
おはよっ,-1,-1,-3200,感動詞,一般,&#42;,&#42;,&#42;,&#42;,オハヨウ,御早う,おはよう,オハヨー,オハヨウ,和,おはよう,オハヨー
; 表層, 左側index, 右側index, コスト, 品詞, 小品詞1, 小品詞2, 小品詞3,&#42;,&#42;,&#42;,&#42;,&#42;,.. 

sudo /usr/local/libexec/mecab/mecab-dict-index -d ./ -u merymo2.dic -f utf8 -t utf8 merymo2.csv
</pre>

			<p>csvファイルで指定できる品詞はまだよく分かってない…。のであとで。</p>
			<p>作成した辞書ファイルを使用するには<code>mecabrc</code>か<code>dic/unidic/dicrc </code>に<code>userdic = /usr/local/lib/mecab/dic/unidic/merymo2.dic</code>を追加。</p>
			<p>あと、<code>pos-id.def</code>を編集して<code>sudo /usr/local/libexec/mecab/mecab-dict-index</code>をすると<code>matrix.bin</code>が上書きされちゃうんだけど、これはどうしたものなのかなぁ…。これもあとで。</p>
		</div>
]]></content:encoded>

	<dc:creator>allegro</dc:creator>
	<dc:date>2009-12-01</dc:date>
	<dc:subject>自然言語処理</dc:subject>
</item>
<item rdf:about="http://chick.g.hatena.ne.jp/allegro/20091130/p1">
	<title>[python]文字列をaとbとcとdで分割したい</title>
	<link>http://chick.g.hatena.ne.jp/allegro/20091130/p1</link>
	<description> 文字列をseparatorで分割するときはStrings.split()メソッドを使う。 text = u&#39;おはようございます。それでは行ってまいります。横浜は雲が出ているものの、晴れ間がのぞいています。&#39; seped = text.s</description>

	<content:encoded><![CDATA[
		<div class="section">
			<p>文字列をseparatorで分割するときはStrings.split()メソッドを使う。</p>
<pre class="syntax-highlight">
text = u'<span class="synConstant">おはようございます。それでは行ってまいります。横浜は雲が出ているものの、晴れ間がのぞいています。</span>'
seped = text.split('<span class="synConstant">。</span>')
<span class="synStatement">print</span> seped
[u'<span class="synConstant">おはようございます</span>',
u'<span class="synConstant">それでは行ってまいります</span>',
u'<span class="synConstant">横浜は雲が出ているものの、晴れ間がのぞいています</span>'
</pre>

			<p>文字列を複数の位置で分割したいときは？</p>
			<ol>
				<li> splitをループで使う</li>
				<li> 正規表現のre.split()メソッドを使う</li>
			</ol>
<pre class="syntax-highlight">
text = u'<span class="synConstant">おはようございます。それでは行ってまいります。横浜は雲が出ているものの、晴れ間がのぞいています。</span>'
seped = re.split(u'<span class="synConstant">。|、</span>', text)
<span class="synStatement">print</span> seped
[u'<span class="synConstant">おはようございます</span>',
u'<span class="synConstant">それでは行ってまいります</span>',
u'<span class="synConstant">横浜は雲が出ているものの</span>'
u'<span class="synConstant">晴れ間がのぞいています</span>'
</pre>

			<p>区切り文字を出力に含みたいときはpatternをグループ化すればおｋ</p>
<pre class="syntax-highlight">
seped = re.split(u'<span class="synConstant">(。|、)</span>', text)
</pre>

		</div>
]]></content:encoded>

	<dc:creator>allegro</dc:creator>
	<dc:date>2009-11-30</dc:date>
	<dc:subject>python</dc:subject>
</item>
<item rdf:about="http://chick.g.hatena.ne.jp/allegro/20091128/p1">
	<title>[sqlite]PythonからSQLite3への日付型変数の登録</title>
	<link>http://chick.g.hatena.ne.jp/allegro/20091128/p1</link>
	<description> PythonからSQLiteにデータを登録するに当たり，datetime.date型とdatetime.datetime型をISO日付形式,ISO タイムスタンプ形式に変換する適合関数がデフォルトで登録されている．それ以外の形式に,ある</description>

	<content:encoded><![CDATA[
		<div class="section">
			<p><a class="keyword" href="http://chick.g.hatena.ne.jp/keyword/Python">Python</a>からSQLiteにデータを登録するに当たり，datetime.date型とdatetime.datetime型をISO日付形式,ISO タイムスタンプ形式に変換する適合関数がデフォルトで登録されている．それ以外の形式に,あるいはそれ以外の型を適切な型に変換して登録したいときには適当な適合関数を書いて登録すればよい。</p>
			<ul>
				<li> <a href="http://www.python.jp/doc/2.5/lib/node350.html" target="_blank">13.13.4.4 デフォルトの適合関数と変換関数</a></li>
			</ul>
<pre class="syntax-highlight">
<span class="synPreProc">import</span> sqlite3
<span class="synPreProc">import</span> datetime, time
sqlite3.connect(&quot;<span class="synConstant">:memory:</span>&quot;)
cur = con.cursor()

cur.execute(&quot;<span class="synConstant">select ?</span>&quot;, (datetime.datetime.now(),))
<span class="synStatement">print</span>(cur.fetchone()[0])
</pre>

<pre>
2009-11-28 11:56:02.498758
</pre>
			<br>
			<br>
			<br>

			<p>sqlite3の日付処理関数については以前にまとめたけど再び。</p>
			<ul>
				<li> <a href="http://chick.g.hatena.ne.jp/allegro/20091106/p1" target="_blank">SQLite3の日付処理関数 - 雲雀は高く空を舞い - ひよこの会</a></li>
			</ul>
			<p>日付処理関数は<code>strftime</code>, <code>datetime</code>, <code>date</code>, <code>time</code>, <code>Julianday</code>があって、このうち <code>datetime</code>, <code>date</code>, <code>time</code>, <code>Julianday</code>はそれぞれ<code>strftime</code>の特別な場合。</p>			<br>

			<p>書式は<code>strftime(format, timestring, [modifier, ...])</code>，<code>datetime(timestring, [modifier, ...])</code>など。</p>			<br>

			<p>modifierに<code>utc</code>を指定した場合は，与えられたtimestringをローカルタイムゾーンでの日時として解釈しUTCの日時に変換して表示する．ローカルタイムゾーンがJSTの場合はtimestringから9時間引かれた時間が返る．</p>			<br>

			<p>逆に<code>localtime</code>を指定した場合は与えられたtimestringをUTCでの日時として解釈しローカルタイムゾーンの日時に変換して表示する。ローカルタイムゾーンがJSTの場合はtimestringに9時間たされた時間が返る．</p>			<br>
			<br>
			<br>

<pre class="syntax-highlight">
cur.execute(&quot;<span class="synConstant">select date(?)</span>&quot;, (datetime.datetime.now(),))
<span class="synStatement">print</span>(cur.fetchone()[0])

2009-11-28
</pre>

<pre class="syntax-highlight">
cur.execute(&quot;<span class="synConstant">select time(?)</span>&quot;, (datetime.datetime.now(),))
<span class="synStatement">print</span>(cur.fetchone()[0])

11:59:48
</pre>

<pre class="syntax-highlight">
cur.execute(&quot;<span class="synConstant">select datetime(?)</span>&quot;, (datetime.datetime.now(),))
<span class="synStatement">print</span>(cur.fetchone()[0])

2009-11-28 11:59:48
</pre>

<pre class="syntax-highlight">
cur.execute(&quot;<span class="synConstant">select datetime(?, 'utc')</span>&quot;, (datetime.datetime.now(),))
<span class="synStatement">print</span>(cur.fetchone()[0])

2009-11-28 02:59:29
</pre>

<pre class="syntax-highlight">
cur.execute(&quot;<span class="synConstant">select datetime(?, 'localtime')</span>&quot;, (datetime.datetime.now(),))
<span class="synStatement">print</span>(cur.fetchone()[0])

2009-11-28 20:59:11
</pre>

		</div>
]]></content:encoded>

	<dc:creator>allegro</dc:creator>
	<dc:date>2009-11-28</dc:date>
	<dc:subject>sqlite</dc:subject>
</item>
</rdf:RDF>

