ラベル python の投稿を表示しています。 すべての投稿を表示
ラベル python の投稿を表示しています。 すべての投稿を表示

2011-04-12

Text Analyzer



AIの課題を解く際に出来た副作用的な作品。とりあえず公開。もしかしたらiPhoneアプリでも使えるやもしれない。

GitHub - yasulab/Text-Analyzer


/Users/yohei/text-analyzer% python text-analyzer.py
Text Analyzer
-------------
Commands:
rand NUMBER   : Randomly pick a word given times.
read FILENAME : Read a given file.
stats         : Show stats of recently read text.
help          : Show this.
exit          : Exit.

Current Text:  alice.txt

[alice.txt]> stats
Number of words: 27421

TOP 10 - MOST FRQUENTLY USED WORDS
COUNT | WORD | PROB [%]
1636 | the | 5.97
870 | and | 3.17
729 | to | 2.66
627 | a | 2.29
595 | it | 2.17
553 | she | 2.02
544 | i | 1.98
515 | of | 1.88
462 | said | 1.68
411 | you | 1.50

[alice.txt]> stata
Unknown command: stata
[alice.txt]> rands 10
Unknown command: rands
[alice.txt]> rand 10
Number of words: 27421

TOP 10 - MOST FRQUENTLY USED WORDS
COUNT | WORD | PROB [%]
1 | with | 10.00
1 | while | 10.00
1 | trotting | 10.00
1 | to | 10.00
1 | the | 10.00
1 | she | 10.00
1 | replied | 10.00
1 | isn | 10.00
1 | heard | 10.00
1 | after | 10.00

[alice.txt]> rand 2
Number of words: 27421

TOP 10 - MOST FRQUENTLY USED WORDS
COUNT | WORD | PROB [%]
1 | looked | 50.00
1 | come | 50.00

[alice.txt]> rand 100
Number of words: 27421

TOP 10 - MOST FRQUENTLY USED WORDS
COUNT | WORD | PROB [%]
9 | the | 9.00
5 | to | 5.00
4 | and | 4.00
2 | you | 2.00
2 | thought | 2.00
2 | s | 2.00
2 | must | 2.00
2 | as | 2.00
2 | all | 2.00
2 | alice | 2.00

[alice.txt]> read vicar.txt
[vicar.txt]> stats
Number of words: 64244

TOP 10 - MOST FRQUENTLY USED WORDS
COUNT | WORD | PROB [%]
2890 | the | 4.50
2093 | to | 3.26
1796 | and | 2.80
1659 | of | 2.58
1581 | i | 2.46
1317 | a | 2.05
1219 | my | 1.90
948 | in | 1.48
930 | that | 1.45
873 | was | 1.36

[vicar.txt]> help
Commands:
rand NUMBER   : Randomly pick a word given times.
read FILENAME : Read a given file.
stats         : Show stats of recently read text.
help          : Show this.
exit          : Exit.

[vicar.txt]> rand 100
Number of words: 64244

TOP 10 - MOST FRQUENTLY USED WORDS
COUNT | WORD | PROB [%]
5 | and | 5.00
3 | for | 3.00
3 | be | 3.00
2 | went | 2.00
2 | we | 2.00
2 | to | 2.00
2 | time | 2.00
2 | the | 2.00
2 | my | 2.00
2 | is | 2.00

[vicar.txt]> stats
Number of words: 64244

TOP 10 - MOST FRQUENTLY USED WORDS
COUNT | WORD | PROB [%]
2890 | the | 4.50
2093 | to | 3.26
1796 | and | 2.80
1659 | of | 2.58
1581 | i | 2.46
1317 | a | 2.05
1219 | my | 1.90
948 | in | 1.48
930 | that | 1.45
873 | was | 1.36

[vicar.txt]> help
Commands:
rand NUMBER   : Randomly pick a word given times.
read FILENAME : Read a given file.
stats         : Show stats of recently read text.
help          : Show this.
exit          : Exit.

[vicar.txt]> exit

2011-04-10

Simple Tag Getter with lxml




所用で英文テキストが欲しかったので、lxmlで英文テキストを取ってくるスクリプトを作成。汎用性はまったく無いけど、とりあえず公開。

#!/usr/bin/env python
#! -*- coding: utf-8 -*-

import sys
import urllib2
import lxml.html
        
