いろいろなテキスト処理に使えるTextBlob
軽く試してみた
# coding=utf-8 from text.blob import TextBlob text = u""" I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this is the closest I've ever gotten to a college graduation. Today I want to tell you three stories from my life. That's it. No big deal. Just three stories. """ blob = TextBlob(text) # wordのリスト print blob.words # => WordList([u'I', u'am', u'honored', u'to', u'be', u'with', u'you', u'today', u'at', u'your', u'commencement', u'from', u'one', u'of', u'the', u'finest', u'universities', u'in', u'the', u'world', u'I', u'never', u'graduated', u'from', u'college', u'Truth', u'be', u'told', u'this', u'is', u'the', u'closest', u'I', u've', u'ever', u'gotten', u'to', u'a', u'college', u'graduation', u'Today', u'I', u'want', u'to', u'tell', u'you', u'three', u'stories', u'from', u'my', u'life', u'That', u's', u'it', u'No', u'big', u'deal', u'Just', u'three', u'stories']) # sentenceのリスト print blob.sentences # => [Sentence('I am honored to be with you today at your commenc...sities in the world.'), Sentence('I never graduated from college.'), Sentence('Truth be told, this is the closest I've ever gotten to a college graduation.'), Sentence('Today I want to tell you three stories from my life.'), Sentence('That's it.'), Sentence('No big deal.'), Sentence('Just three stories.')] # 出現回数 print blob.words.count("three") # => 2 # 言語を検出 print blob.detect_language() # => en # 翻訳 translated = blob.translate(to="ja") print translated.raw # => 私は、世界でも有数の大学の一つからあなたの開始時、あなたと今日できることを光栄に思います。 # => 私は大学を卒業することはありません。 # => 真実を言えば、これは私が今までで大学卒業に近い経験ということになります。 # => 今日、私はあなたに私の人生から3話をお伝えしたいと思います。 # => それはそれだ。大したことはありません。わずか3話。 # htmlの除去 html = "<b>HAML</b> Ain't Markup <a href='/languages'>Language</a>" clean = TextBlob(html, clean_html=True) print clean # => HAML Ain't Markup Language
htmlタグを除去するのはどっかで使えるかもしれない。
翻訳は内部でGoogle Translate APIが使われている。
英語→日本語とかだと、どう考えても使い物にならない気がするけど、英語→スペイン語とかだと、それなりに実用的なんだろうか?
他にもいろいろあるみたいだけど試してない。
TextBlob: Simplified Text Processing ― TextBlob 0.5.0 documentation
ちなみにnltkのデータをダウンロードしないとMissingCorpusExceptionが発生する
text.exceptions.MissingCorpusException:
Looks like you are missing some required data for this feature.
To download the necessary data, simply run
curl https://raw.github.com/sloria/TextBlob/master/download_corpora.py | python
Or use the NLTK downloader to download the missing data: http://nltk.org/data.html
If this doesn't fix the problem, file an issue at https://github.com/sloria/TextBlob/issues.
データをダウンロードするスクリプトが用意されているので、実行すれば解決する
curl https://raw.github.com/sloria/TextBlob/master/download_corpora.py | python
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 441 100 441 0 0 212 0 0:00:02 0:00:02 --:--:-- 786
Downloading "brown"
[nltk_data] Downloading package 'brown' to /Users/yuhei/nltk_data...
[nltk_data] Unzipping corpora/brown.zip.
Downloading "punkt"
[nltk_data] Downloading package 'punkt' to /Users/yuhei/nltk_data...
[nltk_data] Unzipping tokenizers/punkt.zip.
Downloading "conll2000"
[nltk_data] Downloading package 'conll2000' to
[nltk_data] /Users/yuhei/nltk_data...
[nltk_data] Unzipping corpora/conll2000.zip.
Downloading "maxent_treebank_pos_tagger"
[nltk_data] Downloading package 'maxent_treebank_pos_tagger' to
[nltk_data] /Users/yuhei/nltk_data...
[nltk_data] Unzipping taggers/maxent_treebank_pos_tagger.zip.
Downloading "movie_reviews"
[nltk_data] Downloading package 'movie_reviews' to
[nltk_data] /Users/yuhei/nltk_data...
[nltk_data] Unzipping corpora/movie_reviews.zip.
Finished.