[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[ノート/テキストマイニング]]~
訪問者数 &counter(); 最終更新 &lastmod();~
**Twitter APIから得たツイートを形態素解析する --- 2012/03/01 [#n7875ede]
形態素解析プログラムの候補はいろいろあるが、ChasenとMeCabを試してみよう
***Chasenでの解析例 [#b81288d6]
# -*- coding: utf-8 -*-
import sys
import codecs
import re
import pycha
import twitter
#
def hasKanji(s):
#Returns True if string s contains a Kanji, False if not.
kanji = False
for c in s:
if (((ord(c)&0xff00) == 0x3000) or (0x4e00 <= ((ord(c)&0xff00) <=0x9f00))):
kanji = True
break
return kanji
#
r = re.compile(r'([^-]+)-*')
api = twitter.Api()
timeline = api.GetPublicTimeline()
words = []
for s in timeline:
t = s.text
if hasKanji(t):
print "Source> ", t
out = pycha.pycha(t)
sonota1 = ''
sonota2 = ''
for go in out:
gokan = go[0]
if len(go)>=2:
yomi = go[1]
if len(go)>=3:
実行結果は、
Source> 《殺戮の羅刹デス・クルーザー》 奴に仲間は居ない。それ故に一般的には同士討ちなどの躊躇いが生じる時でも遠慮せずに戦える。
惑わされる物がない、それこそ理想的な最強の証であろう。最凶と呼ばれた覚醒者も所詮仲間に頼る存在でしかないのだ。
gokan: 《 yomi: 《 hinshi: 記号
gokan: 殺戮 yomi: サツリク hinshi: 名詞
gokan: の yomi: ノ hinshi: 助詞
gokan: 羅刹 yomi: ラセツ hinshi: 名詞
gokan: デ yomi: デ hinshi: 助詞
gokan: ス yomi: ス hinshi: 動詞
gokan: ・ yomi: ・ hinshi: 記号
gokan: クルーザー yomi: クルーザー hinshi: 名詞
gokan: 》 yomi: 》 hinshi: 記号
gokan: yomi: hinshi: 記号
gokan: 奴 yomi: ヤツ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: 仲間 yomi: ナカマ hinshi: 名詞
gokan: は yomi: ハ hinshi: 助詞
gokan: 居 yomi: イ hinshi: 動詞
gokan: ない yomi: ナイ hinshi: 助動隧
gokan: 。 yomi: 。 hinshi: 記号
gokan: それ yomi: ソレ hinshi: 名詞
gokan: 故 yomi: ユエ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: 一般 yomi: イッパン hinshi: 名詞
gokan: 的 yomi: テキ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: は yomi: ハ hinshi: 助詞
gokan: 同士 yomi: ドウシ hinshi: 名詞
gokan: 討ち yomi: ウチ hinshi: 動詞
gokan: など yomi: ナド hinshi: 助詞
gokan: の yomi: ノ hinshi: 助詞
gokan: 躊躇い yomi: タメライ hinshi: 動詞
gokan: が yomi: ガ hinshi: 助詞
gokan: 生じる yomi: ショウジル hinshi: 動詞
gokan: 時 yomi: トキ hinshi: 名詞
gokan: でも yomi: デモ hinshi: 助詞
gokan: 遠慮 yomi: エンリョ hinshi: 名詞
gokan: せ yomi: セ hinshi: 動詞
gokan: ず yomi: ズ hinshi: 助動隧
gokan: に yomi: ニ hinshi: 助詞
gokan: 戦える yomi: タタカエル hinshi: 動詞
gokan: 。 yomi: 。 hinshi: 記号
gokan: 惑わさ yomi: マドワサ hinshi: 動詞
gokan: れる yomi: レル hinshi: 動詞
gokan: 物 yomi: モノ hinshi: 名詞
gokan: が yomi: ガ hinshi: 助詞
gokan: ない yomi: ナイ hinshi: 形容詞
gokan: 、 yomi: 、 hinshi: 記号
gokan: それ yomi: ソレ hinshi: 名詞
gokan: こそ yomi: コソ hinshi: 助詞
gokan: 理想 yomi: リソウ hinshi: 名詞
gokan: 的 yomi: テキ hinshi: 名詞
gokan: な yomi: ナ hinshi: 助動隧
gokan: 最強 yomi: サイキョウ hinshi: 名詞
gokan: の yomi: ノ hinshi: 助詞
gokan: 証 yomi: アカシ hinshi: 名詞
gokan: で yomi: デ hinshi: 助動隧
gokan: あろ yomi: アロ hinshi: 助動隧
gokan: う yomi: ウ hinshi: 助動隧
gokan: 。 yomi: 。 hinshi: 記号
gokan: 最 yomi: サイ hinshi: 接頭詞
gokan: 凶 yomi: キョウ hinshi: 名詞
gokan: と yomi: ト hinshi: 助詞
gokan: 呼ば yomi: ヨバ hinshi: 動詞
gokan: れ yomi: レ hinshi: 動詞
gokan: た yomi: タ hinshi: 助動隧
gokan: 覚醒 yomi: カクセイ hinshi: 名詞
gokan: 者 yomi: シャ hinshi: 名詞
gokan: も yomi: モ hinshi: 助詞
gokan: 所詮 yomi: ショセン hinshi: 副詞
gokan: 仲間 yomi: ナカマ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: 頼る yomi: タヨル hinshi: 動詞
gokan: 存在 yomi: ソンザイ hinshi: 名詞
gokan: で yomi: デ hinshi: 助動隧
gokan: しか yomi: シカ hinshi: 助詞
gokan: ない yomi: ナイ hinshi: 助動隧
gokan: の yomi: ノ hinshi: 名詞
gokan: だ yomi: ダ hinshi: 助動隧
gokan: 。 yomi: 。 hinshi: 記号
gokan: EOS yomi: 。 hinshi: 記号
それ
それ
の
クルーザー
一般
仲間
仲間
凶
同士
奴
存在
故
時
最強
殺戮
物
理想
的
的
羅刹
者
覚醒
証
遠慮
***MeCabでの解析例(1) Chasenと同じ形の出力をすると [#dbfdaea7]
# -*- coding: utf-8 -*-
import sys
import codecs
import re
import MeCab
import twitter
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
def hasKanji(s):
#Returns True if string s contains a Kanji, False if not.
kanji = False
for c in s:
if (((ord(c)&0xff00) == 0x3000) or (0x4e00 <= ((ord(c)&0xff00) <=0x9f00))):
kanji = True
break
return kanji
#
api = twitter.Api()
timeline = api.GetPublicTimeline()
for s in timeline:
t = s.text
if hasKanji(t):
print "Source> ", t
m = MeCab.Tagger('-Ochasen')
print m.parse(t.encode('utf_8')) <<< MeCabパッケージはUTF_8のstr型しか受付けないのでencodeしてから食わせる
出力結果は
Source> 晴れて良かったね。卒業式に雪とか私そうだったわ
晴れ ハレ 晴れる 動詞-自立 一段 連用形
て テ て 助詞-接続助詞
良かっ ヨカッ 良い 形容詞-非自立 形容詞・アウオ段 連用タ接続
た タ た 助動詞 特殊・タ 基本形
ね ネ ね 助詞-終助詞
。 。 。 記号-句点
卒業 ソツギョウ 卒業 名詞-サ変接続
式 シキ 式 名詞-接尾-一般
に ニ に 助詞-格助詞-一般
雪 ユキ 雪 名詞-一般
とか トカ とか 助詞-並立助詞
私 ワタシ 私 名詞-代名詞-一般
そう ソウ そう 名詞-接尾-助動詞語幹
だっ ダッ だ 助動詞 特殊・ダ 連用タ接続
た タ た 助動詞 特殊・タ 基本形
わ ワ わ 助詞-終助詞
EOS
***MeCab?での解析例(2) ノードを取り出す [#r19f8ac0]
MeCabパッケージでは、解析ノードをノードの形で取り出すことができる。
# -*- coding: utf-8 -*-
import sys
import codecs
import MeCab
import twitter
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
def hasKanji(s):
#Returns True if string s contains a Kanji, False if not.
kanji = False
for c in s:
if (((ord(c)&0xff00) == 0x3000) or (0x4e00 <= ((ord(c)&0xff00) <=0x9f00))):
kanji = True
break
return kanji
api = twitter.Api()
timeline = api.GetPublicTimeline()
for s in timeline:
t = s.text
if hasKanji(t):
print "Source> ", t
# Chasenと同じ形式
mt = MeCab.Tagger('-Ochasen')
print mt.parse(t.encode('utf_8'))
# ノードに整理
mt = MeCab.Tagger()
m = mt.parseToNode(t.encode('utf_8'))
while m:
print m.surface, "\t", m.feature
m = m.next
print "EOS"
出力は
Source> iPad3買う理由がまた1つ出来たw
iPad iPad iPad 名詞-一般
3 3 3 名詞-数
買う カウ 買う 動詞-自立 五段・ワ行促音便 基本形
理由 リユウ 理由 名詞-一般
が ガ が 助詞-格助詞-一般
また マタ また 接続詞
1 1 1 名詞-数
つ ツ つ 助動詞 下二・タ行 基本形
出来 デキ 出来る 動詞-自立 一段 連用形
た タ た 助動詞 特殊・タ 基本形
w w w 名詞-固有名詞-組織
EOS
BOS/EOS,*,*,*,*,*,*,*,*
iPad 名詞,一般,*,*,*,*,*
3 名詞,数,*,*,*,*,*
買う 動詞,自立,*,*,五段・ワ行促音便,基本形,買う,カウ,カウ
理由 名詞,一般,*,*,*,*,理由,リユウ,リユー
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
また 接続詞,*,*,*,*,*,また,マタ,マタ
1 名詞,数,*,*,*,*,*
つ 助動詞,*,*,*,下二・タ行,基本形,つ,ツ,ツ
出来 動詞,自立,*,*,一段,連用形,出来る,デキ,デキ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
w 名詞,固有名詞,組織,*,*,*,*
BOS/EOS,*,*,*,*,*,*,*,*
EOS
TwitterのStreamインタフェースで、連続してツイートをアクセスしてみたい。(そうでないと、アクセス制限があって、連続して見ることができない)~
Streamインターフェースについて調べてみると、Pythonからは、裸で使う(自分でリクエストを組み立てて出す)か、ライブラリとしてはTweeetyが便利そうである。
次は、Tweetyを使ってStreamアクセスをしてみる ⇒ [[ノート/テキストマイニング/twitter-tweepy1]]
終了行:
[[ノート/テキストマイニング]]~
訪問者数 &counter(); 最終更新 &lastmod();~
**Twitter APIから得たツイートを形態素解析する --- 2012/03/01 [#n7875ede]
形態素解析プログラムの候補はいろいろあるが、ChasenとMeCabを試してみよう
***Chasenでの解析例 [#b81288d6]
# -*- coding: utf-8 -*-
import sys
import codecs
import re
import pycha
import twitter
#
def hasKanji(s):
#Returns True if string s contains a Kanji, False if not.
kanji = False
for c in s:
if (((ord(c)&0xff00) == 0x3000) or (0x4e00 <= ((ord(c)&0xff00) <=0x9f00))):
kanji = True
break
return kanji
#
r = re.compile(r'([^-]+)-*')
api = twitter.Api()
timeline = api.GetPublicTimeline()
words = []
for s in timeline:
t = s.text
if hasKanji(t):
print "Source> ", t
out = pycha.pycha(t)
sonota1 = ''
sonota2 = ''
for go in out:
gokan = go[0]
if len(go)>=2:
yomi = go[1]
if len(go)>=3:
実行結果は、
Source> 《殺戮の羅刹デス・クルーザー》 奴に仲間は居ない。それ故に一般的には同士討ちなどの躊躇いが生じる時でも遠慮せずに戦える。
惑わされる物がない、それこそ理想的な最強の証であろう。最凶と呼ばれた覚醒者も所詮仲間に頼る存在でしかないのだ。
gokan: 《 yomi: 《 hinshi: 記号
gokan: 殺戮 yomi: サツリク hinshi: 名詞
gokan: の yomi: ノ hinshi: 助詞
gokan: 羅刹 yomi: ラセツ hinshi: 名詞
gokan: デ yomi: デ hinshi: 助詞
gokan: ス yomi: ス hinshi: 動詞
gokan: ・ yomi: ・ hinshi: 記号
gokan: クルーザー yomi: クルーザー hinshi: 名詞
gokan: 》 yomi: 》 hinshi: 記号
gokan: yomi: hinshi: 記号
gokan: 奴 yomi: ヤツ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: 仲間 yomi: ナカマ hinshi: 名詞
gokan: は yomi: ハ hinshi: 助詞
gokan: 居 yomi: イ hinshi: 動詞
gokan: ない yomi: ナイ hinshi: 助動隧
gokan: 。 yomi: 。 hinshi: 記号
gokan: それ yomi: ソレ hinshi: 名詞
gokan: 故 yomi: ユエ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: 一般 yomi: イッパン hinshi: 名詞
gokan: 的 yomi: テキ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: は yomi: ハ hinshi: 助詞
gokan: 同士 yomi: ドウシ hinshi: 名詞
gokan: 討ち yomi: ウチ hinshi: 動詞
gokan: など yomi: ナド hinshi: 助詞
gokan: の yomi: ノ hinshi: 助詞
gokan: 躊躇い yomi: タメライ hinshi: 動詞
gokan: が yomi: ガ hinshi: 助詞
gokan: 生じる yomi: ショウジル hinshi: 動詞
gokan: 時 yomi: トキ hinshi: 名詞
gokan: でも yomi: デモ hinshi: 助詞
gokan: 遠慮 yomi: エンリョ hinshi: 名詞
gokan: せ yomi: セ hinshi: 動詞
gokan: ず yomi: ズ hinshi: 助動隧
gokan: に yomi: ニ hinshi: 助詞
gokan: 戦える yomi: タタカエル hinshi: 動詞
gokan: 。 yomi: 。 hinshi: 記号
gokan: 惑わさ yomi: マドワサ hinshi: 動詞
gokan: れる yomi: レル hinshi: 動詞
gokan: 物 yomi: モノ hinshi: 名詞
gokan: が yomi: ガ hinshi: 助詞
gokan: ない yomi: ナイ hinshi: 形容詞
gokan: 、 yomi: 、 hinshi: 記号
gokan: それ yomi: ソレ hinshi: 名詞
gokan: こそ yomi: コソ hinshi: 助詞
gokan: 理想 yomi: リソウ hinshi: 名詞
gokan: 的 yomi: テキ hinshi: 名詞
gokan: な yomi: ナ hinshi: 助動隧
gokan: 最強 yomi: サイキョウ hinshi: 名詞
gokan: の yomi: ノ hinshi: 助詞
gokan: 証 yomi: アカシ hinshi: 名詞
gokan: で yomi: デ hinshi: 助動隧
gokan: あろ yomi: アロ hinshi: 助動隧
gokan: う yomi: ウ hinshi: 助動隧
gokan: 。 yomi: 。 hinshi: 記号
gokan: 最 yomi: サイ hinshi: 接頭詞
gokan: 凶 yomi: キョウ hinshi: 名詞
gokan: と yomi: ト hinshi: 助詞
gokan: 呼ば yomi: ヨバ hinshi: 動詞
gokan: れ yomi: レ hinshi: 動詞
gokan: た yomi: タ hinshi: 助動隧
gokan: 覚醒 yomi: カクセイ hinshi: 名詞
gokan: 者 yomi: シャ hinshi: 名詞
gokan: も yomi: モ hinshi: 助詞
gokan: 所詮 yomi: ショセン hinshi: 副詞
gokan: 仲間 yomi: ナカマ hinshi: 名詞
gokan: に yomi: ニ hinshi: 助詞
gokan: 頼る yomi: タヨル hinshi: 動詞
gokan: 存在 yomi: ソンザイ hinshi: 名詞
gokan: で yomi: デ hinshi: 助動隧
gokan: しか yomi: シカ hinshi: 助詞
gokan: ない yomi: ナイ hinshi: 助動隧
gokan: の yomi: ノ hinshi: 名詞
gokan: だ yomi: ダ hinshi: 助動隧
gokan: 。 yomi: 。 hinshi: 記号
gokan: EOS yomi: 。 hinshi: 記号
それ
それ
の
クルーザー
一般
仲間
仲間
凶
同士
奴
存在
故
時
最強
殺戮
物
理想
的
的
羅刹
者
覚醒
証
遠慮
***MeCabでの解析例(1) Chasenと同じ形の出力をすると [#dbfdaea7]
# -*- coding: utf-8 -*-
import sys
import codecs
import re
import MeCab
import twitter
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
def hasKanji(s):
#Returns True if string s contains a Kanji, False if not.
kanji = False
for c in s:
if (((ord(c)&0xff00) == 0x3000) or (0x4e00 <= ((ord(c)&0xff00) <=0x9f00))):
kanji = True
break
return kanji
#
api = twitter.Api()
timeline = api.GetPublicTimeline()
for s in timeline:
t = s.text
if hasKanji(t):
print "Source> ", t
m = MeCab.Tagger('-Ochasen')
print m.parse(t.encode('utf_8')) <<< MeCabパッケージはUTF_8のstr型しか受付けないのでencodeしてから食わせる
出力結果は
Source> 晴れて良かったね。卒業式に雪とか私そうだったわ
晴れ ハレ 晴れる 動詞-自立 一段 連用形
て テ て 助詞-接続助詞
良かっ ヨカッ 良い 形容詞-非自立 形容詞・アウオ段 連用タ接続
た タ た 助動詞 特殊・タ 基本形
ね ネ ね 助詞-終助詞
。 。 。 記号-句点
卒業 ソツギョウ 卒業 名詞-サ変接続
式 シキ 式 名詞-接尾-一般
に ニ に 助詞-格助詞-一般
雪 ユキ 雪 名詞-一般
とか トカ とか 助詞-並立助詞
私 ワタシ 私 名詞-代名詞-一般
そう ソウ そう 名詞-接尾-助動詞語幹
だっ ダッ だ 助動詞 特殊・ダ 連用タ接続
た タ た 助動詞 特殊・タ 基本形
わ ワ わ 助詞-終助詞
EOS
***MeCab?での解析例(2) ノードを取り出す [#r19f8ac0]
MeCabパッケージでは、解析ノードをノードの形で取り出すことができる。
# -*- coding: utf-8 -*-
import sys
import codecs
import MeCab
import twitter
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
def hasKanji(s):
#Returns True if string s contains a Kanji, False if not.
kanji = False
for c in s:
if (((ord(c)&0xff00) == 0x3000) or (0x4e00 <= ((ord(c)&0xff00) <=0x9f00))):
kanji = True
break
return kanji
api = twitter.Api()
timeline = api.GetPublicTimeline()
for s in timeline:
t = s.text
if hasKanji(t):
print "Source> ", t
# Chasenと同じ形式
mt = MeCab.Tagger('-Ochasen')
print mt.parse(t.encode('utf_8'))
# ノードに整理
mt = MeCab.Tagger()
m = mt.parseToNode(t.encode('utf_8'))
while m:
print m.surface, "\t", m.feature
m = m.next
print "EOS"
出力は
Source> iPad3買う理由がまた1つ出来たw
iPad iPad iPad 名詞-一般
3 3 3 名詞-数
買う カウ 買う 動詞-自立 五段・ワ行促音便 基本形
理由 リユウ 理由 名詞-一般
が ガ が 助詞-格助詞-一般
また マタ また 接続詞
1 1 1 名詞-数
つ ツ つ 助動詞 下二・タ行 基本形
出来 デキ 出来る 動詞-自立 一段 連用形
た タ た 助動詞 特殊・タ 基本形
w w w 名詞-固有名詞-組織
EOS
BOS/EOS,*,*,*,*,*,*,*,*
iPad 名詞,一般,*,*,*,*,*
3 名詞,数,*,*,*,*,*
買う 動詞,自立,*,*,五段・ワ行促音便,基本形,買う,カウ,カウ
理由 名詞,一般,*,*,*,*,理由,リユウ,リユー
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
また 接続詞,*,*,*,*,*,また,マタ,マタ
1 名詞,数,*,*,*,*,*
つ 助動詞,*,*,*,下二・タ行,基本形,つ,ツ,ツ
出来 動詞,自立,*,*,一段,連用形,出来る,デキ,デキ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
w 名詞,固有名詞,組織,*,*,*,*
BOS/EOS,*,*,*,*,*,*,*,*
EOS
TwitterのStreamインタフェースで、連続してツイートをアクセスしてみたい。(そうでないと、アクセス制限があって、連続して見ることができない)~
Streamインターフェースについて調べてみると、Pythonからは、裸で使う(自分でリクエストを組み立てて出す)か、ライブラリとしてはTweeetyが便利そうである。
次は、Tweetyを使ってStreamアクセスをしてみる ⇒ [[ノート/テキストマイニング/twitter-tweepy1]]
ページ名: