<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>超群.com的博客</title>
	<atom:link href="http://www.fuchaoqun.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fuchaoqun.com</link>
	<description></description>
	<lastBuildDate>Sat, 27 Feb 2010 17:39:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ColaPHP 0.6beta发布</title>
		<link>http://www.fuchaoqun.com/2010/02/colaphp-0-6-beta/</link>
		<comments>http://www.fuchaoqun.com/2010/02/colaphp-0-6-beta/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 17:39:33 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ColaPHP]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=330</guid>
		<description><![CDATA[ColaPHP月度发布计划版本，代号：Easy，和0.5beta相比变化不大，主要修改如下：

增加Yaml处理，底层调用symfony yaml包处理
 增加自定义异常类，后续准备将框架中的异常细分（好处是将来可以对异常做真对性处理）
 少量代码重构以及bug fix

下载ColaPHP 0.6beta，阅读ColaPHP文档，访问ColaPHP项目。
下一个版本0.7beta开发代号：Recode，主要对代码做进一步重构优化。
]]></description>
			<content:encoded><![CDATA[<p>ColaPHP月度发布计划版本，代号：Easy，和0.5beta相比变化不大，主要修改如下：</p>
<ul>
<li>增加Yaml处理，底层调用symfony yaml包处理</li>
<li> 增加自定义异常类，后续准备将框架中的异常细分（好处是将来可以对异常做真对性处理）</li>
<li> 少量代码重构以及bug fix</li>
</ul>
<p><a href="http://colaphp.googlecode.com/files/ColaPHP-0.6-beta.zip" target="_blank">下载ColaPHP 0.6beta</a>，阅读<a href="http://code.google.com/p/colaphp/w/list" target="_blank">ColaPHP文档</a>，访问<a href="http://code.google.com/p/colaphp/" target="_blank">ColaPHP项目</a>。</p>
<p>下一个版本0.7beta开发代号：Recode，主要对代码做进一步重构优化。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2010/02/colaphp-0-6-beta/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[视频]MongoDb In Action</title>
		<link>http://www.fuchaoqun.com/2010/02/mongodb-in-action-video/</link>
		<comments>http://www.fuchaoqun.com/2010/02/mongodb-in-action-video/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 11:09:26 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[mongodb]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=325</guid>
		<description><![CDATA[
上次OpenParty上分享MongoDb In Action的视频，Slides在这里，貌似偶有点结巴:)
]]></description>
			<content:encoded><![CDATA[<p><embed src="http://player.ku6.com/refer/1lgfJoJtkmReFR3q/v.swf" quality="high" width="414" height="305" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed></p>
<p>上次OpenParty上分享MongoDb In Action的视频，Slides在<a href="http://www.fuchaoqun.com/2010/01/mongodb-in-action/" target="_blank">这里</a>，貌似偶有点结巴:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2010/02/mongodb-in-action-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于关联规则的推荐系统</title>
		<link>http://www.fuchaoqun.com/2010/02/recommendation-system-on-association-rules/</link>
		<comments>http://www.fuchaoqun.com/2010/02/recommendation-system-on-association-rules/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 06:28:17 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[association rules]]></category>
		<category><![CDATA[recommendation system]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=305</guid>
		<description><![CDATA[首先，要了解关联规则的几个概念，定义N为总事务数，N(A)、N(B)分别为项集A、项集B出现的次数，N(AB)为项集A、项集B同时出现的次数，A、B为不相交项集A∩B=Ø，规则A→B表示由A推到B：
支持度（Support）：

支持度是一种重要度量，支持度低的规则很可能是偶然现象，对推荐意义不大，另外支持度是数据剪枝的一个重要依据。
置信度（Confidence）：

置信度，字面上的解释就是这个规则到底有多可信，对于给定的规则A→B，置信度越高，B出现在包含A的事务中的概率越高。
提升度（Lift）：

Support(A→B)其实就是AB的联合概率P(AB)，Support(A) 、 Support(B)分别为A、B的概率估计P(A)、P(B)，如果A、B相互独立，则P(AB) = P(A) × P(B)，所以只有 Lift &#62; 1 才表示A、B正相关，且越大越好。
为什么要引入提升度的概念呢？还是拿歌曲来做例子，比如歌曲A、歌曲C为小众歌曲，歌曲B为口水歌，共有10万个用户，有200个人听过歌曲A，这200个人里面有60个听过口水歌B，有40个人听过歌曲C，同时听过歌曲C的人数是300，听过口水歌B的人为50000，那么Confidence(A→B) = 0.3，Confidence(A→C) = 0.2，从置信度来看貌似A和B更相关，但是10W人里面有5W听过歌曲B，说明有一半的用户都喜欢歌曲B，但听过歌曲A的人里面只有30%的人喜欢歌曲B，很明显歌曲A和歌曲B负相关，计算Lift(A→B) = 0.6，小于1，负相关，Lift(A→C) = 100，远大于1，正相关。
当然，还有一些其他的度量因子，可自行参阅其他文档。
可以进入正题了，我们要实验的是一个文学类的网站数据，数据格式如下：
用户ID    图书ID
表示此用户阅读过该图书，我们首先要解决的问题是：喜欢图书A的用户还喜欢其他哪些图书？（图书之间的相关性）
推荐流程：

数据清理：对用户和图书分别计数，过滤掉一些超不活跃的用户和超冷门的图书
计算两两图书之间的支持度、置信度、提升度，根据最低支持度、最低置信度、最低提升度剪枝，把低于最小值的规则扔掉
对图书A进行推荐：找出图书A的所有规则，按照置信度降序排序，Top-N即为和图书A最相关的前N本图书

非常简单，关键的就是数据清理以及规则剪枝设置，这需要对业务熟悉一些，提升度的话，如果不确认，大于1即可。
结果示例：
古龙:剑毒梅香(中) →古龙:剑毒梅香(上)&#124;古龙:剑毒梅香(下)&#124;武林第一少年:血欲江湖&#124;笑傲江湖之风清扬别传&#124;草根续写:天龙八部续
古龙:剑毒梅香(下) →古龙:剑毒梅香(中)&#124;古龙:剑毒梅香(上)&#124;武林第一少年:血欲江湖&#124;笑傲江湖之风清扬别传&#124;恐怖宿舍惊魂夜:女生寝室&#124;倚天屠龙记之复兴明教&#124;至尊武神:六脉神剑闹武林&#124;草根续写:天龙八部续
温瑞安：四大名捕猿猴月 → 四大名捕会京师:逆水寒&#124;温瑞安：四大名捕铁布衫&#124;四大名捕震关东－亡命&#124;四大名捕破神枪:  惨绿&#124;四大名捕破神枪－妖红&#124;四大名捕震关东－追杀&#124;温瑞安：四大名捕谈亭会&#124;温瑞安：四大名捕开谢花&#124;温瑞安：四大名捕碎梦刀&#124;四大名捕走龙蛇&#124;温瑞安：四大名捕猛鬼庙&#124;温瑞安神州奇侠:人世间
异界玄奇：尸池 → 荒村血鬼洞房:剥皮新娘&#124;真实恐怖:鬼宅小区&#124;丫鬟不好当:王爷,请自重&#124;人鬼恋:我的老婆不是人&#124;灵异事件全曝光:诡异档案&#124;恐怖的盗墓历险:荒村古墓&#124;校园僵尸&#124;古墓惊魂夜:坟岭村笔记&#124;阴阳眼之鬼瞳:荒道门&#124;极度恐怖乱坟头:墓地惊叫&#124;盗墓传说&#124;不解迷:殡仪馆里的化妆师&#124;凶尸宿舍惊魂声:猛鬼校园&#124;惊声尖叫:太平间美丽女尸&#124;生化疯狂撕杀之丧尸异形&#124;僵尸当街:遇上美女天师&#124;生化异族的入侵:吸血传说&#124;凶宅女尸:学院惊魂夜&#124;棺木里的眼球:古井沉尸&#124;校园恐怖女生寝室3:诡铃
变成有钱人并不难:  理财YS → 快速发财:  怎样做无本生意&#124;创业指南:三十六计&#124;成功三宝:习惯、心态、人脉&#124;掌控自己命运:读孙子兵法&#124;改变你一生的30个招术&#124;帮你成高手:口才决定成败&#124;左右逢源的做人心机术&#124;穷人与富人的差别&#124;最快的致富秘诀:  赢在观念&#124;做个聪明的老板: 经商要会说话&#124;把话说得滴水不漏全集&#124;职场:1分钟读懂对方心理&#124;恋人浪漫短信&#124;李嘉诚的谋局与处世&#124;股票入门:股票认知大全&#124;男人了解女人,女人了解男人&#124;教你理财:理财高手&#124;心机&#8211;做人的一种智慧&#124;必修课:这样做女孩最命好&#124;女人的身体·女人的智慧
……
不再多举例子了，目测感觉大多比较靠谱。
Simpler could be better.
]]></description>
			<content:encoded><![CDATA[<p>首先，要了解<a href="http://en.wikipedia.org/wiki/Association_rule_learning" target="_blank">关联规则</a>的几个概念，定义<span style="color: #ff0000;">N</span>为总事务数，<span style="color: #ff0000;">N(A)</span>、<span style="color: #ff0000;">N(B)</span>分别为项集A、项集B出现的次数，<span style="color: #ff0000;">N(AB)</span>为项集A、项集B同时出现的次数，A、B为不相交项集A∩B=Ø，规则A→B表示由A推到B：</p>
<p><strong>支持度</strong>（Support）：</p>
<p style="padding-left: 30px;"><img class="alignnone" title="A、B同时出现的次数除以总事务数" src="http://www.fuchaoqun.com/wp-content/uploads/Support.png" alt="Support" width="203" height="38" /></p>
<p>支持度是一种重要度量，支持度低的规则很可能是偶然现象，对推荐意义不大，另外支持度是数据剪枝的一个重要依据。</p>
<p><strong>置信度</strong>（Confidence）：</p>
<p style="padding-left: 30px;"><img class="alignnone" title="A、B同时出现的次数除以A全部出现的次数" src="http://www.fuchaoqun.com/wp-content/uploads/Confidence.png" alt="Confidence" /></p>
<p>置信度，字面上的解释就是这个规则到底有多可信，对于给定的规则A→B，置信度越高，B出现在包含A的事务中的概率越高。</p>
<p><strong>提升度</strong>（Lift）：</p>
<p style="padding-left: 30px;"><img class="alignnone" title="A、B的支持度除以A的支持度和B的支持度" src="http://www.fuchaoqun.com/wp-content/uploads/Lift.png" alt="Lift" /></p>
<p>Support(A→B)其实就是AB的联合概率<em>P(AB)</em>，Support(A) 、 Support(B)分别为A、B的概率估计<em>P(A)</em>、<em>P(B)</em>，如果A、B相互独立，则<em>P(AB)</em> = <em>P(A)</em> × <em>P(B)</em>，所以只有 <span style="color: #ff0000;">Lift &gt; 1</span> 才表示A、B正相关，且越大越好。</p>
<p>为什么要引入提升度的概念呢？还是拿歌曲来做例子，比如歌曲A、歌曲C为小众歌曲，歌曲B为口水歌，共有10万个用户，有200个人听过歌曲A，这200个人里面有60个听过口水歌B，有40个人听过歌曲C，同时听过歌曲C的人数是300，听过口水歌B的人为50000，那么Confidence(A→B) = 0.3，Confidence(A→C) = 0.2，从置信度来看貌似A和B更相关，但是10W人里面有5W听过歌曲B，说明有一半的用户都喜欢歌曲B，但听过歌曲A的人里面只有30%的人喜欢歌曲B，很明显歌曲A和歌曲B负相关，计算Lift(A→B) = 0.6，小于1，负相关，Lift(A→C) = 100，远大于1，正相关。</p>
<p>当然，还有一些其他的度量因子，可自行参阅其他文档。</p>
<p>可以进入正题了，我们要实验的是一个文学类的网站数据，数据格式如下：</p>
<p style="padding-left: 30px;">用户ID    图书ID</p>
<p>表示此用户阅读过该图书，我们首先要解决的问题是：<strong>喜欢图书A的用户还喜欢其他哪些图书？</strong>（图书之间的相关性）</p>
<p><strong>推荐流程</strong>：</p>
<ul>
<li>数据清理：对用户和图书分别计数，过滤掉一些超不活跃的用户和超冷门的图书</li>
<li>计算<span style="color: #ff0000;">两两图书</span>之间的支持度、置信度、提升度，根据最低支持度、最低置信度、最低提升度剪枝，把低于最小值的规则扔掉</li>
<li>对图书A进行推荐：找出图书A的所有规则，按照置信度降序排序，Top-N即为和图书A最相关的前N本图书</li>
</ul>
<p>非常简单，关键的就是数据清理以及规则剪枝设置，这需要对业务熟悉一些，提升度的话，如果不确认，大于1即可。</p>
<p>结果示例：</p>
<p style="padding-left: 30px;">古龙:剑毒梅香(中) <span style="color: #ff0000;">→</span>古龙:剑毒梅香(上)|古龙:剑毒梅香(下)|武林第一少年:血欲江湖|笑傲江湖之风清扬别传|草根续写:天龙八部续<br />
古龙:剑毒梅香(下) <span style="color: #ff0000;">→</span>古龙:剑毒梅香(中)|古龙:剑毒梅香(上)|武林第一少年:血欲江湖|笑傲江湖之风清扬别传|恐怖宿舍惊魂夜:女生寝室|倚天屠龙记之复兴明教|至尊武神:六脉神剑闹武林|草根续写:天龙八部续<br />
温瑞安：四大名捕猿猴月 <span style="color: #ff0000;">→</span> 四大名捕会京师:逆水寒|温瑞安：四大名捕铁布衫|四大名捕震关东－亡命|四大名捕破神枪:  惨绿|四大名捕破神枪－妖红|四大名捕震关东－追杀|温瑞安：四大名捕谈亭会|温瑞安：四大名捕开谢花|温瑞安：四大名捕碎梦刀|四大名捕走龙蛇|温瑞安：四大名捕猛鬼庙|温瑞安神州奇侠:人世间<br />
异界玄奇：尸池 <span style="color: #ff0000;">→</span> 荒村血鬼洞房:剥皮新娘|真实恐怖:鬼宅小区|丫鬟不好当:王爷,请自重|人鬼恋:我的老婆不是人|灵异事件全曝光:诡异档案|恐怖的盗墓历险:荒村古墓|校园僵尸|古墓惊魂夜:坟岭村笔记|阴阳眼之鬼瞳:荒道门|极度恐怖乱坟头:墓地惊叫|盗墓传说|不解迷:殡仪馆里的化妆师|凶尸宿舍惊魂声:猛鬼校园|惊声尖叫:太平间美丽女尸|生化疯狂撕杀之丧尸异形|僵尸当街:遇上美女天师|生化异族的入侵:吸血传说|凶宅女尸:学院惊魂夜|棺木里的眼球:古井沉尸|校园恐怖女生寝室3:诡铃<br />
变成有钱人并不难:  理财YS <span style="color: #ff0000;">→</span> 快速发财:  怎样做无本生意|创业指南:三十六计|成功三宝:习惯、心态、人脉|掌控自己命运:读孙子兵法|改变你一生的30个招术|帮你成高手:口才决定成败|左右逢源的做人心机术|穷人与富人的差别|最快的致富秘诀:  赢在观念|做个聪明的老板: 经商要会说话|把话说得滴水不漏全集|职场:1分钟读懂对方心理|恋人浪漫短信|李嘉诚的谋局与处世|股票入门:股票认知大全|男人了解女人,女人了解男人|教你理财:理财高手|心机&#8211;做人的一种智慧|必修课:这样做女孩最命好|女人的身体·女人的智慧<br />
……</p>
<p>不再多举例子了，目测感觉大多比较靠谱。</p>
<p>Simpler could be better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2010/02/recommendation-system-on-association-rules/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ColaPHP 0.5beta发布</title>
		<link>http://www.fuchaoqun.com/2010/01/colaphp-0-5-beta/</link>
		<comments>http://www.fuchaoqun.com/2010/01/colaphp-0-5-beta/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 05:31:54 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[默认分类]]></category>
		<category><![CDATA[ColaPHP]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=298</guid>
		<description><![CDATA[ColaPHP的第一个beta版本,代号：Practice，已经实践的优化，可以适量应用在实际项目中，相比较0.4alpha，比较大的修改如下：

增加字符串加密助手，支持XOR、mcrypt加密，支持混淆
增加分页类
重构了HTTP请求类，可定制性更强
重构了Validate类，增加批量校验
其他代码重构以及bug fix 

下载ColaPHP 0.5beta，阅读ColaPHP文档，访问ColaPHP项目。
下一个版本0.6beta开发代号：Easy，将在易用性方面进一步优化。 
]]></description>
			<content:encoded><![CDATA[<p>ColaPHP的第一个beta版本,代号：Practice，已经实践的优化，可以适量应用在实际项目中，相比较0.4alpha，比较大的修改如下：</p>
<ul>
<li>增加字符串加密助手，支持XOR、mcrypt加密，支持混淆</li>
<li>增加分页类</li>
<li>重构了HTTP请求类，可定制性更强</li>
<li>重构了Validate类，增加批量校验</li>
<li>其他代码重构以及bug fix </li>
</ul>
<p>下载<a href="http://colaphp.googlecode.com/files/ColaPHP-0.5-beta.zip" target="_blank">ColaPHP 0.5beta</a>，阅读<a href="http://code.google.com/p/colaphp/w/list" target="_blank">ColaPHP文档</a>，访问<a href="http://code.google.com/p/colaphp/" target="_blank">ColaPHP项目</a>。</p>
<p>下一个版本0.6beta开发代号：Easy，将在易用性方面进一步优化。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2010/01/colaphp-0-5-beta/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MongoDb In Action</title>
		<link>http://www.fuchaoqun.com/2010/01/mongodb-in-action/</link>
		<comments>http://www.fuchaoqun.com/2010/01/mongodb-in-action/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 05:15:38 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[默认分类]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=294</guid>
		<description><![CDATA[
This slide will tell you how to use MongoDb as MySQL in your application.
]]></description>
			<content:encoded><![CDATA[<div style="width:425px;text-align:left" id="__ss_2976022"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mongodbinaction-100122230824-phpapp01&#038;rel=0&#038;stripped_title=mongodb-in-action-2976022" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mongodbinaction-100122230824-phpapp01&#038;rel=0&#038;stripped_title=mongodb-in-action-2976022" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p>This slide will tell you how to use MongoDb as MySQL in your application.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2010/01/mongodb-in-action/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python处理MP3的歌词和图片</title>
		<link>http://www.fuchaoqun.com/2010/01/python-mp3-id3v2-lyrics-attached_picture/</link>
		<comments>http://www.fuchaoqun.com/2010/01/python-mp3-id3v2-lyrics-attached_picture/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:51:31 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[默认分类]]></category>
		<category><![CDATA[attached picture]]></category>
		<category><![CDATA[id3v2]]></category>
		<category><![CDATA[lyrics]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=289</guid>
		<description><![CDATA[一些MP3播放器（包括iphone、ipod、itouch、blackberry等）可以在播放mp3的时候显示专辑图片、歌词等信息而不需要额外的图片文件和歌词文件，仅仅一个mp3文件就搞定，比较有意思。除了用专门的软件（比如itunes）来制作这样的mp3，我们还可以用程序来批量生成。
查阅mp3头信息ID3V2的技术文档，发现可以往ID3信息里面加入歌词和图片信息（可以在页面上查找Lyrics、Attached picture就能发现相应的内容）。有了官方格式上的支持，我们要做的就是把歌词和图片加入到MP3文件中去。
测试一些开源的软件包，发现一个比较可靠的：eyeD3，由python语言编写，直接上代码：

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#coding=utf-8
import eyeD3
import re
&#160;
# mp3文件
mp3_file = '/path/to/foobar.mp3'
# lrc歌词文件
lrc_file = '/path/to/foobar.lrc'
# 专辑图片
pic_file = '/path/to/foobar.jpg'
&#160;
# 实例化eyeD3
tag = eyeD3.Tag&#40;&#41;
&#160;
# 绑定到mp3文件
tag.link&#40;mp3_file&#41;
&#160;
# 去掉原文件中可能存在的图片
tag.removeImage&#40;&#41;
&#160;
# 去掉原文件中可能存在的歌词
tag.removeLyrics&#40;&#41;
&#160;
# 设定编码,非常重要，否则不支持中文
tag.encoding = '\x01'
&#160;
# 添加图片
tag.addImage&#40;3, pic_file, u''&#41;
&#160;
# 添加歌词，注意要utf-8编码，去掉lrc中时间信息
tag.addLyrics&#40;re.sub&#40;'(\[.*?\][\n]*)+', '', unicode&#40;open&#40;lrc_file, 'r'&#41;&#41;.read&#40;&#41;, 'utf8'&#41;&#41;&#41;
&#160;
# 更新到文件
tag.update&#40;&#41;

代码非常简单，需要注意的是设定编码，不然歌词就乱码了。有了eyeD3之后，可以写个爬虫，从网上抓下歌词和图片直接灌进MP3文件里面，剩下的就是享受了。
]]></description>
			<content:encoded><![CDATA[<p>一些MP3播放器（包括iphone、ipod、itouch、blackberry等）可以在播放mp3的时候显示专辑图片、歌词等信息而不需要额外的图片文件和歌词文件，仅仅一个mp3文件就搞定，比较有意思。除了用专门的软件（比如itunes）来制作这样的mp3，我们还可以用程序来批量生成。</p>
<p>查阅mp3头信息<a href="http://www.id3.org/d3v2.3.0" target="_blank">ID3V2的技术文档</a>，发现可以往ID3信息里面加入歌词和图片信息（可以在页面上查找Lyrics、Attached picture就能发现相应的内容）。有了官方格式上的支持，我们要做的就是把歌词和图片加入到MP3文件中去。</p>
<p>测试一些开源的软件包，发现一个比较可靠的：<a href="http://eyed3.nicfit.net/" target="_blank">eyeD3</a>，由python语言编写，直接上代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#coding=utf-8</span>
<span style="color: #ff7700;font-weight:bold;">import</span> eyeD3
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># mp3文件</span>
mp3_file = <span style="color: #483d8b;">'/path/to/foobar.mp3'</span>
<span style="color: #808080; font-style: italic;"># lrc歌词文件</span>
lrc_file = <span style="color: #483d8b;">'/path/to/foobar.lrc'</span>
<span style="color: #808080; font-style: italic;"># 专辑图片</span>
pic_file = <span style="color: #483d8b;">'/path/to/foobar.jpg'</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 实例化eyeD3</span>
tag = eyeD3.<span style="color: black;">Tag</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 绑定到mp3文件</span>
tag.<span style="color: black;">link</span><span style="color: black;">&#40;</span>mp3_file<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 去掉原文件中可能存在的图片</span>
tag.<span style="color: black;">removeImage</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 去掉原文件中可能存在的歌词</span>
tag.<span style="color: black;">removeLyrics</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 设定编码,非常重要，否则不支持中文</span>
tag.<span style="color: black;">encoding</span> = <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\x</span>01'</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 添加图片</span>
tag.<span style="color: black;">addImage</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">3</span>, pic_file, u<span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 添加歌词，注意要utf-8编码，去掉lrc中时间信息</span>
tag.<span style="color: black;">addLyrics</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">sub</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'(<span style="color: #000099; font-weight: bold;">\[</span>.*?<span style="color: #000099; font-weight: bold;">\]</span>[<span style="color: #000099; font-weight: bold;">\n</span>]*)+'</span>, <span style="color: #483d8b;">''</span>, <span style="color: #008000;">unicode</span><span style="color: black;">&#40;</span><span style="color: #008000;">open</span><span style="color: black;">&#40;</span>lrc_file, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, <span style="color: #483d8b;">'utf8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># 更新到文件</span>
tag.<span style="color: black;">update</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>代码非常简单，需要注意的是设定编码，不然歌词就乱码了。有了eyeD3之后，可以写个爬虫，从网上抓下歌词和图片直接灌进MP3文件里面，剩下的就是享受了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2010/01/python-mp3-id3v2-lyrics-attached_picture/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>还在路上</title>
		<link>http://www.fuchaoqun.com/2009/12/my-2009/</link>
		<comments>http://www.fuchaoqun.com/2009/12/my-2009/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 03:54:10 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[默认分类]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=284</guid>
		<description><![CDATA[又是一年算账的时候，去年的今天写了2009年的一些计划：网络(socket)/桌面(gui)编程；一个精巧的PHP框架；数据挖掘；多一些好朋友。socket/gui编程算是稍稍入门吧；PHP框架(ColaPHP)已经发了4个alpha版本，目前从实际项目中看表现还可以，可能下一个版本就进入beta阶段，beta意味着ColaPHP逐步趋于稳定；数据挖掘前半年做的比较多，进展不算太大；好朋友多了一些，此事甚为欣慰。
2009年技术上主要是代码方面的成长，重构的事情做的比较多，已不太相信过于花哨的玩意。脾气方面，&#8221;骄躁&#8221;二字少了些。回过头来看2009，不觉太多收获，亦不觉浮度。
2010年想要做的一些事情：学一门新语言；ColaPHP发一个GA版本；数据挖掘，做一个开源的推荐系统；更多的好朋友。
希望春天能在2010年到来。
]]></description>
			<content:encoded><![CDATA[<p>又是一年算账的时候，去年的今天写了<a href="http://www.fuchaoqun.com/2008/12/my-2008/" target="_blank">2009年的一些计划</a>：网络(socket)/桌面(gui)编程；一个精巧的PHP框架；数据挖掘；多一些好朋友。socket/gui编程算是稍稍入门吧；PHP框架(<a href="http://code.google.com/p/colaphp/" target="_blank">ColaPHP</a>)已经发了4个alpha版本，目前从实际项目中看表现还可以，可能下一个版本就进入beta阶段，beta意味着ColaPHP逐步趋于稳定；数据挖掘前半年做的比较多，进展不算太大；好朋友多了一些，此事甚为欣慰。</p>
<p>2009年技术上主要是代码方面的成长，重构的事情做的比较多，已不太相信过于花哨的玩意。脾气方面，&#8221;骄躁&#8221;二字少了些。回过头来看2009，不觉太多收获，亦不觉浮度。</p>
<p>2010年想要做的一些事情：学一门新语言；ColaPHP发一个GA版本；数据挖掘，做一个开源的推荐系统；更多的好朋友。</p>
<p>希望春天能在2010年到来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2009/12/my-2009/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ColaPHP-0.4-alpha发布</title>
		<link>http://www.fuchaoqun.com/2009/12/colaphp-0-4-alpha/</link>
		<comments>http://www.fuchaoqun.com/2009/12/colaphp-0-4-alpha/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 13:46:59 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ColaPHP]]></category>
		<category><![CDATA[PHP Framework]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=279</guid>
		<description><![CDATA[ColaPHP月度发布计划，基本上每月发一个release，相比较0.3alpha，比较大的修改如下：

增加了动态路由模式，可不用定义URL规则
增加对MySQL Master-Slave支持，可以由单数据库无缝迁移到主从模式
去除框架中Smarty模板的绑定，可以在Controller中自行调用Smarty模板
Helper中增加了性能测试模块Benchmark.php
增加对MongoDB的简单绑定Mongo.php
性能进一步提升
大量的代码重构以及bug fix 

访问ColaPHP官方网站，下载0.4alpha，不过建议随时跟进我们的svn://colaphp.googlecode.com/svn/trunk/，ColaPHP一直在活跃开发。
ColaPHP 0.4alpha已完成预期目标，所有的函数都控制在20行以内。下一个版本0.5alpha版本开发代号：Practice，ColaPHP已经在一些实际项目中使用，0.5alpha将得到更多的实践优化
招募PHP极客加入ColaPHP，联系fuchaoqun#gmail.com。
]]></description>
			<content:encoded><![CDATA[<p>ColaPHP月度发布计划，基本上每月发一个release，相比较0.3alpha，比较大的修改如下：</p>
<ul>
<li>增加了动态路由模式，可不用定义URL规则</li>
<li>增加对MySQL Master-Slave支持，可以由单数据库无缝迁移到主从模式</li>
<li>去除框架中Smarty模板的绑定，可以在Controller中自行调用Smarty模板</li>
<li>Helper中增加了性能测试模块Benchmark.php</li>
<li>增加对MongoDB的简单绑定Mongo.php</li>
<li>性能进一步提升</li>
<li>大量的代码重构以及bug fix </li>
</ul>
<p>访问<a href="http://code.google.com/p/colaphp/" target="_blank">ColaPHP</a>官方网站，下载<a href="http://colaphp.googlecode.com/files/ColaPHP-0.4-alpha.zip" target="_blank">0.4alpha</a>，不过建议随时跟进我们的svn://colaphp.googlecode.com/svn/trunk/，ColaPHP一直在活跃开发。</p>
<p>ColaPHP 0.4alpha已完成预期目标，所有的函数都控制在20行以内。下一个版本0.5alpha版本开发代号：Practice，ColaPHP已经在一些实际项目中使用，0.5alpha将得到更多的实践优化</p>
<p>招募PHP极客加入ColaPHP，联系fuchaoqun#gmail.com。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2009/12/colaphp-0-4-alpha/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[视频] Music Recommender Systems</title>
		<link>http://www.fuchaoqun.com/2009/11/music-recommender-systems-video/</link>
		<comments>http://www.fuchaoqun.com/2009/11/music-recommender-systems-video/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:44:55 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Collaborative filtering]]></category>
		<category><![CDATA[KNN]]></category>
		<category><![CDATA[recommender system]]></category>
		<category><![CDATA[slope one]]></category>
		<category><![CDATA[SVD]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=272</guid>
		<description><![CDATA[
上次去beta沙龙的视频，希望没有浪费大家的时间，感谢beta沙龙的组织工作。
]]></description>
			<content:encoded><![CDATA[<p><embed width="500" height="420" wmode="transparent" quality="high" name="fm_v" id="fm_v" src="http://player.youku.com/player.php/sid/XMTM0NjMzMTYw/v.swf" type="application/x-shockwave-flash"/></p>
<p>上次去beta沙龙的<a href="http://club.blogbeta.com/133.html" target="_blank">视频</a>，希望没有浪费大家的时间，感谢<a href="http://club.blogbeta.com/" target="_blank">beta沙龙</a>的组织工作。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2009/11/music-recommender-systems-video/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Music Recommender Systems</title>
		<link>http://www.fuchaoqun.com/2009/11/music-recommender-systems/</link>
		<comments>http://www.fuchaoqun.com/2009/11/music-recommender-systems/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 04:18:29 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[association rules]]></category>
		<category><![CDATA[Collaborative filtering]]></category>
		<category><![CDATA[KNN]]></category>
		<category><![CDATA[music recommender systems]]></category>
		<category><![CDATA[slope one]]></category>
		<category><![CDATA[SVD]]></category>

		<guid isPermaLink="false">http://www.fuchaoqun.com/?p=262</guid>
		<description><![CDATA[
周末beta沙龙和大家分享的音乐智能推荐PPT，有些内容和上次的PPT差不多，这次主要和大家分享一个完整的数据挖掘流程，同样的，还是工程方面比较多，学术方面这里有很多大牛。
]]></description>
			<content:encoded><![CDATA[<div style="width:425px;text-align:left" id="__ss_2561419"><embed width="510" height="415" flashvars="sessid=BAhDOh9BY3RpdmVTdXBwb3J0OjpPcmRlcmVkSGFzaFsKWwc6DWxhbmd1YWdl%250AIgcqKlsHOgl0ZXN0MFsHOgl1c2VyewYiCXVzZXJpA3XGb1sHOgppbmJveGkA%250AWwc6Em5vdGlmaWNfY291bnRpCg%253D%253D--56a5c08d98a103d6c1c79e7a3d9ca8f5331c745d&amp;pvt=0&amp;doc=musicrecommendersystems-091122193613-phpapp01&amp;version_no=1258940212&amp;presentationId=2561419&amp;totalSlides=27&amp;startSlide=1&amp;inContest=0&amp;preview=no&amp;stitle=music-recommender-systems-2561419&amp;userName=fuchaoqun&amp;has_form=null&amp;form_after_slide_number=null&amp;form_is_blocking=false&amp;hostedIn=slideshare&amp;useHttp=1&amp;autoplay=0" allowfullscreen="true" allowscriptaccess="always" quality="high" bgcolor="#FFFFFF" name="player" id="player" style="" src="http://static.slidesharecdn.com/swf/player.swf" type="application/x-shockwave-flash"/></div>
<p>周末<a href="http://club.blogbeta.com/127.html" target="_blank">beta沙龙</a>和大家分享的<a href="http://www.slideshare.net/fuchaoqun/music-recommender-systems-2515604" target="_blank">音乐智能推荐</a>PPT，有些内容和<a href="http://www.fuchaoqun.com/2009/05/recommender-system/" target="_blank">上次的PPT</a>差不多，这次主要和大家分享一个完整的数据挖掘流程，同样的，还是工程方面比较多，学术方面<a href="http://groups.google.com/group/resys?hl=zh-CN" target="_blank">这里</a>有很多大牛。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2009/11/music-recommender-systems/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.262 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-12 10:09:44 -->
