Subscribed unsubscribe Subscribe Subscribe

Pythonから全裸で形態素解析をする

Python

PythonからYahoo日本語係り受け解析で形態素解析をする - すぎゃーんメモの続き。
とりあえず動詞の直前に「全裸で」を挿入するようにしてみた。

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

from xml.etree import ElementTree
import sys
import urllib

appid    = '***************(登録したアプリケーションID)'
if len(sys.argv) < 2:
    sys.exit()
sentence = sys.argv[1]
postdata = {
    'appid'    : appid,
    'sentence' : sentence,
    }
params = urllib.urlencode(postdata)

# Yahoo!日本語係り受け解析へ
url    = 'http://jlp.yahooapis.jp/DAService/V1/parse'
result = urllib.urlopen(url, params)


morpheme_list = []
# DOM解析 形態素と品詞だけを抽出
tree = ElementTree.XML(result.read())
chunk_list = tree.find('{urn:yahoo:jp:jlp:DAService}Result').find('{urn:yahoo:jp:jlp:DAService}ChunkList')
for chunk in chunk_list.findall('{urn:yahoo:jp:jlp:DAService}Chunk'):
    for morphem in chunk.find('{urn:yahoo:jp:jlp:DAService}MorphemList'):
        morpheme_list.append({
                'Surface' : morphem.find('{urn:yahoo:jp:jlp:DAService}Surface').text.encode('utf-8'),
                'POS'     : morphem.find('{urn:yahoo:jp:jlp:DAService}POS').text.encode('utf-8'),
                })

# 末尾から見ていって、動詞を検出したら「全裸で」を挿入
for morpheme in reversed(morpheme_list):
    if morpheme['POS'] == u'動詞'.encode('utf-8'):
        morpheme_list.insert(morpheme_list.index(morpheme), {
                'Surface' : u'全裸で'.encode('utf-8'),
                'POS'     : '',
                })

print ''.join(morpheme['Surface'] for morpheme in morpheme_list)
$ ./zenra.py "お前は今まで食べたパンの枚数を覚えているのか?"
お前は今まで全裸で食べたパンの枚数を全裸で覚えているのか?

うん、まぁ上出来かな。
これならPython環境とYahoo!デベロッパーネットワークのアプリケーションIDさえあれば誰でも全裸になれる…はず!