あたまがうにになる

2007年12月13日

Yahoo!のAPIを利用してマルコフ連鎖で文章生成(php)

形態素解析→マルコフ連鎖で文章生成のサンプル2007です。
前に書いたやつはchasenを使ってましたが、今回はYahoo!のAPIの 日本語形態素解析Webサービスを利用するサンプルコードです。

幅広い環境で使えるようにPEARのライブラリとかバージョン依存する関数とか使ってません(多分)
あと、応用しやすいように冗長に書いてる部分とか、Errorチェックが抜けてる部分がありますが気にしないで下さいw
  実行結果が見れるサンプルもおいときますね

blank_space
投稿者 Lanタソ : 2007年12月13日 19:58
 

はじめまして。
ありがたくサンプル2007を使用させていただいたのですが、xreaサーバーでは生成文章が文字化けします。
ファイルはEUCで保存しています。
解決策はございますか?

どうぞご教授お願い致します。

Posted by: PJ at 2008年03月05日 20:01
 

単純に文字コードを変更すれば大丈夫かと思いますが。


元文章をEUC-JPからUTF-8に変更(元々UTF-8ならこの処理は必要ない)
$text = mb_convert_encoding($text, "UTF-8", "EUC-JP");

XMLをパースして配列作る部分でUTF-8からEUC-JPに。
$words[] = mb_convert_encoding($surface, "EUC-JP", "UTF-8");;


もっと適当に対応するなら 出力したい文章を
$create_text = mb_convert_encoding($create_text, "EUC-JP", "auto");
とかでも大丈夫かとおもいますが。

Posted by: Lanタソ at 2008年03月10日 13:24
 

はじめまして。
このサンプルコード面白いですね。
新聞記事を3つほどシャッフルさせて、どんな文章が出来上がるか遊んでみました。

でも、元のテキストは同じなのに、出力される文章が短い時と長い時があるのはなぜなんでしょうか?
毎回、指定の長さ程度で終わらせることができましたら、その方法をお教えください。

それと、同じ単語(名詞)が何回も連続して出てくるときがあるのですが、それを防ぐ方法はありますか?


"4月末にある五つ星ホテル「パールコンチネンタルホテル「パールコンチネンタルホテル「パールコンチネンタルホテル「パールコンチネンタルホテル「パールコンチネンタルホテル「パールコンチネンタルホテル」で、52人が起こり、連邦最高裁は9日、同国のペレス大統領やネタニヤフ首相らと相次いで会談した自動車大手フィアットなどが起こり、52人が死亡した。 "


という具合になってしまう時があります。(長い文ですみません)

解決方法をご存知でしたら、お教えください。
よろしくお願いいたします。

Posted by: HS at 2009年06月10日 16:50
 

>出力される文章が短い時と長い時があるのはなぜなんでしょうか
>それを防ぐ方法はありますか?

ソース中のコメントの、無限ループ回避と乱数の部分を見れば一目瞭然かと思います。
使いたいのであれば、自分で工夫してカスタマイズするといいと思います。

こんなに簡潔で短いソースなら自分で解決した方がよろしいかと。

Posted by: 通りすがり at 2009年06月27日 23:09
 
blank_space
コメントする

名前を保存しますか?






blank_space
パーツ
blank_space

Adds

blank_space

カテゴリー
blank_space

Link
blank_space