2011年9月1日木曜日

igo-python 0.9をリリースしました

igo-python 0.9をリリースしました。
やっとPython3対応(確認は3.2のみ)をしました。同じコードでPython 2.5/2.6/2.7でも動きます。また、致命的なのですが、(オリジナルのJava版と比較して)正しい解析結果にならないことがあったのを修正しました。バグを探す課程で、igo-0.4.3ベースになりました。


python2/3両対応で変更した点

  • 整数の割り算を/から//に変更した(整数/整数がfloatになった。//は切り捨て)
  • unicodeまわり
  • strはunicodeになり、chrもunichr相当になった
  • unicode文字列リテラルが使えない(3から普通の文字列リテラルがunicode文字列リテラルになるので、u'文字列'ができなくなったという意味です。誤解を招く書き方でした)
  • file型がなくなったので継承できなくなった(io moduleは2.6からなので継承はあきらめた)
Python3対応に関係ないけど変えたもの
  • sys.byteorderの値を使ってendiannessを調べるようにした(Python3でstruct.packの戻り値の方がstrからbytesに変わった。なので各要素が整数値になった。ここら辺を調べていたら、そもそも標準でByte orderを示す値が用意されていた…)
  • データ型指定のフォーマット文字列で、nativeではくstandardなものを選択した(使っているのはint/shortだけなのであまり問題ないけど、LP64な環境だと多分ダメ)

解析結果がおかしい問題は、青空文庫から適当にもってきたファイルを解析してて気付きました。どちらもリポジトリに追加してあります。

青空文庫のxhmltをlxmlで一気にテキスト化するスクリプト
標準入力を形態素解析して、mecabのデフォルト形式で出力するスクリプト

これらをこんな感じでつないで使います。
curl http://www.aozora.gr.jp/cards/000148/files/789_14547.html | python2 aozora_html2txt.py | python parse.py 

0 件のコメント:

コメントを投稿