<?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>刘思喆 @ 贝吉塔行星</title>
	<atom:link href="http://www.bjt.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bjt.name</link>
	<description>R 语言，数据挖掘，数据可视化</description>
	<lastBuildDate>Tue, 01 May 2012 15:12:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>费波那西数列和递归</title>
		<link>http://www.bjt.name/2012/05/fibonacci-number-recursion/</link>
		<comments>http://www.bjt.name/2012/05/fibonacci-number-recursion/#comments</comments>
		<pubDate>Tue, 01 May 2012 11:25:29 +0000</pubDate>
		<dc:creator>刘思喆</dc:creator>
				<category><![CDATA[技巧随笔]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[Fibonacci]]></category>
		<category><![CDATA[Julia]]></category>

		<guid isPermaLink="false">http://www.bjt.name/?p=10974</guid>
		<description><![CDATA[前段时间在老家给小舅子补习高中数学，其中有一道数列的求解，题目是这样的： a_1 = 1 a_2 = 1 a_n = a_(n-1) + a_(n-2) 求 a_n 的通项表达。 解题思路是先构建等比数列 b_n，再将等比数列 b_n 变形回 a_n ，求得通项。这道题实际就是费波那西数列的初等代数求法。费波那西数列在科学、自然界等很多领域都有表现，比如我们常说的黄金分割比（1.618），既是两个相邻费波那西数的比值f(n + 1)/f(n) = (1 + sqrt(5))/2，还有美丽的向日葵的花盘中果实： 这个序列虽说非常有意思，但我当时并没有意识到在R中求解费波那西序列的时间问题。 首先看一下，最为原始的、朴素的R代码： fib &#60;- function(n) { ifelse(n &#60; 2, n, fib(n - 1) + fib(n - 2)) } system.time(fib(25)) 所需的时间是1.65s，时间相当长，那我们进行一下改写： fib2 &#60;- function(n) { if(n &#60; 2) n else <a href='http://www.bjt.name/2012/05/fibonacci-number-recursion/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>前段时间在老家给小舅子补习高中数学，其中有一道数列的求解，题目是这样的：</p>
<ul>
<li>a_1 = 1</li>
<li>a_2 = 1</li>
<li>a_n = a_(n-1) + a_(n-2)</li>
</ul>
<p>求 a_n 的通项表达。</p>
<p>解题思路是先构建等比数列 b_n，再将等比数列 b_n 变形回 a_n ，求得通项。这道题实际就是费波那西数列的初等代数求法。费波那西数列在科学、自然界等很多领域都有表现，比如我们常说的黄金分割比（1.618），既是两个相邻费波那西数的比值f(n + 1)/f(n) = (1 + sqrt(5))/2，还有美丽的向日葵的花盘中果实：</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/05/sunflower.jpg"><img class="aligncenter size-full wp-image-10977" title="sunflower" src="http://www.bjt.name/wp-content/uploads/2012/05/sunflower.jpg" alt="" width="400" height="283" /></a></p>
<p>这个序列虽说非常有意思，但我当时并没有意识到在R中求解费波那西序列的时间问题。</p>
<p>首先看一下，最为原始的、朴素的R代码：</p>
<pre>fib &lt;- function(n)
{
ifelse(n &lt; 2, n, fib(n - 1) + fib(n - 2))
}
system.time(fib(25))</pre>
<p>所需的时间是1.65s，时间相当长，那我们进行一下改写：</p>
<pre>fib2 &lt;- function(n)
{
if(n &lt; 2) n else Recall(n-1) + Recall(n-2)
}
system.time(fib2(25))</pre>
<p>所需时间是0.21s，通过改进if else 及 recall 得到了一定提升，但仍然非常慢，继续：</p>
<pre>library(compiler)
enableJIT(3)
fib3 &lt;- cmpfun(fib2)
system.time(fib3(25))</pre>
<p>需要0.19s，通过byte code编译方式，时间略微有所缩短，但依旧很慢。看来在R环境下，最高性能也就如此了。那试一试在R中调用C++代码的方式：</p>
<pre>require(inline)
incltxt &lt;- '
int fibonacci(const int x) {
if (x == 0) return(0);
if (x == 1) return(1);
return (fibonacci(x - 1)) + fibonacci(x - 2);
}'
fibRcpp &lt;- cxxfunction(signature(xs="int"),
plugin="Rcpp",
incl=incltxt,
body='
int x = Rcpp::as&lt;int&gt;(xs);
return Rcpp::wrap( fibonacci(x) );
')
start &lt;- Sys.time()
fibRcpp(25)
end &lt;- Sys.time()
end - start</pre>
<p>这里用system.time已经不能正确显示时间（显示为0秒），稍稍改了下格式，现在需要时间是0.07s（调用inline包，在R环境下编译C++）。</p>
<p>是否还能够优化，答案是肯定的，直接上C。刚好有个gmp包刚好可以求费波那西数列，它是C语言级别的求解：</p>
<pre>library(gmp)
start &lt;- Sys.time()
fibnum(25)
end &lt;- Sys.time()
end - start</pre>
<p>所需时间进一步降低，为0.027s。那有看官说了，难道R语言在处理递归就这么不济？这不调用底层语言的话，性能也太寒碜了吧。其实不然，来个杀手锏（来自于R inforno，稍稍有点难理解）</p>
<pre>fibonacci &lt;- local({
  memo &lt;- c(1, 1, rep(NA, 100))
  f &lt;- function(x) {
    if(x == 0) return(0)
    if(x &lt; 0) return(NA)
    if(x &gt; length(memo))
    stop("’x’ too big for implementation")
    if(!is.na(memo[x])) return(memo[x])
    ans &lt;- f(x-2) + f(x-1)
    memo[x] &lt;&lt;- ans
  ans
}
})
start &lt;- Sys.time()
fibonacci(25)
end &lt;- Sys.time()
end - start</pre>
<p>时间是0.033s，略逊于调用优化了的C，但明显强于非优化的C++。还没完，实际上此序列是有线性算法的，大囧：</p>
<pre>fib = function (x)
{
        if (x == 0)
                return (0)
        n1 = 0
        n2 = 1
        for (i in 1:(x-1)) {
                sum = n1 + n2
                n1 = n2
                n2 = sum
        }
        n2
}
start &lt;- Sys.time()
fib(25)
end &lt;- Sys.time()
end - start
</pre>
<p>所需时间是0.026s，基本上和优化的C一致。还能再快吗！！？？是的，还能。本文的最开头提到费波那西数列的初等代数求法，最终序列的通项可以用以下式子表示：</p>
<pre>s &lt;- sqrt(5)
fn &lt;- function(n){
s/5 * (((1 + s)/2)^n - ((1 - s)/2)^n)
}
fibn &lt;- cmpfun(fn)
start &lt;- Sys.time()
fibn(25)
end &lt;- Sys.time()
end - start</pre>
<p>时间定格在0.019s，世界终于清静了……</p>
<p>（注：gmp包中的求解方式没有详细考证C代码，貌似也是线性解法）</p>
<p><strong>参考资料：</strong></p>
<ul>
<li>费波那西序列：<a href="http://en.wikipedia.org/wiki/Fibonacci_number">http://en.wikipedia.org/wiki/Fibonacci_number</a></li>
<li>R中的递归：<a href="http://stackoverflow.com/questions/6807068/why-is-my-recursive-function-so-slow-in-r">http://stackoverflow.com/questions/6807068/why-is-my-recursive-function-so-slow-in-r</a></li>
<li>julia和R讨论：<a href="http://www.johnmyleswhite.com/notebook/2012/03/31/julia-i-love-you/">http://www.johnmyleswhite.com/notebook/2012/03/31/julia-i-love-you/</a></li>
</ul>
<h3 class='related_post_title'>相关文章：</h3>
<ul class='related_post'>
<li>既然没有了，那就随便看看吧~~</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bjt.name/2012/05/fibonacci-number-recursion/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>商业数据库对R语言的支持</title>
		<link>http://www.bjt.name/2012/04/r-language-enterprise/</link>
		<comments>http://www.bjt.name/2012/04/r-language-enterprise/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 11:08:48 +0000</pubDate>
		<dc:creator>刘思喆</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Netezza]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAS]]></category>

		<guid isPermaLink="false">http://www.bjt.name/?p=10967</guid>
		<description><![CDATA[一直以来，我们在提到使用R进行数据分析、数据挖掘都会使用RODBC、RJDBC、DBI等相关的包来调用数据库，比如我前面罗嗦的一片文章数据挖掘之R与SQL，但实际基本上各大数据库厂商已有相应的R语言企业级应用产品，这些厂商包括Oracle、IBM、Teradata、Sybase、SAP。 Oracle R Enterprise Oracle R Enterprise是针对于大数据市场下，用于处理日益丰富的数据。这款产品有以下优势： 企业级的R应用 允许DBA将R语言模型产品化 可以将R模型整合到BI仪表盘（BIEE） 统计学家可以直接使用数据库，而不需去了解具体SQL 减少Oracle数据库外的数据管理成本 减少高昂SA$的使用费用 可完全替代SA$ base，节省SA$的使用年费 分析人员可以直接面对数据库进行个性化分析，而不需要数据导出 超过100内置的统计函数可以同Base SA$兼容 大数据分析的in-database支持 高性能的代数运算(在R中整合Intel&#8217;s Math Kernel Library) R语句的执行的使用并行化运算方式（包括扩展包） 高度整合了R语言快速开发、数据库并行计算的优势 众所周知，R语言将数据置于内存，数据处理能力有限，Oracle R Enterprise将此瓶颈完全打开，并将性能提升到更高级别。 IBM Netezza® Netezza 并不隶属于IBM原有产品线，而是针对于“一体机”市场，于2010年17亿美元的价格收购获得，用以扩张其用于销售、市场营销和产品开发的商务分析产品。Netezza对R语言的支持，主要通过Revolution合作，通过调用R Enterprise from Revolution® Analytics平台来实现。Netezza的特点可以总结为：可扩展的、高性能的、大规模内置并行分析平台。 注：除了R语言外，Netezza还支持SAS、PASW等分析软件 IBM® InfoSphere® BigInsights IBM BigInsights 同样也整合了R语言资源，提供了Map-Reduce架构的R语言并行化计算环境，包括了大数据集的文本挖掘和机器学习算法。BigInsights可以将构建的R语言模型发布在Hadoop平台上（同IBM Netezza一样，通过调用R Enterprise from Revolution® Analytics），极大的满足企业级数据需求。 注：为IBM提供R语言商业化应用的公司是Revolution，关于这家公司可以参考这里。 SAP HANA 借助SAP BusinessObjects Predictive Analysis平台，分析师们既可以使用内置的预测性算法来构建模型，也可以整合并使用流行的开源数据统计分析语言——R语言。并且，依托SAP <a href='http://www.bjt.name/2012/04/r-language-enterprise/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>一直以来，我们在提到使用R进行数据分析、数据挖掘都会使用RODBC、RJDBC、DBI等相关的包来调用数据库，比如我前面罗嗦的一片文章<a href="http://www.bjt.name/2011/08/r-and-sql-datamining/"><span style="color: #0000ff;"><strong>数据挖掘之R与SQL</strong></span></a>，但实际基本上各大数据库厂商已有相应的R语言企业级应用产品，这些厂商包括Oracle、IBM、Teradata、Sybase、SAP。</p>
<h3>Oracle R Enterprise</h3>
<p>Oracle R Enterprise是针对于大数据市场下，用于处理日益丰富的数据。这款产品有以下优势：</p>
<h6>企业级的R应用</h6>
<ul>
<li>允许DBA将R语言模型产品化</li>
<li>可以将R模型整合到BI仪表盘（BIEE）</li>
<li>统计学家可以直接使用数据库，而不需去了解具体SQL</li>
<li>减少Oracle数据库外的数据管理成本</li>
</ul>
<h6>减少高昂SA$的使用费用</h6>
<ul>
<li>可完全替代SA$ base，节省SA$的使用年费</li>
<li>分析人员可以直接面对数据库进行个性化分析，而不需要数据导出</li>
<li>超过100内置的统计函数可以同Base SA$兼容</li>
</ul>
<h6>大数据分析的in-database支持</h6>
<ul>
<li>高性能的代数运算(在R中整合<a href="http://software.intel.com/en-us/articles/intel-mkl/">Intel&#8217;s Math Kernel Library</a>)</li>
<li>R语句的执行的使用并行化运算方式（包括扩展包）</li>
<li>高度整合了R语言快速开发、数据库并行计算的优势</li>
</ul>
<p>众所周知，R语言将数据置于内存，数据处理能力有限，Oracle R Enterprise将此瓶颈完全打开，并将性能提升到更高级别。</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/04/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.bjt.name/wp-content/uploads/2012/04/image_thumb.png" alt="image" width="322" height="348" border="0" /></a></p>
<h3><a href="http://www-01.ibm.com/common/ssi/rep_ca/2/897/ENUS212-042/ENUS212-042.PDF">IBM Netezza®</a></h3>
<p>Netezza 并不隶属于IBM原有产品线，而是针对于“一体机”市场，于2010年17亿美元的价格收购获得，用以扩张其用于销售、市场营销和产品开发的商务分析产品。Netezza对R语言的支持，主要通过Revolution合作，通过调用<a href="http://www.revolutionanalytics.com/products/revolution-enterprise-for-ibm-netezza.php"><strong>R Enterprise from Revolution® Analytics</strong></a>平台来实现。Netezza的特点可以总结为：可扩展的、高性能的、大规模内置并行分析平台。</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/04/image1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.bjt.name/wp-content/uploads/2012/04/image_thumb1.png" alt="image" width="543" height="321" border="0" /></a></p>
<p>注：除了R语言外，Netezza还支持SAS、PASW等分析软件</p>
<h3><a href="http://www-01.ibm.com/software/data/infosphere/biginsights/">IBM® InfoSphere® BigInsights</a></h3>
<p>IBM BigInsights 同样也整合了R语言资源，提供了Map-Reduce架构的R语言并行化计算环境，包括了大数据集的文本挖掘和机器学习算法。BigInsights可以将构建的R语言模型发布在Hadoop平台上（同IBM Netezza一样，通过调用<a href="http://www.revolutionanalytics.com/products/revolution-enterprise-for-ibm-netezza.php"><strong>R Enterprise from Revolution® Analytics</strong></a>），极大的满足企业级数据需求。</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/04/image2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.bjt.name/wp-content/uploads/2012/04/image_thumb2.png" alt="image" width="553" height="345" border="0" /></a></p>
<p>注：为IBM提供R语言商业化应用的公司是Revolution，关于这家公司可以参考<a href="http://www.bjt.name/2009/10/spss-norman-nie-r/" target="_blank">这里</a>。</p>
<h3>SAP HANA</h3>
<p>借助SAP BusinessObjects Predictive Analysis平台，分析师们既可以使用内置的预测性算法来构建模型，也可以整合并使用流行的开源数据统计分析语言——R语言。并且，依托SAP HAHA平台可以提供in-database分析。</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/04/image3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="image" src="http://www.bjt.name/wp-content/uploads/2012/04/image_thumb3.png" alt="image" width="402" height="331" border="0" /></a></p>
<h3>Teradata</h3>
<p>Teradata提供了免费的 <a href="http://developer.teradata.com/applications/articles/in-database-analytics-with-teradata-r">teradataR</a> 包，用于在R环境下连接Teradata数据库、创建数据、条用in-database分析函数。</p>
<ul>
<li>避免了从Tetadata到R之间的数据移动，有效提高了数据运算性能；</li>
<li>针对于大数据的分析任务，使用Teradata的强大并行计算的能力 ；</li>
<li>允许在R控制台操作；</li>
<li>将常用的执行任务嵌入到数据库中执行；</li>
<li>R和TetadataR都是免费的；</li>
</ul>
<h3><a href="http://www.sybase.com/products/financialservicessolutions/rap-thetradingedition?htab=Overview&amp;vtab=Editions&amp;hid=79970&amp;vid=102506">Sybase RAP</a></h3>
<p>Sybase RAP主要是针对于金融市场的实时分析，其中RAPStore组件提供了内置分析函数，包括时间序列分析函数、OLAP函数、R语言整合函数以及用户自定义函数，适用于大数据环境。</p>
<p>其调用R函数的机理如下：</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/04/image4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.bjt.name/wp-content/uploads/2012/04/image_thumb4.png" alt="image" width="541" height="221" border="0" /></a></p>
<p>同时，还可以在R语言环境下通过RJDBC访问Sybase RAP，进行数据预处理，避免在R中数据清洗占用大量内存。</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/04/image5.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.bjt.name/wp-content/uploads/2012/04/image_thumb5.png" alt="image" width="543" height="159" border="0" /></a></p>
<p>&lt;全文完，请期待R + Hadoop&gt;<br />
<h3 class='related_post_title'>相关文章：</h3>
<ul class='related_post'>
<li><a href='http://www.bjt.name/2011/03/ibm-netezza-revolution/' title='简讯： IBM Netezza 联姻 R 语言商业公司 Revolution'>简讯： IBM Netezza 联姻 R 语言商业公司 Revolution</a></li>
<li><a href='http://www.bjt.name/2011/08/r-and-sql-datamining/' title='数据挖掘之R与SQL'>数据挖掘之R与SQL</a></li>
<li><a href='http://www.bjt.name/2010/06/oracle-data-mining-r/' title='Oracle数据库开始支持R语言'>Oracle数据库开始支持R语言</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bjt.name/2012/04/r-language-enterprise/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>R语言环境下的文本挖掘</title>
		<link>http://www.bjt.name/2012/03/text-mining-in-r/</link>
		<comments>http://www.bjt.name/2012/03/text-mining-in-r/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 15:44:56 +0000</pubDate>
		<dc:creator>刘思喆</dc:creator>
				<category><![CDATA[数据挖掘]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[lda]]></category>
		<category><![CDATA[lsa]]></category>
		<category><![CDATA[text mining]]></category>
		<category><![CDATA[tm]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.bjt.name/?p=10929</guid>
		<description><![CDATA[上一篇文章说道最近我在做文本挖掘方面的一些工作，到今天为止暂告一段落。刚好也整理了一份针对中文的《R语言环境下的文本挖掘》，供感兴趣的童鞋参考（见文章底部）。 自然语言处理（Nature Language Process）是一个非常让人着迷的领域，应用范围非常广泛，比如去年人机大战中大出风头的IBM Watson，iPhone 4S的语音助理模块Siri，以及针对于社会热点的舆情分析，这些应用都使用了自然语言处理技术。当然，统计背景的分析类科研人员更关注于舆情分析这类的文本挖掘技术。 很多统计软件都提供了文本挖掘的功能，比如常见的数据分析软件SAS、SPSS等，下图是文本挖掘工具及特性的一个总结（来自于Journal of Statistical Software 2008） Preprocess：数据准备、导入、清洗以及一般性的预处理； Associate：关联分析，根据同时出现的频率找出关联规则； Cluster：将相似的文档（词条）进行聚类； Categorize：将文本划分到预先定义的类别里； API：可扩展的应用编程接口 至少在2008年，商业和开源软件的功能特性差不多（但我不确认Latent Semantic Analysis、Latent Dirichlet Allocation这类的模型是否支持），只是由于众所周知的缘故，对于API的扩展支持有所差异。 对于中文环境下的文本挖掘，无外乎要解决如下几个问题： 较为精确的中文分词（可能还需要支持个性化题库，甚至词性分析）； 生成词条-文档矩阵，甚至矩阵的运算； 后续的挖掘算法支撑（传统的以及语义类的） 其他 在R语言环境下，有众多的包支撑解决上述问题。Ingo Feinerer开发维护的tm包提供了完整的文本挖掘的框架，借助辅助工具及R包，甚至还可以处理word、pdf文档的读入，文档处理并行化运算，文件数据库的语料处理等问题。 闲话不多说，最下面链接给出了一份基于《Introduction to the tm Package》整理的，基于tm包的中文文本挖掘的介绍性文档，内容包含 互联网网页处理：XML包的简介 中文分词 tm包的完整介绍：读写、语料库构建、过滤、转化、元数据、文档-词条矩阵等 文本挖掘技术及应用等 当然，作为非正式发布文档还有很多地方不尽完善，后续可能会有较大更新，请关注博客上的to do list。 文档下载：R语言环境下的文本挖掘 相关文章： 最近在整理文本挖掘]]></description>
			<content:encoded><![CDATA[<p>上一篇文章说道最近我在做文本挖掘方面的一些工作，到今天为止暂告一段落。刚好也整理了一份针对中文的《R语言环境下的文本挖掘》，供感兴趣的童鞋参考（见文章底部）。</p>
<p>自然语言处理（Nature Language Process）是一个非常让人着迷的领域，应用范围非常广泛，比如去年人机大战中大出风头的IBM Watson，iPhone 4S的语音助理模块Siri，以及针对于社会热点的舆情分析，这些应用都使用了自然语言处理技术。当然，统计背景的分析类科研人员更关注于舆情分析这类的文本挖掘技术。</p>
<p>很多统计软件都提供了文本挖掘的功能，比如常见的数据分析软件SAS、SPSS等，下图是文本挖掘工具及特性的一个总结（来自于Journal of Statistical Software 2008）</p>
<p><a href="http://www.bjt.name/wp-content/uploads/2012/03/tools.png"><img class="aligncenter size-large wp-image-10930" title="tools" src="http://www.bjt.name/wp-content/uploads/2012/03/tools-785x404.png" alt="" width="695" height="357" /></a></p>
<ul>
<li>Preprocess：数据准备、导入、清洗以及一般性的预处理；</li>
<li>Associate：关联分析，根据同时出现的频率找出关联规则；</li>
<li>Cluster：将相似的文档（词条）进行聚类；</li>
<li>Categorize：将文本划分到预先定义的类别里；</li>
<li>API：可扩展的应用编程接口</li>
</ul>
<p>至少在2008年，商业和开源软件的功能特性差不多（但我不确认Latent Semantic Analysis、Latent Dirichlet Allocation这类的模型是否支持），只是由于众所周知的缘故，对于API的扩展支持有所差异。</p>
<p>对于中文环境下的文本挖掘，无外乎要解决如下几个问题：</p>
<ul>
<li>较为精确的中文分词（可能还需要支持个性化题库，甚至词性分析）；</li>
<li>生成词条-文档矩阵，甚至矩阵的运算；</li>
<li>后续的挖掘算法支撑（传统的以及语义类的）</li>
<li>其他</li>
</ul>
<p>在R语言环境下，有众多的包支撑解决上述问题。Ingo Feinerer开发维护的<a href="http://ftp.ctex.org/mirrors/CRAN/web/packages/tm/index.html" target="_blank">tm</a>包提供了完整的文本挖掘的框架，借助辅助工具及R包，甚至还可以处理word、pdf文档的读入，文档处理并行化运算，文件数据库的语料处理等问题。</p>
<p>闲话不多说，最下面链接给出了一份基于《Introduction to the tm Package》整理的，基于tm包的中文文本挖掘的介绍性文档，内容包含</p>
<ul>
<li>互联网网页处理：XML包的简介</li>
<li>中文分词</li>
<li>tm包的完整介绍：读写、语料库构建、过滤、转化、元数据、文档-词条矩阵等</li>
<li>文本挖掘技术及应用等</li>
</ul>
<p>当然，作为非正式发布文档还有很多地方不尽完善，后续可能会有较大更新，请关注博客上的to do list。</p>
<p>文档下载：<a href="http://www.bjt.name/wp-content/uploads/2012/03/Text-Mining-in-R.pdf" target="_blank">R语言环境下的文本挖掘</a></p>
<p style="text-align: center;">
<h3 class='related_post_title'>相关文章：</h3>
<ul class='related_post'>
<li><a href='http://www.bjt.name/2012/02/text-mining/' title='最近在整理文本挖掘'>最近在整理文本挖掘</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bjt.name/2012/03/text-mining-in-r/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>

