<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>from __future__ import dream</title>
	
	<link>http://freesearch.pe.kr</link>
	<description>당신의 나의 뜨거운 감자!</description>
	<lastBuildDate>Tue, 31 Jan 2012 01:34:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/gogamza" /><feedburner:info uri="gogamza" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>R Hangul toy speller</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/mRS8gAev8yo/2712</link>
		<comments>http://freesearch.pe.kr/archives/2712#comments</comments>
		<pubDate>Thu, 19 Jan 2012 15:17:48 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[개발]]></category>
		<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[R]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/?p=2712</guid>
		<description><![CDATA[이래저래 1시간 정도 걸려서 toy 한글 스펠러를 만들어 봤다. 약 50줄정도 되는 아주 간단한 코드로 만들어 본건데, KoNLP의 두가지 핵심 함수를 사용하고 KoNLP 패키지에 포함된 한나눔 분석기 시스템 사전을 활용했다. 다른 핵심 함수로 Edit Distance 계산을 위한 함수가 있는데, 이것은 직접 구현을 하려다가 R cba 패키지에 너무 구현이 잘 된 함수가 있어서 그것을 사용했다. 이 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/xR_dc1OgzBctC405MRSwzyUn4f4/0/da"><img src="http://feedads.g.doubleclick.net/~a/xR_dc1OgzBctC405MRSwzyUn4f4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xR_dc1OgzBctC405MRSwzyUn4f4/1/da"><img src="http://feedads.g.doubleclick.net/~a/xR_dc1OgzBctC405MRSwzyUn4f4/1/di" border="0" ismap="true"></img></a></p><p>이래저래 1시간 정도 걸려서 toy 한글 스펠러를 만들어 봤다. 약 50줄정도 되는 아주 간단한 코드로 만들어 본건데, <a href="http://cran.r-project.org/web/packages/KoNLP/index.html">KoNLP</a>의 두가지 핵심 함수를 사용하고 KoNLP 패키지에 포함된 <a href="http://semanticweb.kaist.ac.kr/home/index.php/HanNanum">한나눔 분석기</a> 시스템 사전을 활용했다. </p>
<p>다른 핵심 함수로 <a href="http://en.wikipedia.org/wiki/Levenshtein_distance">Edit Distance</a> 계산을 위한 함수가 있는데, 이것은 직접 구현을 하려다가 <a href="http://cran.r-project.org/web/packages/cba/index.html">R cba 패키지</a>에 너무 구현이 잘 된 함수가 있어서 그것을 사용했다. 이 함수의 아주 큰 특장점은 모든 키 쌍에 대한 입력,삭제, 교체 연산 비용을 matrix로 입력할 수 있다는 것이다. </p>
<p>이렇게 모든 준비가 완료되니 50여줄 만으로 한글 스펠러를 만들 수 있었다.</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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</pre></td><td class="code"><pre class="rsplus" style="font-family:monospace;"><span style="color: #0000FF; font-weight: bold;">setwd</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;c:/work/spellerR/&quot;</span><span style="color: #080;">&#41;</span>
<span style="color: #0000FF; font-weight: bold;">library</span><span style="color: #080;">&#40;</span>KoNLP<span style="color: #080;">&#41;</span>
<span style="color: #0000FF; font-weight: bold;">library</span><span style="color: #080;">&#40;</span>cba<span style="color: #080;">&#41;</span>
&nbsp;
dicPath <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">paste</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">system.<span style="">file</span></span><span style="color: #080;">&#40;</span>package<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;KoNLP&quot;</span><span style="color: #080;">&#41;</span>, <span style="color: #ff0000;">&quot;/dics/data/kE/dic_system.txt&quot;</span>,sep<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #080;">&#41;</span>
userdicPath <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">paste</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">system.<span style="">file</span></span><span style="color: #080;">&#40;</span>package<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;KoNLP&quot;</span><span style="color: #080;">&#41;</span>, <span style="color: #ff0000;">&quot;/dics/data/kE/dic_user.txt&quot;</span>,sep<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #080;">&#41;</span>
&nbsp;
fp <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">file</span><span style="color: #080;">&#40;</span>dicPath, encoding<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #080;">&#41;</span>
sdicLine <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">readLines</span><span style="color: #080;">&#40;</span>fp<span style="color: #080;">&#41;</span>
<span style="color: #0000FF; font-weight: bold;">close</span><span style="color: #080;">&#40;</span>fp<span style="color: #080;">&#41;</span>
&nbsp;
fp <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">file</span><span style="color: #080;">&#40;</span>userdicPath, encoding<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #080;">&#41;</span>
udicLine <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">readLines</span><span style="color: #080;">&#40;</span>fp<span style="color: #080;">&#41;</span>
<span style="color: #0000FF; font-weight: bold;">close</span><span style="color: #080;">&#40;</span>fp<span style="color: #080;">&#41;</span>
dicLine <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">append</span><span style="color: #080;">&#40;</span>sdicLine, udicLine<span style="color: #080;">&#41;</span>
&nbsp;
hcorpus <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">sapply</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">strsplit</span><span style="color: #080;">&#40;</span>dicLine, <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #080;">&#41;</span>,<span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>
   <span style="color: #080;">&#123;</span> <span style="color: #0000FF; font-weight: bold;">paste</span><span style="color: #080;">&#40;</span>convertHangulStringToJamos<span style="color: #080;">&#40;</span>x<span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>, collapse<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#125;</span> <span style="color: #080;">&#41;</span>
&nbsp;
<span style="color: #0000FF; font-weight: bold;">rm</span><span style="color: #080;">&#40;</span>dicLine<span style="color: #080;">&#41;</span>
<span style="color: #0000FF; font-weight: bold;">rm</span><span style="color: #080;">&#40;</span>udicLine<span style="color: #080;">&#41;</span>
<span style="color: #0000FF; font-weight: bold;">rm</span><span style="color: #080;">&#40;</span>sdicLine<span style="color: #080;">&#41;</span>
&nbsp;
&nbsp;
candidatesRough <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>word, dic<span style="color: #080;">&#41;</span><span style="color: #080;">&#123;</span>
  wjamo <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">paste</span><span style="color: #080;">&#40;</span>convertHangulStringToJamos<span style="color: #080;">&#40;</span>word<span style="color: #080;">&#41;</span>, collapse<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #080;">&#41;</span>
  wl <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">nchar</span><span style="color: #080;">&#40;</span>wjamo<span style="color: #080;">&#41;</span>
  wf <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">substr</span><span style="color: #080;">&#40;</span>wjamo, <span style="color: #ff0000;">1</span>,<span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span>
  <span style="color: #228B22;">#Huristic filtering </span>
  candidates <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">Filter</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>cand<span style="color: #080;">&#41;</span><span style="color: #080;">&#123;</span>
                   <span style="color: #0000FF; font-weight: bold;">if</span><span style="color: #080;">&#40;</span>wl <span style="color: #080;">-</span> <span style="color: #ff0000;">1</span> <span style="color: #080;">&lt;=</span> <span style="color: #0000FF; font-weight: bold;">nchar</span><span style="color: #080;">&#40;</span>cand<span style="color: #080;">&#41;</span> <span style="color: #080;">&amp;&amp;</span> <span style="color: #0000FF; font-weight: bold;">nchar</span><span style="color: #080;">&#40;</span>cand<span style="color: #080;">&#41;</span> <span style="color: #080;">&lt;=</span> wl <span style="color: #080;">+</span> <span style="color: #ff0000;">1</span> <span style="color: #080;">&amp;&amp;</span> 
                     <span style="color: #0000FF; font-weight: bold;">substr</span><span style="color: #080;">&#40;</span>cand,<span style="color: #ff0000;">1</span>,<span style="color: #ff0000;">1</span><span style="color: #080;">&#41;</span> <span style="color: #080;">==</span> wf<span style="color: #080;">&#41;</span><span style="color: #080;">&#123;</span>
                     <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span>TRUE<span style="color: #080;">&#41;</span>
                   <span style="color: #080;">&#125;</span><span style="color: #0000FF; font-weight: bold;">else</span><span style="color: #080;">&#123;</span>
                     <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span>FALSE<span style="color: #080;">&#41;</span>
                   <span style="color: #080;">&#125;</span>
              <span style="color: #080;">&#125;</span>, dic<span style="color: #080;">&#41;</span>
  <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span>candidates<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#125;</span>
&nbsp;
finalSugg <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>word, candidates<span style="color: #080;">&#41;</span><span style="color: #080;">&#123;</span>
  jamos <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">paste</span><span style="color: #080;">&#40;</span>convertHangulStringToJamos<span style="color: #080;">&#40;</span>word<span style="color: #080;">&#41;</span>, collapse<span style="color: #080;">=</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #080;">&#41;</span>
  editscores <span style="color: #080;">&lt;-</span> sdists<span style="color: #080;">&#40;</span>jamos, candidates<span style="color: #080;">&#41;</span><span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span>,<span style="color: #080;">&#93;</span>
  topscoreidx <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">order</span><span style="color: #080;">&#40;</span>editscores, decreasing<span style="color: #080;">=</span><span style="color: #0000FF; font-weight: bold;">F</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span>
  <span style="color: #0000FF; font-weight: bold;">if</span><span style="color: #080;">&#40;</span>editscores<span style="color: #080;">&#91;</span>topscoreidx<span style="color: #080;">&#93;</span> <span style="color: #080;">&lt;=</span> <span style="color: #ff0000;">2</span> <span style="color: #080;">&amp;&amp;</span> editscores<span style="color: #080;">&#91;</span>topscoreidx<span style="color: #080;">&#93;</span> <span style="color: #080;">&gt;</span> <span style="color: #ff0000;">0</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#123;</span>
    <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">paste</span><span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;Do you mean? &quot;</span>, HangulAutomata<span style="color: #080;">&#40;</span>candidates<span style="color: #080;">&#91;</span>topscoreidx<span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>
  <span style="color: #080;">&#125;</span>
  <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span>word<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
HangulSpellingSugg <span style="color: #080;">&lt;-</span> <span style="color: #0000FF; font-weight: bold;">function</span><span style="color: #080;">&#40;</span>word, corpus<span style="color: #080;">&#41;</span><span style="color: #080;">&#123;</span>
  <span style="color: #228B22;">#first phase</span>
  candidates <span style="color: #080;">&lt;-</span> candidatesRough<span style="color: #080;">&#40;</span>word,corpus<span style="color: #080;">&#41;</span>
  <span style="color: #0000FF; font-weight: bold;">if</span><span style="color: #080;">&#40;</span><span style="color: #0000FF; font-weight: bold;">length</span><span style="color: #080;">&#40;</span>candidates<span style="color: #080;">&#41;</span> <span style="color: #080;">==</span> <span style="color: #ff0000;">0</span><span style="color: #080;">&#41;</span> <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span>word<span style="color: #080;">&#41;</span>
  <span style="color: #228B22;">#second phase</span>
  <span style="color: #0000FF; font-weight: bold;">return</span><span style="color: #080;">&#40;</span>finalSugg<span style="color: #080;">&#40;</span>word, candidates<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>
<span style="color: #080;">&#125;</span></pre></td></tr></table></div>

<p>초반에 한나눔 분석기 시스템 사전과 사용자 사전을 로딩해서 자모로 변환을 모두 하게 된다. 물론 미리 자모로 변환된 사전을 구비해 놓으면 더 편할 것이다. </p>
<p>그리고 입력된 단어에 대해서 단어 추천 후보가 될만한 것들을 1차적으로 추리게 되고 2차에서는 이들 후보들에 대한 좀더 세밀한 진단을 하기 위해 edit distance를 기반으로 한 연산을 수행한다. 사실 edit distance계산이 O(n * m)의 복잡도를 가지기 때문에 모든 사전 데이터에 대해서 수행하는건 사용성 측면에서 바람직하지 못해서 첫번째 과정에서 1차적인 필터링을 하는것이다. </p>
<p>이를 수행하기 위해서 여러 휴리스틱한 숫자를 사용한다. 첫번째 필터링에서 그리고 두번째 추천에서 편집 거리를 어느 숫자 내의 것을 “do you mean?” 으로 할지 그런 것들에 대한 판단이 필요한데, 이런 부분에서 기계학습 모델링이 필요하다. 그리고 sdists 함수에서 편집 연산의 연산 비용을 정해서 넣어줄 수 있는데 이 역시 데이터를 기반으로 모델링 해야 되는 부분이다. </p>
<p>이것의 수행 결과는 아래와 같다. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="rsplus" style="font-family:monospace;"><span style="color: #080;">&gt;</span> HangulSpellingSugg<span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;고감자&quot;</span>, hcorpus<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span> <span style="color: #ff0000;">&quot;Do you mean?  고금자&quot;</span>
<span style="color: #080;">&gt;</span> HangulSpellingSugg<span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;고스돕&quot;</span>, hcorpus<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span> <span style="color: #ff0000;">&quot;Do you mean?  고스톱&quot;</span>
<span style="color: #080;">&gt;</span> HangulSpellingSugg<span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;문뻠&quot;</span>, hcorpus<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span> <span style="color: #ff0000;">&quot;Do you mean?  문범&quot;</span>
<span style="color: #080;">&gt;</span> HangulSpellingSugg<span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;내이버&quot;</span>, hcorpus<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span> <span style="color: #ff0000;">&quot;Do you mean?  네이버&quot;</span>
<span style="color: #080;">&gt;</span> HangulSpellingSugg<span style="color: #080;">&#40;</span><span style="color: #ff0000;">&quot;디음&quot;</span>, hcorpus<span style="color: #080;">&#41;</span>
<span style="color: #080;">&#91;</span><span style="color: #ff0000;">1</span><span style="color: #080;">&#93;</span> <span style="color: #ff0000;">&quot;Do you mean?  다음&quot;</span></pre></td></tr></table></div>

<p>더 많은 사전 단어들 그리고 단어의 빈도 혹은 중요도 정보가 있다면 더 정확한 추천이 가능할 것이고, 사용자들이 틀린 단어의 쌍을 안다면 입력, 삭제, 교체 비용에 대한 아주 합리적인 계산이 가능할 것이다. 한마디로 이 스펠러는 데이터가 많아진다면 점점 똑똑해 진다는 것이다. </p>
<p>특정 단어에 대해서 정확한 추천을 하고 싶다면 그 단어 정보를 사전에 추가하는 것만으로 다양한 케이스의 오타에 대한 추천이 가능해 진다.&#160;&#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2712/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2712</feedburner:origLink></item>
		<item>
		<title>Pagerank on R cran packages</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/7oEXf3zHkFQ/2705</link>
		<comments>http://freesearch.pe.kr/archives/2705#comments</comments>
		<pubDate>Thu, 12 Jan 2012 22:07:46 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[개발]]></category>
		<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[rbloggers]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/?p=2705</guid>
		<description><![CDATA[I’d been testing with R and Python what the page rank score on each R packages. Firstly, I need to scrape all package description pages and then parsing section “Depends”, “Imports”, “Reverse Depends” to know relation between packages. I was using Python with scrapemark for convenient. &#160; This is “scrape.py”(no code optimization for easy understanding). [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/mP7LnMSrOj0t51cTUqEELydTry4/0/da"><img src="http://feedads.g.doubleclick.net/~a/mP7LnMSrOj0t51cTUqEELydTry4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mP7LnMSrOj0t51cTUqEELydTry4/1/da"><img src="http://feedads.g.doubleclick.net/~a/mP7LnMSrOj0t51cTUqEELydTry4/1/di" border="0" ismap="true"></img></a></p><p>I’d been testing with R and Python what the page rank score on each R packages.</p>
<p>Firstly, I need to scrape all package description pages and then parsing section “Depends”, “Imports”, “Reverse Depends” to know relation between packages. I was using Python with <a href="http://arshaw.com/scrapemark/">scrapemark</a> for convenient.</p>
<p>&#160;</p>
<p>This is “scrape.py”(no code optimization for easy understanding).</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:c1ac18f0-1ed0-4d51-8fdb-6ae2088240e2" class="wlWriterEditableSmartContent">
<pre class="brush: python;">#coding=utf-8 

from scrapemark import scrape
from urlparse import urljoin
import urllib2

indexpage = "http://cran.r-project.org/web/packages/available_packages_by_date.html"

def mainpage(url):
    ret = scrape("""
        &lt;table border="1" summary="Available CRAN packages by date."&gt;
        &lt;tr&gt; &lt;th align="left"&gt; Date &lt;/th&gt; &lt;th align="left"&gt; Package &lt;/th&gt; &lt;th align="left"&gt; Title &lt;/th&gt; &lt;/tr&gt;
        {*
            &lt;tr&gt;
            &lt;td&gt;{{ [date] }}&lt;/td&gt;&lt;td&gt;&lt;a href=' {{ [pkglinks] }}'&gt; {{ [pkgname] }}&lt;/a&gt;&lt;/td&gt;&lt;td&gt;{{ [Title] }}&lt;/td&gt;
        &lt;/tr&gt;
        *}
           &lt;/table&gt;
        """,
        url=url)
    return ret

def getDepRedep(pkglink):
    html = urllib2.urlopen(pkglink).read()
    imps = scrape("""
    &lt;table summary=''&gt;
    {*
        &lt;tr&gt;&lt;td valign=top&gt;Imports:&lt;/td&gt;
        &lt;td&gt;{* &lt;a &gt;{{ [imps] }}&lt;/a&gt; *}&lt;/td&gt;
        &lt;/tr&gt;
     *}
    &lt;/table&gt;
    """, html)
    deps = scrape("""
    &lt;table summary=''&gt;
    {*
        &lt;tr&gt;&lt;td valign=top&gt;Depends:&lt;/td&gt;
        &lt;td&gt;{* &lt;a&gt;{{ [deps] }}&lt;/a&gt; *}&lt;/td&gt;
        &lt;/tr&gt;
     *}
    &lt;/table&gt;
    """, html)
    revdeps = scrape("""
    &lt;h4&gt;Reverse dependencies:&lt;/h4&gt;
    &lt;table summary=""&gt;
    {*
        &lt;tr&gt;&lt;td valign=top&gt;Reverse&amp;nbsp;depends:&lt;/td&gt;
        &lt;td&gt;{* &lt;a&gt;{{ [revdeps] }}&lt;/a&gt; *}&lt;/td&gt;
        &lt;/tr&gt;
    *}
    &lt;/table&gt;
    """, html)
    return [imps, deps, revdeps]

if __name__ == "__main__":
    import sys
    pkgdic = mainpage(indexpage)
    pkglinks = map(lambda l:urljoin(indexpage, l),  pkgdic["pkglinks"])
    pkgnames = pkgdic["pkgname"]
    pkginfos = dict([(pkglinks[i],pkgnames[i] ) for i in range(0, len(pkgnames) - 1, 1)])
    for link, name in pkginfos.items():
        ret = getDepRedep(link)
        if ret[0] != None:
            for imp in ret[0]["imps"]:
                sys.stdout.write("%s\t%s\n" % (name, imp))
        if ret[1] != None:
            for deps in ret[1]["deps"]:
                sys.stdout.write("%s\t%s\n" % (name, deps))
        if ret[2] != None:
            for revdeps in ret[2]["revdeps"]:
                sys.stdout.write("%s\t%s\n" % (revdeps, name))
        </pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Just execute “python scrape.py &gt; resultfile.txt”. “result.txt” will contain edge list of R cran packages.&#160; </p>
<p>&#160;</p>
<p>This edge list will be easily used by most of SNA package. In my case, <a href="http://cran.r-project.org/web/packages/igraph/index.html">igraph</a>. </p>
<p>R code.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:bda927ef-8763-4199-b8dd-4a3e8515779b" class="wlWriterEditableSmartContent">
<pre class="brush: scala;">library(igraph)

g &lt;- graph.edgelist(
  matrix(
    scan(file="resultfile.txt",what=character(0), sep="\t"),
  ncol=2))

pr &lt;- data.frame(pkg=as.vector(V(g)$name), pkgindex=as.vector(V(g)),pagerank=page.rank(g)$vector)
pr&lt;- pr[order(pr$pagerank, decreasing=T),]
head(pr, n=30)</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<p>“head” results will be shown like below.</p>
<p>&#160;</p>
<blockquote>
<pre>            pkg pkgindex    pagerank
105        MASS      104 0.044617865
115     mvtnorm      114 0.014133438
168      Matrix      167 0.011896352
79      lattice       78 0.009421894
604       rJava      603 0.008692808
4      survival        3 0.008073552
595       Hmisc      594 0.006965379
490        nlme      489 0.006819586
256        lme4      255 0.006506075
339       e1071      338 0.006162781
457         XML      456 0.006084811
18          car       17 0.004911839
574       abind      573 0.004501252
809    sandwich      808 0.004372066
464       TSdbi      463 0.004189485
113    multcomp      112 0.004094053
22      cluster       21 0.003680852
350        mgcv      349 0.003574597
505      fields      504 0.003455358
463         zoo      462 0.003405279
196    maptools      195 0.002977273
397        Rcpp      396 0.002874943
721      digest      720 0.002849751
1097    esd4all     1096 0.002843424
847  pairwiseCI      846 0.002814689
1279    foreach     1278 0.002803063
997  KernSmooth      996 0.002791697
61        rgdal       60 0.002784822
748         pls      747 0.002768121
1154      akima     1153 0.002742152</pre>
</blockquote>
<p>In a R package world, MASS is most valuable package. It means, MASS is used by other valuable packages most frequently. </p>
<p>It will be good to try to plot SNA graph with R packages edge list. But, I expect, too many vertex will consume all spaces. Better plot with SNA components.&#160;&#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2705/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2705</feedburner:origLink></item>
		<item>
		<title>새해 첫 포스팅</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/feG97QXOBls/2700</link>
		<comments>http://freesearch.pe.kr/archives/2700#comments</comments>
		<pubDate>Sun, 08 Jan 2012 13:22:57 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[일상]]></category>
		<category><![CDATA[새해 계획]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/?p=2700</guid>
		<description><![CDATA[작년 한해는 둘째가 태어났으며, 달라진 생활 패턴과 새로운 직장 그리고 공부간의 균형을 어떻게든 이뤄 보려고 발버둥 쳤던 한해 였던거 같다. 그래서 나온 결론은 “가능하다!” 이다. 그러기 위해서는 선결 조건이 있는데, 바로 건강과 체력이다. 이 두 가지 혹은 ‘건강’ 하나가 완비 되지 못하면 위와 같은 생활 패턴은 유지할 수 조차 없다. 작년 한해 학문적으로는 그동안의 데이터 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/dO5ONndQsvzQQk6240lG-T2-I5I/0/da"><img src="http://feedads.g.doubleclick.net/~a/dO5ONndQsvzQQk6240lG-T2-I5I/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dO5ONndQsvzQQk6240lG-T2-I5I/1/da"><img src="http://feedads.g.doubleclick.net/~a/dO5ONndQsvzQQk6240lG-T2-I5I/1/di" border="0" ismap="true"></img></a></p><p>작년 한해는 둘째가 태어났으며, 달라진 생활 패턴과 새로운 직장 그리고 공부간의 균형을 어떻게든 이뤄 보려고 발버둥 쳤던 한해 였던거 같다. 그래서 나온 결론은 “가능하다!” 이다. </p>
<p>그러기 위해서는 선결 조건이 있는데, 바로 건강과 체력이다. 이 두 가지 혹은 ‘건강’ 하나가 완비 되지 못하면 위와 같은 생활 패턴은 유지할 수 조차 없다. </p>
<p>작년 한해 학문적으로는 그동안의 데이터 마이닝, 기계학습의 지식에 통계학을 결합하게 된 게 아주 큰 수확이였던거 같다. 사실 데이터 마이닝, 기계학습 중간 중간 통계학적인 지식을 요하는 부분이 상당히 많이 있었는데, 이들에 대한 이해를 위해 충분한 준비운동을 충분히 한것 같다는 생각을 해본다. 연말이 되면서 그리고 성적이 나오고 공부를 하며 느낀 점은 공부의 열정만 있으면 공부할 수 있는 기회는 얼마든지 있다는 생각이 들었다. 돈이 없어서… 시간이 없어서 공부를 못한다는 사람들을 앞으로 다시 만난다면 그건 변명이라고 아주 확실하게 판단할 수 있을 거 같다는 생각을 해본다. </p>
<p>앞으로 1년, 2012년은 역시 공부의 목적은 실무에서의 활용이며, 데이터를 이해 하기 위한 언어(통계학)를 공부하는데 심혈을 기울일 예정이다. 애 둘에다가 없는 시간에 욕심을 내고 싶은 생각은 없다. 단지 주어지는 이번 과목들을 충실히 마스터할 생각이다. </p>
<p>두 번째 목적은 건강을 위한 좋은 습관 하나를 가질 예정이다. 아마 구정때까지는 이게 무엇이 될지 고민을 해야 될 듯 하다. </p>
<p>세 번째 목적은 1년 정도 미뤄 두었던 한글 스펠체커 관련 새로운 리서치를 해보는 것이다. 작년 이맘때 루씬 스펠체커를 만드는 게 목적이기도 하였고, 실제 대부분의 코드를 만들어 두었지만 루씬 소스코드에 의존하게 되면서 너무 자주 변하는 API 덕분에 문제가 좀 있었다. 그래서 작년 말에 <a href="http://cran.r-project.org/web/packages/KoNLP/index.html">KoNLP</a>라는 R 패키지를 자바 코드와 인터페이싱해서 만들었고 이를 기반으로 실제 리서치 가능하고 실용적인 스펠체커를 구성해 볼 생각이다. 실제 이 패키지 내에 있는 형태소 분석기 사전이 있어서 상당히 간단히 구현을 해볼 수 있을거라는 생각을 해보지만 역시 스펠체커는 데이터가 가장 중요한 요소라서 그 부분에서 데이터를 어떻게 더 구할 수 있을지가 리서치 성공의 요인이 될 듯 하다.&#160;&#160; </p>
<p>아무튼 올해가 어김없이 찾아왔고, 계획을 세워 보았다. 매년 새해엔 계획을 지킬 수 있을까 없을까 고민했으나 항상 만족하는 연말을 맞아 왔던거 같다. 올해도 그럴꺼라 믿어 의심치 않는다. </p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2700/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2700</feedburner:origLink></item>
		<item>
		<title>KoNLP 한글 오토마타 모듈</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/L4ryGP3v_vw/2696</link>
		<comments>http://freesearch.pe.kr/archives/2696#comments</comments>
		<pubDate>Fri, 30 Dec 2011 16:12:45 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[개발]]></category>
		<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[KoNLP]]></category>
		<category><![CDATA[R]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/?p=2696</guid>
		<description><![CDATA[&#160; 아직 github에 정박중인 코드이지만 오늘 빡시게 작업해서 한글 오토마타 모듈 넣었다.&#160; 자바 코드를 객체지향적으로 만들었는데 덕분에 의외로 R에서 코드가 간단해 졌다. 좀더 테스트 해보고 새해 기념으로 cran에 submit 해야겠다. 이젠 아래와 같은 짓들도 가능해졌다. &#160; &#62; str &#60;- convertHangulStringToJamos(&#34;배포 조건의 상세한것에 대해서는 'license()' 또는 'licence()' 라고 입력해주십시오&#34;) &#62; str2 &#60;-paste(str, collapse=&#34;&#34;) &#62; str2 [1] [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/14XoBmMXpfbaJOY0E6f_hk2MiuQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/14XoBmMXpfbaJOY0E6f_hk2MiuQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/14XoBmMXpfbaJOY0E6f_hk2MiuQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/14XoBmMXpfbaJOY0E6f_hk2MiuQ/1/di" border="0" ismap="true"></img></a></p><p><a href="http://freesearch.pe.kr/wp-content/uploads/konlp.png"><img style="background-image: none; border-right-width: 0px; margin: 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="konlp" border="0" alt="konlp" src="http://freesearch.pe.kr/wp-content/uploads/konlp_thumb.jpg" width="551" height="510" /></a></p>
<p>&#160;</p>
<p>아직 <a href="https://github.com/haven-jeon/KoNLP">github</a>에 정박중인 코드이지만 오늘 빡시게 작업해서 한글 오토마타 모듈 넣었다.&#160; 자바 코드를 객체지향적으로 만들었는데 덕분에 의외로 R에서 코드가 간단해 졌다. </p>
<p>좀더 테스트 해보고 새해 기념으로 cran에 submit 해야겠다. </p>
<p>이젠 아래와 같은 짓들도 가능해졌다.</p>
<p>&#160;</p>
<pre class="csharpcode">&gt; str &lt;- convertHangulStringToJamos(<span class="str">&quot;배포 조건의 상세한것에 대해서는 'license()' 또는 'licence()' 라고 입력해주십시오&quot;</span>)
&gt; str2 &lt;-paste(str, collapse=<span class="str">&quot;&quot;</span>)
&gt; str2
[1] <span class="str">&quot;ㅂㅐㅍㅗ ㅈㅗㄱㅓㄴㅇㅢ ㅅㅏㅇㅅㅔㅎㅏㄴㄱㅓㅅㅇㅔ ㄷㅐㅎㅐㅅㅓㄴㅡㄴ 'license()' ㄸㅗㄴㅡㄴ 'licence()' ㄹㅏㄱㅗ ㅇㅣㅂㄹㅕㄱㅎㅐㅈㅜㅅㅣㅂㅅㅣㅇㅗ&quot;</span>
&gt; HangulAutomata(str2)
[1] <span class="str">&quot;배포 조건의 상세한것에 대해서는 'license()' 또는 'licence()' 라고 입력해주십시오&quot;</span></pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2696/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2696</feedburner:origLink></item>
		<item>
		<title>[집단지성 프로그래밍] 82page 표 3.6 계산 방법</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/jqakGaDw7MQ/2689</link>
		<comments>http://freesearch.pe.kr/archives/2689#comments</comments>
		<pubDate>Fri, 30 Dec 2011 07:46:46 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[번역]]></category>
		<category><![CDATA[집필]]></category>
		<category><![CDATA[CIIA]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/?p=2689</guid>
		<description><![CDATA[올해 마지막 번역서 질문이 와서 아예 블로그에 정리하고자 한다. 물론 내일 또 올수도 있겠지만 빈도를 볼때 마지막 일듯 하다. ^^; &#160; 일단 글과 태그간의 행렬(표3.2)이 계산되어 있고, 사람과 태그간의 행렬이 (표 3.5)에 계산되어 있다. 이들을 가지고 사람과 글간의 유사도 행렬을 계산한게 표3.6이다. 간단히 유사도는 벡터 유사도 방법으로 책에서 진행을 했고, 유사도 행렬을 계산을 간단히 하기 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/HUoSor1PlKGBT3L2mZUC3rlfmmw/0/da"><img src="http://feedads.g.doubleclick.net/~a/HUoSor1PlKGBT3L2mZUC3rlfmmw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/HUoSor1PlKGBT3L2mZUC3rlfmmw/1/da"><img src="http://feedads.g.doubleclick.net/~a/HUoSor1PlKGBT3L2mZUC3rlfmmw/1/di" border="0" ismap="true"></img></a></p><p>올해 마지막 번역서 질문이 와서 아예 블로그에 정리하고자 한다. 물론 내일 또 올수도 있겠지만 빈도를 볼때 마지막 일듯 하다. ^^; </p>
<p>&#160;</p>
<p>일단 글과 태그간의 행렬(표3.2)이 계산되어 있고, 사람과 태그간의 행렬이 (표 3.5)에 계산되어 있다. 이들을 가지고 사람과 글간의 유사도 행렬을 계산한게 표3.6이다. </p>
<p>간단히 유사도는 벡터 유사도 방법으로 책에서 진행을 했고, 유사도 행렬을 계산을 간단히 하기 위해 단순히 내적만으로 구할 수 있게끔 정규화까지 시켜놓은 상태이다. 이 상태에서 사람과 글간의 유사도 행렬을 구하기 위한 식은 아래와 같다. </p>
<p>(표 3.5) %*% t(표 3.2)</p>
<p>%*%는 행렬 곱을 의미하고 t는 전치행렬을 의미한다. </p>
<p><strong>이 행렬식의 의미는 사람의 속성을 태그로 표현한게 (표 3.5)이고 (표 3.2)는 글을 태그로 표현했다고 하는 이해가 필요하며, 결과적으로 태그로 표현된 사람과 태그로 표현된 글간의 유사도를 계산하는 식이라고 생각하면 된다. 결국 사람과 글의 직접적인 유사도 비교가 불가능하기 때문에 중간 매개체인 태그를 활용한거라 이해하면 된다.</strong> </p>
<p>이를 R코드로 풀어서 보여주면 아래와 같다. </p>
<pre class="csharpcode">&gt; namebytag &lt;- matrix(data=c(.3536, .7071,.3536,.3536,.3536,0,0,.5773,0,.5773,0,.5773), byrow=T, ncol=6)
&gt; namebytag
       [,1]   [,2]   [,3]   [,4]   [,5]   [,6]
[1,] 0.3536 0.7071 0.3536 0.3536 0.3536 0.0000
[2,] 0.0000 0.5773 0.0000 0.5773 0.0000 0.5773
&gt; articlebytag &lt;- matrix(data=c(.3578, .7156, .5367, .2683, 0, 0, 0,.4682,0,.7491,.4682,0,.0891,.3563,0,.2673,0,.891), byrow=T, ncol=6)
&gt; articlebytag
       [,1]   [,2]   [,3]   [,4]   [,5]  [,6]
[1,] 0.3578 0.7156 0.5367 0.2683 0.0000 0.000
[2,] 0.0000 0.4682 0.0000 0.7491 0.4682 0.000
[3,] 0.0891 0.3563 0.0000 0.2673 0.0000 0.891
&gt; t(articlebytag)
       [,1]   [,2]   [,3]
[1,] 0.3578 0.0000 0.0891
[2,] 0.7156 0.4682 0.3563
[3,] 0.5367 0.0000 0.0000
[4,] 0.2683 0.7491 0.2673
[5,] 0.0000 0.4682 0.0000
[6,] 0.0000 0.0000 0.8910
&gt; tagbyarticle &lt;- t(articlebytag)
&gt; namebytag %*% tagbyarticle
          [,1]      [,2]      [,3]
[1,] 0.9171668 0.7615015 0.3779628
[2,] 0.5680055 0.7027473 0.8743786</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>namebytag 행렬이 (표 3.5)이며, articlebytag가 (표 3.2)이다.</p>
<p>아래와 같이 (표 3.2)의 전치 행렬을 구하고 </p>
<p>tagbyarticle &lt;- t(articlebytag)</p>
<p>행렬곱을 수행할 결과가 </p>
<p>namebytag %*% tagbyarticle </p>
<p>(표 3.6)과 같음을 알 수 있다. </p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2689/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2689</feedburner:origLink></item>
		<item>
		<title>2011년도 2학기 정보 통계학과 성적 결과</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/-k0SeST2THw/2679</link>
		<comments>http://freesearch.pe.kr/archives/2679#comments</comments>
		<pubDate>Mon, 26 Dec 2011 05:11:20 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[일상]]></category>
		<category><![CDATA[방송대]]></category>
		<category><![CDATA[성적]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/?p=2679</guid>
		<description><![CDATA[2학기 시작하면서 2학기 공부 방법 및 계획에 대해서 많은 고민을 했었는데, 2학기 결과가 예상한 점수보다 0.33점 더 나왔다. &#160; &#160; &#160; 2학기 시작하면서 3.5 정도만 받자고 했고, 그에 따른 계획이 매일 한 과목 1시간씩 투자하는 것이였는데, 역시나 시간 투자한 과목 순으로 성적이 나왔다. 물론 데이터 마이닝은 이미 다 아는 내용이여서 advantage가 있어서 운이 좋았지만 이번에 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/RFBv07_xdy4Ba-hlI2qtrYhwFQk/0/da"><img src="http://feedads.g.doubleclick.net/~a/RFBv07_xdy4Ba-hlI2qtrYhwFQk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/RFBv07_xdy4Ba-hlI2qtrYhwFQk/1/da"><img src="http://feedads.g.doubleclick.net/~a/RFBv07_xdy4Ba-hlI2qtrYhwFQk/1/di" border="0" ismap="true"></img></a></p><p>2학기 시작하면서 <a href="http://freesearch.pe.kr/archives/2615">2학기 공부 방법 및 계획</a>에 대해서 많은 고민을 했었는데, 2학기 결과가 예상한 점수보다 0.33점 더 나왔다.</p>
<p>&#160;</p>
<p><a href="http://freesearch.pe.kr/wp-content/uploads/image12.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://freesearch.pe.kr/wp-content/uploads/image_thumb12.png" width="562" height="204" /></a></p>
<p>&#160;</p>
<p>&#160;</p>
<p>2학기 시작하면서 3.5 정도만 받자고 했고, 그에 따른 계획이 매일 한 과목 1시간씩 투자하는 것이였는데, 역시나 시간 투자한 과목 순으로 성적이 나왔다. 물론 데이터 마이닝은 이미 다 아는 내용이여서 advantage가 있어서 운이 좋았지만 이번에 책도 바뀌고 시험 경향도 좀 바뀌어서 다른 분들은 많이 당황하신 듯 하다.</p>
<p>2학기 내내 이 공부 빼놓고 일을 벌이지 않은게 참 잘한거라 생각한다. 성격이 집필이든 독서든 일단 들어오는 것을 다 받아서 하는 스타일이였는데, 딱 하나만 잡아서 하자고 계획했던게 적중한듯 하다.</p>
<p>아마도 이번 학기가 가장 힘든 학기 였을거라 예상해 본다. 애도 자주 아프고 게다가 입원도 하고 그러면서 매일 저녁 11시 이전에는 내 시간을 가져본 적이 거의 없었는데(그나마 11시 이전에 가질 수 있으면 다행이다),&#160; 이정도 공부한 나에게 칭찬해주고 싶다.</p>
<p>그리고 무엇보다 물심양면으로 지원해준 아내에게 고맙다고 말하고 싶다.</p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2679/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2679</feedburner:origLink></item>
		<item>
		<title>첫번째 R meetup 스크린캐스트</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/7zRMgV97dII/2672</link>
		<comments>http://freesearch.pe.kr/archives/2672#comments</comments>
		<pubDate>Tue, 20 Dec 2011 16:00:00 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[개발]]></category>
		<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[R meetup]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/archives/2672</guid>
		<description><![CDATA[2011.12.19일 R meetup 행사를 회사 카페에서 진행을 했었다. 약 20명 정도의 분들이 오셔서 아기자기 하게 모임을 가졌고, 첫번째 세션으로 cran.nexr.com 을 운영하면서 나온 아파치 로그를 분석하는 방법과 그 결과물을 공유 했었고, 나머지 15분 동안 KoNLP 패키지 소개를 했었다. LA R User group에서 했던 meetup 행사 동영상을 보면서 상당히 스크린캐스트가 재미 있다는 생각을 해보게 되서 직접 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/PoZCNBDmLOL1JaiQASm-pMCTasM/0/da"><img src="http://feedads.g.doubleclick.net/~a/PoZCNBDmLOL1JaiQASm-pMCTasM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PoZCNBDmLOL1JaiQASm-pMCTasM/1/da"><img src="http://feedads.g.doubleclick.net/~a/PoZCNBDmLOL1JaiQASm-pMCTasM/1/di" border="0" ismap="true"></img></a></p><p><a href="http://www.openstatistics.net/?page_id=1525">2011.12.19일 R meetup 행사</a>를 회사 카페에서 진행을 했었다. 약 20명 정도의 분들이 오셔서 아기자기 하게 모임을 가졌고, 첫번째 세션으로 cran.nexr.com 을 운영하면서 나온 아파치 로그를 분석하는 방법과 그 결과물을 공유 했었고, 나머지 15분 동안 <a href="http://cran.r-project.org/web/packages/KoNLP/index.html">KoNLP</a> 패키지 소개를 했었다. </p>
<p>LA R User group에서 했던 meetup 행사 동영상을 보면서 상당히 스크린캐스트가 재미 있다는 생각을 해보게 되서 직접 만들어 보게 되었고, 재미가 붙어서 앞으로 몇 개정도 더 만들지 않을까 한다. </p>
<p>&#160;</p>
<p>첫 번째로 아파치 로그 분석 예제에 대한 동영상이다(글자가 잘 안보이면 동영상 해상도를 높여서 시청하시기 바란다). </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:1e1cf9ba-6300-4d2f-ace8-b6770c0da439" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/SxxgNa4OaZA?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/SxxgNa4OaZA?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
</div>
<p>&#160;</p>
<p>아래는 위 동영상 코드이다. </p>
<pre class="csharpcode">setwd(<span class="str">&quot;C:/rcran&quot;</span>)
accessLog &lt;- read.table(file=bzfile(<span class="str">&quot;full_log_20111124_20111219.txt.bz2&quot;</span>),
                        sep=<span class="str">&quot; &quot;</span>)

library(stringr)
pattern &lt;- <span class="str">&quot;.+contrib.+/(.+) HTTP/1.0&quot;</span>
packages &lt;- str_match(accessLog[,<span class="str">&quot;V6&quot;</span>], pattern)[,2]
clenedPkg &lt;- packages[!<span class="kwrd">is</span>.na(packages)]

numofwin &lt;- length(grep(<span class="str">&quot;.+\\.zip&quot;</span>,clenedPkg))
numofmac &lt;- length(grep(<span class="str">&quot;.+\\.tgz&quot;</span>,clenedPkg))
numofsrc &lt;- length(grep(<span class="str">&quot;.+\\.tar\\.gz&quot;</span>,clenedPkg))

numof &lt;- c(numofwin, numofmac,numofsrc )
names(numof) &lt;- c(<span class="str">&quot;Windows&quot;</span>, <span class="str">&quot;Mac&quot;</span>, <span class="str">&quot;Etc&quot;</span>)
barplot(numof/sum(numof) * 100, xlab=<span class="str">&quot;OS&quot;</span>, ylab=<span class="str">&quot;Percentages&quot;</span>, col=rainbow(3), ylim=c(0,100))
title(<span class="str">&quot;Korea User OS Distribution&quot;</span>)

pkgNames &lt;- str_match(clenedPkg, <span class="str">&quot;(.+)_.+&quot;</span>)[,2]

library(plyr)
library(lattice)
pkgcount &lt;- count(data.frame(pkgname=pkgNames), vars=<span class="str">&quot;pkgname&quot;</span>)
pkgcount &lt;- pkgcount[!<span class="kwrd">is</span>.na(pkgcount$pkgname),]
orderedPkgCount &lt;- pkgcount[order(pkgcount$freq, decreasing=T),]
orderedPkgCount$pkgname &lt;- factor(orderedPkgCount$pkgname,
                                  levels=orderedPkgCount$pkgname[order(orderedPkgCount$freq, decreasing=T)])

barchart(freq~pkgname, data=orderedPkgCount[1:20,], ylab=<span class="str">&quot;Freq&quot;</span>, xlab=<span class="str">&quot;pkg names&quot;</span>,
         scales = list(x = list(rot = 45, col=<span class="str">&quot;blue&quot;</span>, cex=1.2)),col=rainbow(20), main=<span class="str">&quot;Top 20 packages&quot;</span>)</pre>
<p>&#160;</p>
<p>두번째 동영상은 몇가지 예제와 더불어 KoNLP를 소개한 동영상이다. </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:32528d86-8573-4996-92ce-3831490cb988" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/5KsDX0278Js?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/5KsDX0278Js?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
</div>
<p>&#160;<br />
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
<p>역시 코드 첨부한다.</p>
<pre class="csharpcode">setwd(<span class="str">&quot;C:/work/meetup&quot;</span>)
library(KoNLP)
library(RColorBrewer)
library(wordcloud)

f &lt;- file(<span class="str">&quot;광장_최인훈.txt&quot;</span>, blocking=F)
txtLines &lt;- readLines(f)
nouns &lt;- sapply(txtLines, extractNoun, USE.NAMES=F)
close(f)

wordcount &lt;- table(unlist(nouns))
pal &lt;- brewer.pal(12,<span class="str">&quot;Set3&quot;</span>)
pal &lt;- pal[-c(1:2)]
wordcloud(names(wordcount),freq=wordcount,scale=c(6,0.3),min.freq=25,
          random.order=T,rot.per=.1,colors=pal)</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>위 결과로 나오는 워드클라우드는 아래와 같다. </p>
<p>&#160;</p>
<p><a href="http://freesearch.pe.kr/wp-content/uploads/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://freesearch.pe.kr/wp-content/uploads/image_thumb9.png" width="527" height="432" /></a></p>
<p>&#160;</p>
<p>앞으로 다양한 분들이 더 재밋는 주제로 meetup을 만들어 주길 바란다. </p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2672</feedburner:origLink></item>
		<item>
		<title>KoNLP 0.0-8.0</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/efJOe_qFwOo/2671</link>
		<comments>http://freesearch.pe.kr/archives/2671#comments</comments>
		<pubDate>Sun, 11 Dec 2011 08:23:52 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[개발]]></category>
		<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[KoNLP]]></category>
		<category><![CDATA[R]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/archives/2671</guid>
		<description><![CDATA[KoNLP 패키지 업데이트를 했다. 업데이트 내용은 아래와 같음. &#160; Version 0.0-8.0 (2011-12-09) ------------------------------------------------------------------------------ &#160; * improved performance more than 100 times on functions which related with Hannanum Analyzer. &#160; * set -Xmx512m for Java VM. &#160; * Java sources are added. &#160; 자바 코드 최적화로 성능향상이 있었는데, Thread 기반에서는 정확한 기능 보장을 못하니 R에서 병렬 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/qKc6Qi05jB1lYcIvtFupvJdIA98/0/da"><img src="http://feedads.g.doubleclick.net/~a/qKc6Qi05jB1lYcIvtFupvJdIA98/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qKc6Qi05jB1lYcIvtFupvJdIA98/1/da"><img src="http://feedads.g.doubleclick.net/~a/qKc6Qi05jB1lYcIvtFupvJdIA98/1/di" border="0" ismap="true"></img></a></p><p>KoNLP 패키지 업데이트를 했다. </p>
<p>업데이트 내용은 아래와 같음.</p>
<p>&#160;</p>
<blockquote><pre>

Version 0.0-8.0 (2011-12-09)

------------------------------------------------------------------------------

&#160; * improved performance more than 100 times on functions which related with Hannanum Analyzer.

&#160; * set -Xmx512m for Java VM.

&#160; * Java sources are added.
</pre>
<p>&#160;</p>
</blockquote>
<p>자바 코드 최적화로 성능향상이 있었는데, Thread 기반에서는 정확한 기능 보장을 못하니 R에서 병렬 프로세싱으로 KoNLP 패키지 사용을 하는건 피하길 바란다. 다음 업데이트에서 해결하도록 하겠다. 급하신 분은 메일 주시면 바로 해결해 드리구. ㅋ </p>
<p>&#160;</p>
<p>얼마전에 <a href="https://github.com/haven-jeon/KoNLP">github</a>에 코드를 올려 두었는데, 어제 <a href="http://r-forge.r-project.org/">R-Forge</a> 계정 할당을 받아서 조만간 코드들도 이쪽으로 옮겨 놓을 예정이다. 메일링 리스트 지원이라든지 여러 지원이 빠방하고 아무래도 R 관련 프로젝트기에 이쪽에서 더 지원을 많이 해줄거 같다는 생각을 해본다.</p>
<p>기말고사 끝나는 대로 여러 굵직굵직한 기능 추가를 시작해야 할 듯 하다. </p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2671/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2671</feedburner:origLink></item>
		<item>
		<title>빅 데이터 쌓기 경쟁</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/q71HOTp1Ohw/2668</link>
		<comments>http://freesearch.pe.kr/archives/2668#comments</comments>
		<pubDate>Sat, 10 Dec 2011 02:13:45 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Data Scientist]]></category>
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/archives/2668</guid>
		<description><![CDATA[최근 작금의 상황을 보자면 빅 데이터를 모아서 쌓아두는데 목적을 두는 기업들이 상당히 많다는 것을 자주 느끼곤 한다. 빅 데이터를 쌓아두면 뭔가 가치 있는 정보들이 나올거라는 미신같은것 때문에 너도 나도 빅 데이터 클러스터를 구성하는데 관심을 가지고 있는 듯 하다. 물론 빅 데이터에 가는 가장 명시적인 마일스톤이 빅 데이터 처리 플랫폼을 구축하는 것이고 어쩌면 이는 돈을 투자하면 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/l7Nhs7VrAEev6_nlhEe720O8NBI/0/da"><img src="http://feedads.g.doubleclick.net/~a/l7Nhs7VrAEev6_nlhEe720O8NBI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/l7Nhs7VrAEev6_nlhEe720O8NBI/1/da"><img src="http://feedads.g.doubleclick.net/~a/l7Nhs7VrAEev6_nlhEe720O8NBI/1/di" border="0" ismap="true"></img></a></p><p>최근 작금의 상황을 보자면 빅 데이터를 모아서 쌓아두는데 목적을 두는 기업들이 상당히 많다는 것을 자주 느끼곤 한다. 빅 데이터를 쌓아두면 뭔가 가치 있는 정보들이 나올거라는 미신같은것 때문에 너도 나도 빅 데이터 클러스터를 구성하는데 관심을 가지고 있는 듯 하다. </p>
<p>물론 빅 데이터에 가는 가장 명시적인 마일스톤이 빅 데이터 처리 플랫폼을 구축하는 것이고 어쩌면 이는 돈을 투자하면 바로 되는 시각적인 효과가 분명한 프로젝트일 것이다. 그나마 쉬운 작업을 가장 먼저 하는 것, 내가 보기엔 이것 이상도 이하도 아닌 것 같다. </p>
<p>정작 데이터에서 가치 있는 정보를 뽑아내는 분석작업, 그리고 이를 실제 비즈니스에 적용해서 개선하는 작업에 대한 고려는 전혀 없이 클러스터를 구성하고 빅 데이터 플랫폼을 구성하는 경쟁을 하고 있는 것으로 밖에 보이지 않는다. 가장 어려운 것을 하지 않고 빅 데이터 플랫폼을 구축하는 프로젝트를 보자면 정말 일을 위한 일밖에 되지 않는 그런 느낌을 상당히 많이 받곤 한다. </p>
<p>기업 데이터 분석 작업이 어려운 이유는 작업 자체의 난이도 보다는 기술과 실무가 만나는 접점에 있는 영역의 일이고, 여기서 나온 결과물들이 실제 비즈니스 방식 자체를 바꿔야만 적용이 될 수 있는 것들이 상당히 많기 때문에 이에 대한 이해를 시키고 구성원의 동의를 얻는데 많은 노력이 들기 때문이다. 이는 시간이 오래 걸리는 일이기에 외부 분석가를 영입해서 프로젝트를 진행하는 것 보다는 내부에서 데이터 과학자를 키워서 점진적이고 장기적으로 이끌어 나가게끔 하는게 가장 바람직한 방향이 아닐까 하는 생각을 해본다. 그리고 무엇보다 시급한 것은 과연 빅 데이터를 이용하길 원하는 회사가 과연 데이터가 이끄는 회사(Data Driven Company)인가 하는 것이다. 이는 비즈니스 하나하나의 개선보다 더 어려운 회사의 문화에 대한 문제이기 때문에 데이터 과학자가 아무리 많다 해도 바꿀 수 없는 부분이기도 하지만 빅 데이터를 활용하기 위해서는 반드시 한번 정도는 비교해보고 고민해봐야 하는 부분이 아닐까 한다.&#160; </p>
<p>데이터가 이끄는 회사…. </p>
<p>대표적으로 구글, 야후, 페이스북, 링크드인, 넷플릭스 같이 데이터를 활용해 재미를 본 회사들이며 이들이 바로 빅 데이터 활용의 가장 많은 성공 사례를 제시한 회사들이라는 것은 다들 알고 있을 것이다. 이 사실을 알고 있다면 이들 데이터가 이끄는 문화가 어떤것을 의미하는지 먼저 이해하는 과정을 빅 데이터 플랫폼 구성 이전에 고민을 해야 한다고 생각한다.</p>
<p>어쩌면 과거 OLAP을 구성하고 데이터 마이닝을 통해서 정보를 뽑아내려 했던 회사들이 이런 DW나 마이닝 기술에 실망한것은 사실 그들 문화가 이 기술들을 포용할 준비가 되지 않아서이지 않을까 하는 생각을 해본다. </p>
<p>&#160;</p>
<p>ps. 야후!에서는 p-value라는 단어가 전사 메일에 포함되서 오는 경우가 허다했다. 중요한 서비스의 성능 향상은 꼭 이런 통계적 용어와 함께하고 있었고, 전 직원이 이에 대한 이해를 하고 있다는 사실…난 이점이 정말 데이터가 이끄는 회사의 한 단면을 보여주고 있는게 아닐까 한다.&#160;&#160;&#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2668/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2668</feedburner:origLink></item>
		<item>
		<title>대한민국 커뮤니티 데이 발표자료</title>
		<link>http://feedproxy.google.com/~r/gogamza/~3/4Zu-fsj8nK8/2667</link>
		<comments>http://freesearch.pe.kr/archives/2667#comments</comments>
		<pubDate>Sat, 03 Dec 2011 15:15:17 +0000</pubDate>
		<dc:creator>고감자</dc:creator>
				<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[일상]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[커뮤니티 데이]]></category>

		<guid isPermaLink="false">http://freesearch.pe.kr/archives/2667</guid>
		<description><![CDATA[오늘 하루를 마무리 하면서 이런 글을 쓰다니 참 감개무량할 뿐이다. 아직 할 일이 좀 남아 있어서 잠은 늦게 들거 같긴한데, 일단 약속했던 발표 자료를 공유하고자 한다. 대한민국 커뮤니티 데이 발표자로 참여를 했고, 제목을 그럴싸하게 지어놓아서 아마도 실실적인 첫번째 세션으로 선정된 듯 하다. 그 덕분에 오늘 스케줄을 참 나이스하게 마무리 하긴 했다. 발표가 끝나고 오후 1시부터 [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/T2667BR2YMB0V4cXvfYSBSPfTrs/0/da"><img src="http://feedads.g.doubleclick.net/~a/T2667BR2YMB0V4cXvfYSBSPfTrs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/T2667BR2YMB0V4cXvfYSBSPfTrs/1/da"><img src="http://feedads.g.doubleclick.net/~a/T2667BR2YMB0V4cXvfYSBSPfTrs/1/di" border="0" ismap="true"></img></a></p><p>오늘 하루를 마무리 하면서 이런 글을 쓰다니 참 감개무량할 뿐이다. 아직 할 일이 좀 남아 있어서 잠은 늦게 들거 같긴한데, 일단 약속했던 발표 자료를 공유하고자 한다. </p>
<p><a href="http://kcd.zdnet.co.kr/1th/community/">대한민국 커뮤니티 데이</a> 발표자로 참여를 했고, 제목을 그럴싸하게 지어놓아서 아마도 실실적인 첫번째 세션으로 선정된 듯 하다. 그 덕분에 오늘 스케줄을 참 나이스하게 마무리 하긴 했다. </p>
<p>발표가 끝나고 오후 1시부터 통계학 전공 시험이 있어서 부리나케 시험장으로 달려가서 다른 분들과 많은 이야기를 나누지 못한게 참 아쉬웠다. </p>
<p>어찌되었든 발표든 시험이든 잘 마무리 된거 같아 보이니 발표자료 올려본다. </p>
<p>&#160;</p>
<p><a href="http://dl.dropbox.com/u/8686172/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4%EA%B8%B0%EB%B0%98%EC%9D%98%ED%86%B5%EA%B3%84%EC%96%B8%EC%96%B4R%EA%B3%BC%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D.pdf">오픈소스기반의 통계언어 R과 빅 데이터 분석</a></p>
]]></content:encoded>
			<wfw:commentRss>http://freesearch.pe.kr/archives/2667/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://freesearch.pe.kr/archives/2667</feedburner:origLink></item>
	</channel>
</rss>

