<?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>蜗牛的牛窝 &#187; 正文提取</title>
	<atom:link href="http://www.woniu.us/category/pick_up_content/feed" rel="self" type="application/rss+xml" />
	<link>http://www.woniu.us</link>
	<description>php开发、PHP程序分析、Python程序设计、心情随笔</description>
	<lastBuildDate>Mon, 09 Aug 2010 13:44:51 +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>网页相似度的判定</title>
		<link>http://www.woniu.us/pick_up_content/120.html</link>
		<comments>http://www.woniu.us/pick_up_content/120.html#comments</comments>
		<pubDate>Fri, 13 Nov 2009 03:43:01 +0000</pubDate>
		<dc:creator>蜗牛</dc:creator>
				<category><![CDATA[正文提取]]></category>
		<category><![CDATA[伪原创]]></category>

		<guid isPermaLink="false">http://snail.comsing.com/?p=120</guid>
		<description><![CDATA[决定写一个伪原创模块，在写伪原创之前，得清楚搜索引擎是如何判断两个网页是否相似的或者完全相同的。我在这里猜测一下搜索引擎的判断流程。

首先搜索引擎的蜘蛛爬取尽量多的网页，不管这个页面内容是否存在，只要该URL还没被爬取。
]]></description>
			<content:encoded><![CDATA[<p>决定写一个伪原创模块，在写伪原创之前，得清楚搜索引擎是如何判断两个网页是否相似的或者完全相同的。我在这里猜测一下搜索引擎的判断流程。</p>
<p>首先搜索引擎的蜘蛛爬取尽量多的网页，不管这个页面内容是否存在，只要该URL还没被爬取。</p>
<p>网页被储存到搜索引擎的数据中心之后要经过一系列的处理，其中之一就是判断这个网页内容是否已经存在，判断的方法肯定需要十分高效，毕竟复杂的算法对于搜索引擎的处理来说是致命的，他不可能去用这个网页跟其他网页一一比对。</p>
<p>许多朋友说是取这个网页的文本的MD5值，然后储存。然后有新的网页进来就去跟这个MD5匹配，若完全相同，则说明是一摸一样的网页。当然这也许是搜索引擎处理的一种方法，这样做可以花很少的时间处理掉完全相同的网页。</p>
<p>但是大家都知道，在互联网上一般都是采集正文内容，然后放进自己的CMS中，一般不会傻到连网页的框架都完全COPY，而搜索引擎如何判断这样的网页呢？这里有两种方法，究竟用的哪一种呢？就需要本人来做实验了。</p>
<p>先说说两种方法：</p>
<p>第一种就是提取网页正文分析法</p>
<p>因为对于搜索引擎来说提取网页正文并不是难事（连我都可以粗糙的提取），搜索引擎提取出网页的正文，取出该正文的第一段的前N个字符并取MD5值，然后取出正文的最后一段的N个字符并取MD5储存起来。然后与数据中心的其他网页的这两个值比较。这样的话就可以消除大部分的采集内容</p>
<p>第二种方法是取高频词的曲线图</p>
<p>也许对于搜索引擎来说提取正文是一个很愚蠢的办法，或者提取正文的准确率有限，毕竟在网络上存在各种各样的网页。所以搜索引擎获取网页中的所有高频词（去掉“的，是，我”这些停用词），然后取高频词次数绘制高频词曲线，将个曲率储存。然后比对具有该高频词的网页，用这个曲率去比对，若相同则判断十分相似，若差距越大 则相似度越小。</p>
<p>当然还有一些其他的方法，比如若标题完全一样的，则用更加细致的算法去判断两个网页的相似度。若描述完全一样则同样处理。</p>
<p>还有一种可能是搜索引擎在用户查询的时候去比对相似性。比如用户搜索“百度”。则搜索引擎会去查询出所有包含百度这个关键字的网页，然后自动为这些网页摘要，若发现这个摘要完全一样则判定为相同的网页。</p>
<p>那么搜索引擎是如何摘要的呢？搜索引擎根据用户输入的关键字，查找出含有该关键字的网页，然后取出最能体现该关键字的部分形成摘要（或者直接取网页的描述部分）。</p>
<p>当然搜索引擎也许集合了上面所说的所有方法。那么伪原创该如何进行呢？</p>
<p><strong>一：改网页标题</strong></p>
<p>但是不能再网页标题中增加停用词，因为搜索引擎在判断的时候会自动删除停用词，而考虑到程序实现的话，如何做到不删除标题中的关键字但同时又能让人看得懂标题的意思，同时又逃过搜索引擎的法眼呢？</p>
<p>算法如下：先将标题分词，再统计网页正文中高频词，如若标题分出来的词在这个高频词列表中则表示不能删除，若不在这个高频词表中则替换掉该词。</p>
<p><strong>二：修改第一段与最后一段</strong></p>
<p>在第一段加上诸如：下面是XXX信息的正文内容，下面的文章来自于互联网等等随机字段。在最后一段加上XX正文内容结束，如若发现错误请指出。之类的。</p>
<p><strong>三：修改高频词</strong></p>
<p>在改标题处我们通过在正文中查找标题中出现的高频词可以判断该文章的主要关键字是哪几个，我们保留这些主要关键字，用单词替换法去替换掉其他的高频词，这样就可以做到既不损坏文章主题，同时又打乱了高频词曲线的效果。</p>
<p>最后为了防止别人COPY可以在正文中加入一些扰乱码，设置成跟文本背景相同，这样别人一COPY去就麻烦了，同时也可以防止搜索引擎在搜索关键字的时候查询那个段落发现跟其他网页一摸一样的效果。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.woniu.us/pick_up_content/120.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>php网页正文提取程序测试版出炉</title>
		<link>http://www.woniu.us/pick_up_content/115.html</link>
		<comments>http://www.woniu.us/pick_up_content/115.html#comments</comments>
		<pubDate>Thu, 12 Nov 2009 09:08:57 +0000</pubDate>
		<dc:creator>蜗牛</dc:creator>
				<category><![CDATA[正文提取]]></category>

		<guid isPermaLink="false">http://snail.comsing.com/?p=115</guid>
		<description><![CDATA[演示地址：http://www.woniu.us/get_content_demo/

功能：能够抓取90%左右的内容型网页，不需要写任何规则，程序能够自动识别出正文内容
]]></description>
			<content:encoded><![CDATA[<p>演示地址：<a href="http://www.woniu.us/get_content_demo/">http://www.woniu.us/get_content_demo/</a></p>
<p>功能：能够抓取90%左右的内容型网页，不需要写任何规则，程序能够自动识别出正文内容</p>
<p>             能够抓取GB2312与UTF-8编码的网页</p>
<p> 缺陷：暂不提供图片抓取</p>
<p>             程序识别精度还不够</p>
]]></content:encoded>
			<wfw:commentRss>http://www.woniu.us/pick_up_content/115.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>获取HTML标签对的函数</title>
		<link>http://www.woniu.us/pick_up_content/112.html</link>
		<comments>http://www.woniu.us/pick_up_content/112.html#comments</comments>
		<pubDate>Thu, 12 Nov 2009 03:10:30 +0000</pubDate>
		<dc:creator>蜗牛</dc:creator>
				<category><![CDATA[正文提取]]></category>

		<guid isPermaLink="false">http://snail.comsing.com/?p=112</guid>
		<description><![CDATA[该函数能够查找出所要查询的标签对中的内容，在处理HTML页面的时候非常有用]]></description>
			<content:encoded><![CDATA[<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;span&gt;&lt;code&gt;&lt;span&gt;该函数能够查找出所要查询的标签对中的内容，在处理HTML页面的时候非常有用&lt;/span&gt;</div></div>
<p></span></code></p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;span&gt;function&lt;/span&gt;&lt;span&gt; search&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;$start&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$end&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$string&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; $borders&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;span&gt; <br />
                $reg&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;!&quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;preg_quote&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;$start&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;&quot;(.*?)&quot;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;preg_quote&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;$end&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;&quot;!is&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; <br />
                preg_match_all&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;$reg&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$string&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;$matches&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;span&gt; <br />
 <br />
                &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;$borders&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; $matches&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;span&gt;         <br />
                &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; $matches&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;span&gt;         <br />
        &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; <br />
&lt;/span&gt;</div></div>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;span&gt;$array &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; search&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&amp;lt;script&amp;gt;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;lt;/script&amp;gt;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; $html&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;</div></div>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;span&gt;<br />
&lt;a href=&quot;http://snail.comsing.com/wp-content/uploads/2009/11/3.rar&quot;&gt;下载地址&lt;/a&gt;&lt;/span&gt;</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.woniu.us/pick_up_content/112.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP正文提取&#8211;项目开始</title>
		<link>http://www.woniu.us/pick_up_content/110.html</link>
		<comments>http://www.woniu.us/pick_up_content/110.html#comments</comments>
		<pubDate>Wed, 11 Nov 2009 12:45:08 +0000</pubDate>
		<dc:creator>蜗牛</dc:creator>
				<category><![CDATA[正文提取]]></category>
		<category><![CDATA[正文抽取]]></category>
		<category><![CDATA[统计]]></category>
		<category><![CDATA[项目]]></category>

		<guid isPermaLink="false">http://snail.comsing.com/%e6%ad%a3%e6%96%87%e6%8f%90%e5%8f%96/110.html</guid>
		<description><![CDATA[很久很久以前就想写个PHP正文提取的程序，大大小小的理论知识看了不少，关于正文提取的论文、算法基本上都看过了,也接触了几个在这方面做得很好的项目。不过很可惜要么是JAVA语言写的要么就是.NET写的。所以决定自己写个PHP版本的正文提取程序以备后用。]]></description>
			<content:encoded><![CDATA[<p>&#160;&#160;&#160;&#160;&#160;&#160; 很久很久以前就想写个PHP正文提取的程序，大大小小的理论知识看了不少，关于正文提取的论文、算法基本上都看过了,也接触了几个在这方面做得很好的项目。不过很可惜要么是JAVA语言写的要么就是.NET写的。所以决定自己写个PHP版本的正文提取程序以备后用。</p>
<p>那两个项目的地址为：</p>
<p><a href="http://61.128.196.27/txt/">http://61.128.196.27/txt/</a>    <br /><a href="http://www.dataocean.cn/webcontentpicker.aspx">http://www.dataocean.cn/webcontentpicker.aspx</a> </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160; 这里我使用的方法是基于统计的正文提取算法，详情见这里<a title="http://blog.csdn.net/lanphaday/archive/2007/08/13/1741185.aspx" href="http://blog.csdn.net/lanphaday/archive/2007/08/13/1741185.aspx">http://blog.csdn.net/lanphaday/archive/2007/08/13/1741185.aspx</a></p>
<p>大致步骤如下：</p>
<p>一、解析HTML代码并记下处理的字节数。</p>
<p>二、以行或段的形式保存解析输出的文本。</p>
<p>三、统计每一行文本相应的HTML代码的字节数</p>
<p>四、通过计算文本相对于字节数的比率来获取文本密度。</p>
<p>五、最后用神经网络来决定这一行是不是正文的一部分。</p>
<p>这个算法是我见到的最简单同时也是最实用，效率最高的算法，比起那些在知网上看到的我们的大学生，研究生，博士生们写的论文要强不知多少倍。我一直在想，为什么这些人要把一个简单的东西写得那么复杂、写得鬼都看不懂做什么。</p>
<p>好了、废话不多说赶紧写程序！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.woniu.us/pick_up_content/110.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
