Subscribed unsubscribe Subscribe Subscribe

PythonからYahoo日本語係り受け解析で形態素解析をする

Yahoo!デベロッパーネットワークでアプリケーションIDを登録。
日本語係り受け解析については以下を参考に。
テキスト解析:日本語係り受け解析 - Yahoo!デベロッパーネットワーク


http://python.blog-slime.com/2007/07/urllibpost.htmlを参考に書いてみた。

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

import urllib

appid    = '***************(登録したアプリケーションID)'
sentence = u'全裸は良くない'.encode('utf-8')
postdata = {
    'appid'    : appid,
    'sentence' : sentence,
    }
params = urllib.urlencode(postdata)

url    = 'http://jlp.yahooapis.jp/DAService/V1/parse'
result = urllib.urlopen(url, params)

print result.read()


実行すると、解析結果を見ることができる。

$ ./zenra.py 
<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:jlp:DAService" xsi:schemaLocation="urn:yahoo:jp:jlp:DAService http://jlp.yahooapis.jp/DAService/V1/parseResponse.xsd">
<Result>
<ChunkList>
<Chunk>
<Id>0</Id>
<Dependency>1</Dependency>
<MorphemList>
<Morphem>
<Surface>全裸</Surface><Reading>ぜんら</Reading><Baseform>全裸</Baseform><POS>名詞</POS><Feature>名詞,名詞,*,全裸,ぜんら,全裸</Feature>
</Morphem>
<Morphem>
<Surface>は</Surface><Reading>は</Reading><Baseform>は</Baseform><POS>助詞</POS><Feature>助詞,係助詞,*,は,は,は</Feature>
</Morphem>
</MorphemList>
</Chunk>
<Chunk>
<Id>1</Id>
<Dependency>-1</Dependency>
<MorphemList>
<Morphem>
<Surface>良く</Surface><Reading>よく</Reading><Baseform>良く</Baseform><POS>副詞</POS><Feature>副詞,副詞,*,良く,よく,良く</Feature>
</Morphem>
<Morphem>
<Surface>ない</Surface><Reading>な</Reading><Baseform>な</Baseform><POS>助動詞</POS><Feature>助動詞,助動詞ない,基本形,ない,な,な</Feature>
</Morphem>
</MorphemList>
</Chunk>
</ChunkList>
</Result>
</ResultSet>

追記

id:yuroyoroさんから参考になるソースを提供いただいた! ありがとうございます ><


とりあえずxml.etree.ElementTreeで自力でXMLをparseしてみた。

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

from xml.etree import ElementTree
import urllib

appid    = '***************(登録したアプリケーションID)'
sentence = u'全裸は良くない'.encode('utf-8')
postdata = {
    'appid'    : appid,
    'sentence' : sentence,
    }
params = urllib.urlencode(postdata)

url    = 'http://jlp.yahooapis.jp/DAService/V1/parse'
result = urllib.urlopen(url, params)

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'):
        print '%s\t%s\t%s' % (
            morphem.find('{urn:yahoo:jp:jlp:DAService}Surface').text.encode('utf-8'),
            morphem.find('{urn:yahoo:jp:jlp:DAService}POS').text.encode('utf-8'),
            morphem.find('{urn:yahoo:jp:jlp:DAService}Feature').text.encode('utf-8'),
            )
$ ./zenra.py 
全裸	名詞	名詞,名詞,*,全裸,ぜんら,全裸
は	助詞	助詞,係助詞,*,は,は,は
良く	副詞	副詞,副詞,*,良く,よく,良く
ない	助動詞	助動詞,助動詞ない,基本形,ない,な,な

ここまでできればzenra.plと同じ要領でzenrizeできそうな気がする!