def get_texts(url, tag):
    try:
        html = urllib2.urlopen(url).read()
    except urllib2.HTTPError, e:
        # If returned 404
        #print e.read()
        print "Can't access to the given URL."
        return
        
    root = lxml.html.fromstring(html)
    anchors = root.xpath(tag)

    text_list = []
    for a in anchors:
        text = lxml.html.tostring(a, method='text', encoding='utf-8')
        #print text.strip('\t\n')
        text_list.append(text.strip('\t\n'))
    if not text_list:
        text = "There are no tags in this page"
        text_list.append(text)
    return text_list

def create_xpath(tag, attr):
    xpath = "//"
    xpath += tag
    if not attr == "":
        xpath += "[@"
        attr,value = attr.split("=")
        xpath += attr
        xpath += "=\"" + value + "\"]"
    print "Created Xpath: " + xpath
    return xpath

if __name__ == "__main__":
    argv_len = len(sys.argv)
    if not (argv_len == 3 or argv_len == 4):
        print "Usage: python tag-getter.py URL TAG [ATTR]"
        exit()
    
    url = sys.argv[1].lower()
    tag = sys.argv[2].lower()
    if argv_len == 4:
        attr = sys.argv[3].lower()
    else:
        attr = ""
    xpath = create_xpath(tag, attr)
    text_list = get_texts(url, xpath)
    for t in text_list:
        print t
    


Usage Example:

  $ python tag-getter.py http://ebooks.adelaide.edu.au/c/carroll/lewis/alice/chapter1.html div class=dochead

Created Xpath: //div[@class="dochead"]
Alice in Wonderland, by Lewis Carroll

  $ python tag-getter.py http://ebooks.adelaide.edu.au/c/carroll/lewis/alice/chapter1.html p

Created Xpath: //p
Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice
she had peeped into the book her sister was reading, but it had no pictures or conversations in it, ‘and what is the use of
a book,’ thought Alice ‘without pictures or conversation?’

... 後略 ...

2011-03-19

User Review Getter from Android Market



Android Marketの中の、指定されたAppのユーザレビューを取り出すプログラムを書きました。いずれRSSが登録出来るようになる(もしくは既にあるけど知らないだけ?)でしょうが、待てなかったので自分で作りました。

Usage:

     $ python user-review-getter.py PACKAGE_NAME

Ex:

     $ python user-review-getter.py org.sorarier.whistle

Result:

非常に素晴らしいアプリだと思います。 そして迅速な改善に頭が下がります。 製作者樣、ありがとうございます。by あっきー–2011/03/19
こまめな更新に、感謝感激by Gaz–2011/03/19
音量自動最大はいいんですが、元々の音量設定に戻りません。 これだと困ります。改善おねがいします。 Xperia 2.1by 陸–2011/03/19
強制終了問題解決!対応の早さに感謝!by 環境IS04–2011/03/18
ちゃんと意見を汲み上げ判断したのち反映する誠実さと、その迅速な行動力に感服しました…。 災害時のみならず、防犯上でも役に立つ。 ...by aki–2011/03/18ちゃんと意見を汲み上げ判断したのち反映する誠実さと、その迅速な行動力に感服しました…。 災害時のみならず、防犯上でも役に立つ。 できうるなら、音声(例えば自分で録音しておいたものとか)の方がより分かりやすいのだろうが。
速やかな改良、対応に頭が下がります。by Gen–2011/03/17
使用時に端末の音量設定を最大まで上げるようには出来ないのですか?by まーさん–2011/03/16
音が小さいby 沙弥香–2011/03/15
音が小さいよねby 綾子–2011/03/15
シンプルで良いと思うけど、もっと音が大きくないと…by 五月女–2011/03/14
Works on droidx. No permissions needed.by Leonard–March 13, 2011

Requirements:
- lxml

Source Code:
https://github.com/yasulab/user-review-getter-for-android-market


User Review Getterは、ただ英語と日本語のユーザレビューを取り出すだけなので、単品ではあんまり役に立たないと思いますが、他の物と組み合わせると便利になると思います。僕の場合は、User Review Getterとdiff、smtp、cronを組み合わせて、最新のユーザレビューを見つけたらメールで知らせてくれる、Notifierみたいな感じに仕上げました。もしかしたら他にも使い道があるかもしれません。

とにかく、これでいちいちAndroid Marketでユーザレビュー確認する必要が無くなり、少し効率的な生活が送れるようになりました。あとはAndroid MarketのRSS対応を待つばかりです。

追記:
User Review Notifierを作りました。