<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	
	<title type="text" xml:lang="en">Applied Data Analysis Lab</title>
	<link type="application/atom+xml" href="http://adalab.icm.edu.pl/feeds/all-atom.xml" rel="self"/>
 	<link type="text" href="http://paulstamatiou.com" rel="alternate"/>
	<updated>2018-03-02T08:54:49+00:00</updated>
	<id>http://adalab.icm.edu.pl/blog/</id>
	<author>
		<name>ADA Lab, ICM UW</name>
	</author>
	<rights>CC-BY-SA 3.0</rights>
	
	
	<entry>
		<title>Sparkling-ferns for #ApacheSpark (Part 1: The Algorithm)</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2015/11/17/spark-summit-eu-p1.html"/>
		<updated>2015-11-17T12:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2015/11/17/spark-summit-eu-p1</id>
		<content type="html">&lt;p&gt;Two weeks ago together with Mateusz Fedoryszak I attended the first european Spark Summit (#SparkSummitEU). What did we find there and how did we enrich Spark Community? Let me tell you the story of the summit and Sparkling Ferns...&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;First of all, yes, Matei Zaharia was excited as usual during his presentation. Second, yes, everyone had been super enthusiastic on every occasion during the Summit. Third, yes, you must attend Spark Summit if you haven’t done it yet. If you have - you know nothing else is even close to this experience. Anyway, we shall meet there next year!&lt;/p&gt;

&lt;p&gt;Many attendees asked us about Random Ferns and our implementation of it for Apache Spark: &lt;a href=&quot;https://github.com/CeON/sparkling-ferns&quot;&gt;Sparkling-ferns&lt;/a&gt;. Let’s go through Random Ferns FAQ. BTW: You may enjoy watching our talk:&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/333PVMcluvw&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Our &lt;a href=&quot;http://www.slideshare.net/SparkSummit/sparkling-random-ferns-by-p-dendek-and-m-fedoryszak&quot;&gt;slides&lt;/a&gt; are publically available as well.&lt;/p&gt;

&lt;h2&gt;1. What are Random Ferns?&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Random Ferns&lt;/strong&gt; is a supervised learning classification algorithm.&lt;/p&gt;

&lt;p&gt;In classification algorithms items are described with a feature vector &lt;strong&gt;f&lt;/strong&gt;. We want to label each item using a class &lt;strong&gt;c&lt;/strong&gt; from the set of classes &lt;strong&gt;C&lt;/strong&gt;. To do so we create a model, which takes a vector &lt;strong&gt;f&lt;/strong&gt; and returns &lt;strong&gt;c&lt;/strong&gt;, the most suitable class for the vector &lt;strong&gt;f&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now, there are many ways to do so. We may use Naive Bayes, Random Forests, SVM, etc. or Random Ferns. &lt;/p&gt;

&lt;h2&gt;2. When should I be interested with Random Ferns?&lt;/h2&gt;

&lt;p&gt;There are some natural indicators to use a specific algorithm.&lt;/p&gt;

&lt;p&gt;With Random Ferns these indicators are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;requirement to train a model in linear time against the number of items&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;requirement to train a model in linear time against the number of features&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;plenty of memory to use (Random Ferns model can be quite big, I am going to explain it later)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;3. I’ve heard about Random Forests - can you compare it with Random Ferns?&lt;/h2&gt;

&lt;p&gt;Sure!&lt;/p&gt;

&lt;h3&gt;3.1. Random Forests&lt;/h3&gt;

&lt;p&gt;With &lt;strong&gt;Random Forests&lt;/strong&gt; you have many decision trees. Each is trained on some subset of data. Let’s investigate one tree within the forest (see &lt;strong&gt;Fig.1.1.&lt;/strong&gt;). In each node one or more features of an item are tested to choose which child node should be chosen. When you arrive at a leaf node you obtain a class &lt;strong&gt;c&lt;/strong&gt; or list of probabilities for each class from &lt;strong&gt;C&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The important things to note are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;one or more features&lt;/strong&gt; may be used to choose child node,&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;each node has its own test&lt;/strong&gt; - sibling nodes can use completely different features and/or different thresholds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final class &lt;strong&gt;c&lt;/strong&gt; assigned by a model is chosen e.g. by voting on results from particular trees.&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/fig.1.1.png&quot;/&gt;
&lt;strong&gt;Fig.1.1.&lt;/strong&gt; The example of a &lt;strong&gt;decision tree&lt;/strong&gt; within a &lt;strong&gt;Random Forest&lt;/strong&gt; model.&lt;/p&gt;

&lt;h3&gt;3.2. Random Ferns&lt;/h3&gt;

&lt;p&gt;Now, when we use &lt;strong&gt;Random Ferns&lt;/strong&gt; two things are different:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We are using perfect binary trees, where all levels of a tree are filled (they are balanced), and on each level only one feature is checked.&lt;/li&gt;
&lt;li&gt;Each fern has a threshold set for each feature. As a result on each level the decision if an item&amp;#39;s feature passes a threshold can be encoded with a binary value: 0 or 1.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As you can see in &lt;strong&gt;Fig.1.2.&lt;/strong&gt; we have exactly 2^N leafs, where N is the number of features used. We also have C classes. What is more important is that we can enumerate all leafs using bits collected from the root to the chosen leaf. By going from the root to the bottom-left leaf in &lt;strong&gt;Fig.1.2.&lt;/strong&gt; we collect bits 000, which represents the integer number 0. By going to the bottom-right leaf we collect bits 111, which represents number 7.&lt;/p&gt;

&lt;p&gt;The natural next step is to switch from the tree representation to the 2D array representation,
where leaf code is the first coordinate and a class number is the second coordinate. A value obtained by passing a leaf code and a class number &lt;strong&gt;c&lt;/strong&gt; is probability of correctly labeling an item as a matching to a class &lt;strong&gt;c&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/fig.1.2.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fig.1.2.&lt;/strong&gt; The example of a &lt;strong&gt;fern&lt;/strong&gt; (represented as a tree) within a &lt;strong&gt;Random Ferns&lt;/strong&gt; model.&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/fig.1.3.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fig.1.3.&lt;/strong&gt; The example of a &lt;strong&gt;fern&lt;/strong&gt; (represented as a 2D array) within a &lt;strong&gt;Random Ferns&lt;/strong&gt; model.&lt;/p&gt;

&lt;h2&gt;4. How big can be a Random Ferns model?&lt;/h2&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/eq.1.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Now let’s use some numbers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Example 1&lt;/strong&gt;
&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/eq.2B.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Example 2&lt;/strong&gt;
&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/eq.3B.png&quot;/&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Observation 1&lt;/strong&gt;: Adding 10 more features to a model makes it 1024 times bigger than the previous one.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Observation 2&lt;/strong&gt;: Doubling the number of ferns or classes make a new model 2 times bigger than the previous one.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;5. How fast can I train Random Ferns model?&lt;/h2&gt;

&lt;p&gt;During tests checking model creation time the following empirical dependency had been established: &lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/eq.4B.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;It is easier to think about this dependency in terms of &lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/eq.5B.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;So with a fixed number of features used &lt;strong&gt;f&lt;/strong&gt; a model creation time grows linearly with a growth of a dataset size &lt;strong&gt;D&lt;/strong&gt;.
Conversely, with a fixed size of a dataset &lt;strong&gt;D&lt;/strong&gt; a model creation time grows linearly with a growth of a number of features &lt;strong&gt;f&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What does it mean? When you are training your model, you can easily predict when it will be ready. &lt;/p&gt;

&lt;h2&gt;6. How can I “plug” Random Ferns package into Spark?&lt;/h2&gt;

&lt;p&gt;Use the command:&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/c.1.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;and enjoy Random Ferns right away!&lt;/p&gt;

&lt;h2&gt;7. How can I use Random Ferns code in Spark?&lt;/h2&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-11-17-spark-summit-eu-p1/c.2.png&quot;/&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You should import mllib Vectors and LabeledPoint as well as all classes from the package pl.edu.icm.sparkling_ferns.&lt;/li&gt;
&lt;li&gt;Next you should cast your data into instances of the LabeledPoint class. &lt;/li&gt;
&lt;li&gt;Finally, you should feed the method FernForest.train with LabeledPoint instances. Please pass along also numberOfFerns, numberOfFeatures and the mapping from feature ID to the number of possible values of a feature. 

&lt;ol&gt;
&lt;li&gt;Having two features, e.g. &amp;quot;doors&amp;quot; and &amp;quot;persons&amp;quot;, with possible values (respectively): List(&amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;more&amp;quot;) and List(&amp;quot;2&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;more&amp;quot;), the map passed should be: Map(0 -&amp;gt; 4, 1 -&amp;gt; 3)&lt;/li&gt;
&lt;li&gt;If feature values are continuous you should pass an empty map (Map.empty).&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;8. Where I can find out more about Random Ferns?&lt;/h2&gt;

&lt;p&gt;For more details consult &lt;a href=&quot;https://github.com/CeON/sparkling-ferns&quot;&gt;GitHub&lt;/a&gt; or &lt;a href=&quot;http://spark-packages.org/package/CeON/sparkling-ferns&quot;&gt;Spark-packages.org&lt;/a&gt;.
The complete example of the package use is in the &lt;a href=&quot;https://github.com/CeON/sparkling-ferns/blob/master/src/test/scala/pl/edu/icm/sparkling_ferns/FernForestIntegrationSuite.scala&quot;&gt;test segment&lt;/a&gt; of a code.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>PhD defense of ADA Laber Mateusz Kobos</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2015/06/18/phd-defense-of-mateusz-kobos.html"/>
		<updated>2015-06-18T12:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2015/06/18/phd-defense-of-mateusz-kobos</id>
		<content type="html">&lt;p&gt;On 2015-06-11, I defended my PhD thesis entitled &amp;quot;Multiresolution classification using combination of density estimators&amp;quot; in the &lt;a href=&quot;http://www.ibspan.waw.pl/glowna/en&quot;&gt;Systems Research Inistitute of the Polish Academy of Sciences&lt;/a&gt;.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-06-18-phd-defense-of-mateusz-kobos/kdes.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;In the thesis, we introduce a classification algorithm based on an idea of &amp;quot;multiple-resolution&amp;quot; (or &amp;quot;multiscale&amp;quot;) approach to data analysis. In practice, the method uses an average of kernel density estimators where each estimator corresponds to a different data &amp;quot;resolution&amp;quot; (see the figure above for estimation of density generated by &lt;a href=&quot;https://en.wikipedia.org/wiki/Kernel_density_estimation&quot;&gt;kernel density estimators&lt;/a&gt; with different smoothing parameters which can be interpreted as a multiple-resolution view of given five data points). First, we examine theoretical properties of this method; next, we propose a practical implementation of such algorithm with parameters of the density estimators and their number adjusted to minimize the misclassification probability. Subsequently, we test the algorithm on artificial data sets characterized by a multiple-resolution property. The tests show that the introduced algorithm is superior to the basic version based on one estimator per class. We also test the algorithm on benchmark data sets and compare the results obtained with the results of the basic version and other popular classification algorithms. The method is shown to fare better than the basic version and to be on a par with other popular algorithms.&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/2015-06-18-phd-defense-of-mateusz-kobos/error_functions.png&quot;/&gt;&lt;/p&gt;

&lt;p&gt;The image above is an intuitive data-based justification of why the proposed algorithm using many kernel density estimators is better for certain data sets than the basic version of the method using a single density estimator per class. The image shows the mean classification error computed for two benchmark data sets: BUPA liver disorders and Pima Indians diabetes. Two density estimators per class with the same value of smoothing parameter per class were used. The more more the color of the point resembles blue, the smaller the value of given function in this point. The global minima of the function lying outside of the diagonal are marked with triangles while the minimum for points lying on the diagonal is marked with a circle. The basic version of the method can achieve only the values lying on the diagonal; however, the proposed algorithm can achieve all shown values. The value next to the ∆ symbol above the plots is the difference between the minimal value of the function for points lying on the diagonal and the value of the global minimum. One can see that in case of the BUPA liver disorders dataset, the difference is nonzero thus we can expect a smaller classification error when applying the proposed algorithm. In case of the Pima Indians diabetes the difference is zero, so no gain is expected.&lt;/p&gt;

&lt;p&gt;The thesis is mainly an extension of paper &lt;a href=&quot;http://www.tandfonline.com/doi/abs/10.1080/09540091.2011.631166&quot;&gt;M. Kobos, J. Mańdziuk. Multiple-resolution classification with combination of density estimators. Connection Science, 23(4):219–237, 2011&lt;/a&gt;.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>CERMINE wins award at ESWC 2015</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2015/06/17/cermine-wins-award-at-eswc-2015.html"/>
		<updated>2015-06-17T09:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2015/06/17/cermine-wins-award-at-eswc-2015</id>
		<content type="html">&lt;p&gt;ADA Lab&amp;#39;s &lt;a href=&quot;http://cermine.ceon.pl/&quot;&gt;CERMINE&lt;/a&gt;
participated in the &lt;a href=&quot;https://github.com/ceurws/lod/wiki/SemPub2015&quot;&gt;Semantic Publishing challenge&lt;/a&gt;
during the recent &lt;a href=&quot;http://2015.eswc-conferences.org/&quot;&gt;Extended Semantic Web Conference (ESWC 2015)&lt;/a&gt; in Portorož, Slovenia
and we won the Best Performing Approach Award!&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/awards/eswc2015.jpg&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Extended Semantic Web Conference gathers researchers interested in various semantic technologies.
The week between May 31st and June 4th
was filled with workshops, tutorials, challenges, poster sessions, networking events and, of course, regular presentations.
Apart from our participation in the Semantic Publishing Challenge, I came to ESWC to learn state of the art
in knowledge representation (taking notes of ontologies and tools),
and to meet researchers interested in machine-friendly scholarly communication.&lt;/p&gt;

&lt;p&gt;Each of the three days of the main conference was kicked off by an excellent keynote:
Viktor Mayer-Schönberger spoke about Big Data,
Lise Getoor about Statistical Relational Learning
and Massimo Poesio about Games with a Purpose.
Two posters caught my attention: &lt;a href=&quot;http://aksw.org/Projects/GERBIL.html&quot;&gt;GERBIL&lt;/a&gt;, a system for benchmarking semantic annotations,
and &lt;a href=&quot;http://www.organicdatascience.org/&quot;&gt;ODSF&lt;/a&gt; for managing data-intensive scientific collaboration.&lt;/p&gt;

&lt;p&gt;The Semantic Publishing challenge, in which our CERMINE took place, gathered 9 teams, which worked on two tasks:
one for extracting information from HTML pages and one for mining scholarly PDFs.
The challenge was a good opportunity to meet some old friends (hello Christoph and Stefan!) and to make new ones (hello Angelo, Bahar, Francesco, Silvio and others!)
Also, thank you Mendeley and Springer for sponsoring the awards!&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto&quot; class=&quot;img-responsive&quot; src=&quot;/assets/portoroz-short.jpg&quot;/&gt;&lt;/p&gt;

&lt;p&gt;This year the conference took place in the lovely Portorož, Slovenia — right by the Adriatic Sea.
It was the 12th edition of the event.
As a newcomer, I was enchanted by the friendly and relaxed atmosphere,
both pre-organized and spontaneous social events were a testimony that the community is well-integrated.
I&amp;#39;m looking forward to the next year&amp;#39;s edition!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Introducing ADA Lab Open Science APIs</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2015/05/11/introducing-apis.html"/>
		<updated>2015-05-11T12:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2015/05/11/introducing-apis</id>
		<content type="html">&lt;p&gt;Having our roots in the Centre for Open Science (&lt;a href=&quot;http://www.ceon.pl/en/&quot;&gt;CeON&lt;/a&gt;) we&amp;#39;re very keen on making sure anybody interested can take advantage of algorithms we design. Today we are making another step in that direction: we introduce &lt;a href=&quot;/api&quot;&gt;ADA Lab Open Science APIs&lt;/a&gt;.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;&lt;code&gt;APIs&lt;/code&gt; is the section of our website that will allow you to quickly see our technology in action. It contains demonstrators, each showcasing a small part of methods that we have designed. Although experimental for the time being, &lt;code&gt;RESTful&lt;/code&gt; &lt;code&gt;API&lt;/code&gt; is also provided so that you can use it in your apps.&lt;/p&gt;

&lt;p&gt;To begin with we provide two &lt;a href=&quot;http://cermine.ceon.pl/&quot;&gt;CERMINE&lt;/a&gt;-based demonstrators: citation and affiliation parsers. Stay tuned as we&amp;#39;ll regularly extend this section.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Text Mining Services in OpenAIRE</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2015/02/16/openaire.html"/>
		<updated>2015-02-16T11:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2015/02/16/openaire</id>
		<content type="html">&lt;p&gt;Recently in Athens there was an impressive kick-off of the OpenAIRE2020 project, during which we presented OpenAIRE’s plans in the area of text and data mining of scholarly publications. Publications contain all kinds of rich information, which, although understandable to a human reader, are not machine-readable and thus cannot be used directly for indexing and recommending purposes. Authors’ affiliations, document classifications, references to biological and chemical databases, acknowledgements to research funding agencies are all valuable pieces of information for OpenAIRE’s scholarly communication services.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;&lt;img src=&quot;/assets/openaire/text-analysis.jpg&quot; alt=&quot;Text analysis&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Photo credit: Wouter Vandenneucker, license: CC BY-SA 2.0)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Enriching content&lt;/h2&gt;

&lt;p&gt;At ADA Lab we are primarily interested in mining scholarly publications and extracting from them information that will help making OpenAIRE even more attractive to our users. On the one hand, knowledge which we’re going to extract will shed more light on the state of scholarly communication. Thanks to quantitative indicators, policy-makers and enthusiasts alike will be able to take the pulse of open science and observe the latest trends in research. On the second hand, researchers will have better means to find the research outputs they need, as the extracted knowledge will allow our indexing services to better “understand” the content and come up with more relevant search results and recommendations.&lt;/p&gt;

&lt;h2&gt;How will we do this?&lt;/h2&gt;

&lt;p&gt;Together with our colleagues from CNR in Pisa and ARC in Athens, in the work package devoted to Knowledge Extraction Services (WP10), we will improve and expand the Information Inference Service created in the OpenAIREplus project. We will make improvements to the inference infrastructure: add visual workflow management and improve quality assurance. We will extend existing document content analysis functionality to extract information about structure of the document, affiliation of the authors, and sentiment of the citations. We will also enhance our automatic document classification functionality and introduce functionality of creating clusters of similar documents. We will also search for new types of links to outside knowledge bases, i.e., 3rd party, domain-specific repositories describing genes, chemicals, organisms, etc. Some solutions will be built from scratch, other will be based on software developed by the partners, like &lt;a href=&quot;http://cermine.ceon.pl/&quot;&gt;CERMINE&lt;/a&gt; and &lt;a href=&quot;https://code.google.com/p/madis/&quot;&gt;MadIS&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Code on Github&lt;/h2&gt;

&lt;p&gt;Finally, we will work on better uptake of the project’s deliverables by making our results even more discoverable and usable by the general public. To that end, we plan to migrate our code to GitHub (star &lt;a href=&quot;https://github.com/openaire/openaire-mining&quot;&gt;our repository&lt;/a&gt; now) and to publish our data sets on Zenodo. Both the source codes and the data sets will be available on open licenses, of course! First deliverables in our work package are scheduled for August 2015. We’ll keep you up-to-date about our research on this blog, so stay tuned!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This blog post has been simultaneously published on &lt;a href=&quot;http://blogs.openaire.eu/&quot;&gt;the official OpenAIRE blog&lt;/a&gt; and on the ADA Lab blog. It is available under the CC BY 4.0 license.&lt;/em&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Let's join FORCEs and make a difference in scholarly communication</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2015/02/02/force15.html"/>
		<updated>2015-02-02T09:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2015/02/02/force15</id>
		<content type="html">&lt;p&gt;Two weeks ago I participated in &lt;a href=&quot;https://www.force11.org/meetings/force2015/&quot;&gt;FORCE2015&lt;/a&gt; in Oxford. It was a third conference organized by &lt;a href=&quot;https://www.force11.org/&quot;&gt;FORCE11 community&lt;/a&gt; and a must-attend event for people interested in scholarly communication, and in particular its problems and various ways of addressing them.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;One great thing about FORCE11 conferences is that they gather together people from a wide variety of backgrounds and professions: publishers, funders, librarians, researchers, programmers, and so on. This made FORCE2015 a great place to discuss various groups&amp;#39; needs and expectations, gain collaborators, advertise own work to potential consumers, exchange ideas, and provide and receive feedback about various initiatives.&lt;/p&gt;

&lt;p&gt;The day before the main conference I attended &lt;a href=&quot;http://contentmine.org/&quot;&gt;ContentMine&lt;/a&gt; workshop. ContentMine is a community-driven initiative aiming at extracting facts (eg. species, molecules, particles) from scientific literature and making them accessible and reusable. The project is still young and in the process of building the community, but definitely worth taking a closer look at.&lt;/p&gt;

&lt;p&gt;Another young but already interesting initiative I came across during the conference is &lt;a href=&quot;http://libraccess.org/&quot;&gt;Libraccess&lt;/a&gt; - a project which aims at collecting, aggregating, deduplicating and making available all kinds of open access scientific resources. Since Libraccess has a lot in common with our &lt;a href=&quot;http://comac.ceon.pl/&quot;&gt;COMAC&lt;/a&gt; project, we decided to join forces and use this great opportunity to achieve common goals collaboratively, making use of individual complementary strengths. There aren&amp;#39;t a lot of details yet, but stay tuned!&lt;/p&gt;

&lt;p&gt;During the conference I was also presenting a demo of &lt;a href=&quot;http://cermine.ceon.pl&quot;&gt;CERMINE&lt;/a&gt; - our Java library for extracting metadata and bibliography from scientific literature. Many thanks to all interested people, it was really great to meet you all!&lt;/p&gt;

&lt;p&gt;All the interesting presentations and discussions at FORCE2015 painted a clear picture of the current state of scolarly communication, its problems and efforts made to solve them. For me the most important (and very optimistic) issue is increasing understanding in the community that academic data is in fact not only text, and therefore simply putting paper publications into computers is not enough. Data sets, code and images should become first-class citizens - properly identified, shared and cited. So from one side more and more tools and platforms for managing scientific artifacts other than text emerge, and from the other - a lot of effort is dedicated to automatically process huge volume of already existing unstructured scientific text in order to reverse engineer the process of creating them, mine the knowledge burried in them and transform into machine-readable formats. The latter is exactly what we are passionate about in ADA Lab.&lt;/p&gt;

&lt;p&gt;FORCE2015 was a very interesting and unique experience for me. The event proved without a doubt that there are a lot of enthusiasts interested in the future of scolarly communication and the ways of improving it. Instead of attacking the same problems separately by individual people and teams, we should start organizing in larger groups and collaborate across teams, organizations and countries. If we manage to do so, the FORCE will definitely be with us!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Kraków – where AI meets the law</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2014/12/22/krakow-where-ai-meets-the-law.html"/>
		<updated>2014-12-22T10:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2014/12/22/krakow-where-ai-meets-the-law</id>
		<content type="html">&lt;p&gt;Recently, I was lucky enough to participate in the &lt;a href=&quot;http://conference.jurix.nl/2014/&quot;&gt;JURIX
2014&lt;/a&gt; conference, taking place in Kraków,
10-12 December 2014.  This was an event aimed at injecting the advancements of
computer science into the legal domain.  I must admit that the Organizers really
achieved their goal. At least from my strongly &lt;em&gt;computer-scientish&lt;/em&gt;
perspective...&lt;/p&gt;

&lt;p&gt;During the conference, I presented a proof-of-concept study on how to detect and
analyze topical trends in public procurement judgments. You can have a look at
my &lt;a href=&quot;http://dx.doi.org/10.6084/m9.figshare.1272026&quot;&gt;poster&lt;/a&gt;,
&lt;a href=&quot;http://arxiv.org/abs/1412.5212&quot;&gt;preprint&lt;/a&gt; or
&lt;a href=&quot;http://dx.doi.org/10.3233/978-1-61499-468-8-131&quot;&gt;paper&lt;/a&gt;.
Being able to present your work and gather feedback is great (by the way, I am very
grateful for all questions and comments during poster session). However,
listening to other talks is even fancier! Especially that JURIX 2014 provided
loads of interesting stuff for me...&lt;/p&gt;

&lt;p&gt;At the heart of each conference there are the invited talks.
JURIX was no exception. Both of them were stunning.&lt;/p&gt;

&lt;p&gt;On the first day, &lt;a href=&quot;http://researcher.watson.ibm.com/researcher/view.php?person=il-NOAMS&quot;&gt;Noam
Slonim&lt;/a&gt;
presented the research related to the &lt;a href=&quot;http://researcher.watson.ibm.com/researcher/view_group.php?id=5443&quot;&gt;IBM Debating Technologies
Project&lt;/a&gt;.
Following the previous endeavour, that is
&lt;a href=&quot;http://en.wikipedia.org/wiki/Watson_(computer)&quot;&gt;WATSON&lt;/a&gt;, IBM comes up with a
new challenge. WATSON was created, roughly speaking, to answer sophisticated
questions formulated  in the natural language. Now IBM wants to teach the
machine to search for claims pro or against a given topic, together with the
evidence supporting it. Typical topics could be banning violent video games or
permitting performance enhancing drugs in sports. To get the feeling, what is
it like to debate with the machine just spare 3 minutes to watch &lt;a href=&quot;https://www.youtube.com/watch?v=7g59PJxbGhY&quot;&gt;this
video&lt;/a&gt;.  If you are interested in
the science behind, read the very fresh papers of the IBM Debator group – &lt;a href=&quot;http://acl2014.org/acl2014/W14-21/W14-21-2014.pdf#page=76&quot;&gt;ACL
Argumentation Mining Workshop 2014
paper&lt;/a&gt; or &lt;a href=&quot;http://www.aclweb.org/anthology/C/C14/C14-1141.pdf&quot;&gt;COLING
2014 paper&lt;/a&gt;. For me the
most amazing thing is that this debating technology works on the basis of a
large body of raw text (e.g., Wikipedia). You basically make the computer read,
understand and find only the very relevant information for you. As Noam pointed
out, this is not another search engine, this is a &lt;em&gt;research engine&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;Second talk, despite very difficult task, was a great match to the first one.
&lt;a href=&quot;http://www.pieter-adriaans.com/&quot;&gt;Pieter Adriaans&lt;/a&gt; talked about measures of
information present in the data. This talk addressed very fundamental
questions, which, sadly, are not asked frequently enough in the age of the Big
Data fuss.  The roots of this subject date back to the giants – Shanon, Fisher
and Kolmogorov.  You can have a look at this very interesting
&lt;a href=&quot;http://arxiv.org/pdf/1203.2245v1.pdf&quot;&gt;paper&lt;/a&gt; full of insights and further
references.&lt;/p&gt;

&lt;p&gt;Except keynotes, there were a lot of interesting talks involving a large
variety of subjects such, as linked data, legal information interchange
standards/datasets, Bayesian networks, legal information retrieval systems,
computer aided analysis of legislation, etc. Browse the (unfortunately
pay-walled)
&lt;a href=&quot;http://ebooks.iospress.nl/volume/legal-knowledge-and-information-systems-jurix-2014-the-twenty-seventh-annual-conference&quot;&gt;proceedings&lt;/a&gt;,
if you are hungry for more.  The conference was accompanied by four workshops
and doctoral consortium.  The Organizers decided for parallel sessions
scenario. Therefore, it was impossible for see all the interesting stuff. For
me the definite highlights were the semantic workshop
&lt;a href=&quot;http://www.cs.unibo.it/sw4law2014&quot;&gt;SW4LAW&lt;/a&gt; and the network analysis
&lt;a href=&quot;http://www.leibnizcenter.org/%7Ewinkels/NAiL2014.html&quot;&gt;NAiL2014&lt;/a&gt; workshop.
Luckily proceedings from both are freely available on-line
&lt;a href=&quot;http://ceur-ws.org/Vol-1296/&quot;&gt;here&lt;/a&gt; and
&lt;a href=&quot;http://www.leibnizcenter.org/%7Ewinkels/NAiL2014-pre-proceedings.pdf&quot;&gt;there&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Altogether, JURIX 2014 was very fruitful conference for me. I have learnt a lot
about AI, law, and the intersection of both domains. Big &amp;quot;thank you&amp;quot; for
the Organizers! I hope to make it to Braga in 2015!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Spark, D3, data visualization and Super Cow Powers</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2014/11/26/spark-d3-super-cow-powers.html"/>
		<updated>2014-11-26T15:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2014/11/26/spark-d3-super-cow-powers</id>
		<content type="html">&lt;p&gt;Did you know that the amount of milk given by a cow depends on the number of days since its last calving? A plot of this correlation is called a lactation curve. Read on to find out how do we use &lt;a href=&quot;http://spark.apache.org&quot;&gt;Apache Spark&lt;/a&gt; and &lt;a href=&quot;http://d3js.org&quot;&gt;D3&lt;/a&gt; to find out how much milk we can expect on a particular day.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;&lt;img src=&quot;/assets/spark-d3-super-cow-powers/lactation-all-data.png&quot; alt=&quot;Milk yield per day.&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fig. 1.&lt;/strong&gt; Milk yield per day.&lt;/p&gt;

&lt;h3&gt;Background — a lot of cows&lt;/h3&gt;

&lt;p&gt;Recently, ADA Lab has started a cooperation with the Polish Federation of Cattle Breeders and Dairy Farmers (&lt;a href=&quot;http://www.pfhb.pl/english/&quot;&gt;PFHBiPM&lt;/a&gt;). One of the goals of our project is as simple as that: predict how much milk will a particular cow produce on a particular day. It turns out PFHBiPM was doing &lt;em&gt;big data&lt;/em&gt; before it was cool: they have gathered 80M records of test milkings from 3M cows over two decades. This created a great opportunity for data analysis.&lt;/p&gt;

&lt;p&gt;While drilling through the data, we thought it would be interesting to visualize lactation curves passing certain points on a chart. Just drawing them wouldn&amp;#39;t tell us much: they were too numerous. Our goal then was to create an interactive 2D histogram of data points with respect to days after calving and the amount of obtained milk.&lt;/p&gt;

&lt;h3&gt;Our technology toolbox&lt;/h3&gt;

&lt;p&gt;We&amp;#39;ve decided to harness &lt;code&gt;Spark&lt;/code&gt; to choose interesting points and group them.
The first idea was to create an app with GUI which at some point would trigger computation on a cluster. However, we have come across a &lt;a href=&quot;http://spark-summit.org/2014/talk/spark-job-server-easy-spark-job-management&quot;&gt;Spark Summit talk&lt;/a&gt; about &lt;a href=&quot;https://github.com/spark-jobserver/spark-jobserver&quot;&gt;Spark Job Server&lt;/a&gt;. It&amp;#39;s a piece of software which allows you to talk with your cluster via &lt;code&gt;REST&lt;/code&gt;. It would be a shame not to make use of that!&lt;/p&gt;

&lt;p&gt;Other pieces were easy to fit: we&amp;#39;ve crafted a website which uses &lt;code&gt;AJAX&lt;/code&gt; to fire Spark jobs and uses D3 to present the results. Working with bleeding edge technologies previously taught us they tend to have sharp edges. Actually none of them were very serious: during compilation &lt;code&gt;Job Server&lt;/code&gt; didn&amp;#39;t pass all the tests (so we&amp;#39;ve turned them off...) and &lt;code&gt;AJAX&lt;/code&gt; refused to send requests to the remote domain (so we&amp;#39;ve hacked the &lt;code&gt;Job Server&lt;/code&gt; to include &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; HTTP header).&lt;/p&gt;

&lt;p&gt;As of &lt;code&gt;D3&lt;/code&gt;, we haven&amp;#39;t used any off-the-shelf 2D histogram function. Instead we&amp;#39;ve used range of lower level &lt;code&gt;D3&lt;/code&gt; features: &lt;code&gt;AJAX&lt;/code&gt; requests handling, &lt;code&gt;SVG&lt;/code&gt; manipulation and chart axis drawing.&lt;/p&gt;

&lt;h3&gt;The results&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/spark-d3-super-cow-powers/lactation-one-marker.png&quot; alt=&quot;Lactation curves passing a given point.&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fig. 2.&lt;/strong&gt; Lactation curves passing a given point. &lt;/p&gt;

&lt;p&gt;Above are the results of our work. Once again we&amp;#39;ve experienced that a picture is worth a thousand words. &lt;code&gt;X-axis&lt;/code&gt; represents days after calving , while &lt;code&gt;Y-axis&lt;/code&gt; corresponds to the milk yield. The darker the rectangle, the more data points in it. Red line is arithmetic mean. We&amp;#39;ll keep you informed about our milky-project. Moo!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Affiliation parsing in CERMINE</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2014/11/13/cermine-affiliations.html"/>
		<updated>2014-11-13T09:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2014/11/13/cermine-affiliations</id>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://cermine.ceon.pl/&quot;&gt;CERMINE&lt;/a&gt; is our Java library for extracting metadata from scientific literature. Among other information, CERMINE extracts the authors of the input document, their affiliations, and also associates authors with affiliations. Recently new functionality has beed added: affiliation parsing.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;The goal of affiliation parsing is to recognize affiliation string fragments related to institution, address and country. Additionally, country names are decorated with their ISO codes. Here follows an example of a parsed affiliation string (it conforms to the &lt;a href=&quot;http://jats.nlm.nih.gov/archiving/&quot;&gt;JATS&lt;/a&gt; document description format):&lt;/p&gt;

&lt;pre&gt;
&amp;lt;aff id=&quot;id&quot;&amp;gt;
  &amp;lt;label&amp;gt;id&amp;lt;/label&amp;gt;
  &amp;lt;institution&amp;gt;Interdisciplinary Centre for Mathematical and Computational Modelling, University of Warsaw&amp;lt;/institution&amp;gt;,
  &amp;lt;addr-line&amp;gt;ul. Prosta 69, 00-838 Warsaw&amp;lt;/addr-line&amp;gt;,
  &amp;lt;country country=&quot;PL&quot;&amp;gt;Poland&amp;lt;/country&amp;gt;
&amp;lt;/aff&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Affiliations are parsed with the use of Conditional Random Fields classifier. First the affiliation string is tokenized, then each token is classified as &lt;i&gt;institution&lt;/i&gt;, &lt;i&gt;address&lt;/i&gt;, &lt;i&gt;country&lt;/i&gt; or &lt;i&gt;other&lt;/i&gt;, and finally neighbouring tokens with the same label are concatenated. The main feature used in CRFs is the classified word itself. Additional features are all binary: whether the token is a number, whether it is all uppercase/lowercase word, whether it is a lowercase word that starts with an uppercase letter, whether the token is contained by dictionaries of countries or words commonly appearing in institutions or addresses. Additionally, the token&amp;#39;s feature vector contains not only features of the token itself, but also features of two preceding and two following tokens.&lt;/p&gt;

&lt;p&gt;Affiliation parser was evaluated by a 5-fold cross validation with the use of 8,000 affiliations from &lt;a href=&quot;ftp://ftp.ncbi.nlm.nih.gov/pub/pmc&quot;&gt;PubMed Central Open Access Subset&lt;/a&gt;. Labelled affiliation fragment (institution, address or country) was considered correct only if the entire string was identical to the ground truth. The following results were obtained:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;institution was correctly recognized in 92.4% of cases,&lt;/li&gt;
&lt;li&gt;address was correctly recognized in 92.3% of cases,&lt;/li&gt;
&lt;li&gt;country was correctly recognized in 99.5% of cases,&lt;/li&gt;
&lt;li&gt;92.1% of affiliations were entirely correctly parsed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Affiliation parser can be used via REST service. It can be accessed using &lt;font face=&quot;Courier New,Courier,monospace&quot;&gt;cURL&lt;/font&gt; tool:&lt;/p&gt;

&lt;pre&gt;
$ curl -X POST --data &quot;affiliation=the text of the affiliation&quot; http://cermine.ceon.pl/parse.do
&lt;/pre&gt;

&lt;p&gt;For more information about the usage, visit &lt;a href=&quot;https://github.com/CeON/CERMINE&quot;&gt;CERMINE&amp;#39;s GitHub page&lt;/a&gt;.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Interview with Michael Jordan about machine learning, big data, and other things</title>
		<link href="http://adalab.icm.edu.pl/blog/technology/2014/10/27/interview-with-michael-jordan.html"/>
		<updated>2014-10-27T19:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/technology/2014/10/27/interview-with-michael-jordan</id>
		<content type="html">&lt;p&gt;Recently, &lt;a href=&quot;http://spectrum.ieee.org/robotics/artificial-intelligence/machinelearning-maestro-michael-jordan-on-the-delusions-of-big-data-and-other-huge-engineering-efforts&quot;&gt;IEEE Spectrum interviewed&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_I._Jordan&quot;&gt;Michael Jordan&lt;/a&gt; - a leading researcher in machine learning. He gave his view on hype in machine learning as well as in big data analysis and presented his point of view related to some other interesting issues (technological singularity, P=NP, Turing test).&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Here are more interesting points related to machine learning and big data that were made by the researcher:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;biological interpretations seem to be overused&lt;/strong&gt; in the field of machine learning. Case in the point: activation function used in the neural network perceptron model is the same function as the one used in the statistical method called logistic regression that dates back to 1950s. The former method has nothing to do with neurons.&lt;/li&gt;
&lt;li&gt;Due to huge amount of data analyzed, it is &lt;strong&gt;very easy to find spurious dependencies in big-data projects&lt;/strong&gt;. People active in the field are not paying enough attention to this problem. There are some statistical methods to deal with these problems, like familywise error statistical tests, but many of them haven&amp;#39;t been studied computationally and it will take decades to get them right.&lt;/li&gt;
&lt;li&gt;Data analysis can deliver inferred data at a certain level of quality and we need to be explicit about it. We &lt;strong&gt;need to add error bars to the inferred data that we show&lt;/strong&gt;. This is approach is missing in much of the current machine learning literature.&lt;/li&gt;
&lt;li&gt;Because big data analyses often do not present information about the quality of produced prediction, an in more general terms, the analyses are often not methodologically sound, this might result in &lt;strong&gt;&amp;quot;big-data winter.&amp;quot;&lt;/strong&gt; This will be a general state of disappointment and lack of funding related to big data after its hype bubble bursts.&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry>
	
	<entry>
		<title>Paperity chooses CERMINE as its content extraction engine</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2014/10/23/paperity-chooses-cermine.html"/>
		<updated>2014-10-23T12:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2014/10/23/paperity-chooses-cermine</id>
		<content type="html">&lt;p&gt;&lt;em&gt;This is a guest post by Selcuk Ayguney and Marcin Wojnarski, creators of Paperity.  We invited the authors to share their reasons for choosing ADA Lab&amp;#39;s (&lt;a href=&quot;/blog/news/2014/04/11/cermine-at-das.html&quot;&gt;recently awarded&lt;/a&gt;) CERMINE as their content extraction engine.  Here&amp;#39;s their story.&lt;/em&gt;&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Paperity (&lt;a href=&quot;http://www.paperity.org&quot;&gt;www.paperity.org&lt;/a&gt;) is the first multi-disciplinary aggregator of peer-reviewed Open Access journals and papers, &amp;quot;gold&amp;quot; and &amp;quot;hybrid&amp;quot;. It was launched in the beginning of October 2014 to facilitate access to scholarly literature across all different fields and already now includes nearly 200,000 articles from over 2,000 journals. While developing Paperity, we encountered the problem of extracting full text from PDF documents. Vast majority of academic papers are published as PDFs, and we wanted to unlock their contents and make them searchable in Paperity.&lt;/p&gt;

&lt;p&gt;Extracting text from a PDF document is one of the hardest practical problems that seem easy on the first sight. It should not be much different than using a word processor, right? Absolutely wrong. PDF format is designed for laying out pages and faithfully reproducing the same visual layout everywhere, be it a screen or a printer. Therefore, it does not consist of a continuous stream of letters, words, and sentences; but of pages and objects with specific sizes and coordinates relative to the page. This is a very low-level representation that must be thoroughly preprocessed before it can be analyzed as a complete text. Moreover, PDF authoring tools apply different typographical tricks while converting the text to PDF. For example, letters &amp;quot;f&amp;quot; and &amp;quot;i&amp;quot; are typically joined in a single &amp;quot;glyph&amp;quot;, to make them look better when printed, so that, for instance, the word &amp;quot;justification&amp;quot; in your word processor becomes &amp;quot;justiﬁcation&amp;quot; (note the single character that is a combination of &amp;quot;f&amp;quot; and &amp;quot;i&amp;quot;) when converted to PDF. This adds another level of complexity while extracting text. Split words at the end of lines pose another problem.&lt;/p&gt;

&lt;p&gt;We evaluated several toolkits designed for text extraction from PDF documents. In this article, we will share our findings and the rationale behind our final choice of CERMINE – the extraction tool developed by ADA Lab and CeON in ICM UW.
After reviewing many packages, we shortlisted the following three open source tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://mstamy2.github.io/PyPDF2/&quot;&gt;PyPDF2&lt;/a&gt;: Written in Python, PyPDF2 is the successor of pyPDF and mainly focuses on document manipulation.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pdfbox.apache.org/&quot;&gt;Apache PDFBox&lt;/a&gt;: Written in Java, it allows creation of new PDF documents, manipulation of existing documents and the ability to extract contents from documents.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cermine.ceon.pl/&quot;&gt;CERMINE&lt;/a&gt;: Written in Java, designed specifically for analysis of scholarly articles; it is both a library and a web service for extracting metadata and content from scientific papers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We will use a sample Open Access paper (Sulfolobus chromatin proteins modulate strand displacement by DNA polymerase B1, &lt;em&gt;Nucleic Acids Research&lt;/em&gt;, 2013, Vol. 41, No. 17, accessible at &lt;a href=&quot;http://paperity.org/p/34709961&quot;&gt;http://paperity.org/p/34709961&lt;/a&gt;) to demonstrate some of the test cases we were concerned with. An image of the first page is included here for understanding the test results:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test-pdf.png&quot; alt=&quot;Original&quot;&gt;&lt;/p&gt;

&lt;h2&gt;Content Selection Comparison&lt;/h2&gt;

&lt;p&gt;The first problem that arises during analysis of scholarly PDFs is how to correctly detect different blocks of text. A scholarly paper is not a continuous  stream of words. Rather, it contains many different sections that can be arranged in very different ways on the page and inside entire document. Each block plays a different role, therefore it is important to correctly detect all of them and discover what roles they play in the document. Only CERMINE was able to do this job. Below we give a preview of outputs of all the three tools.&lt;/p&gt;

&lt;p&gt;PDFMiner:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test1-pdfminer.png&quot; alt=&quot;PDFMiner output&quot;&gt;&lt;/p&gt;

&lt;p&gt;PDFBox:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test1-pdfbox.png&quot; alt=&quot;PDFBox output&quot;&gt;&lt;/p&gt;

&lt;p&gt;CERMINE:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test1-cermine.png&quot; alt=&quot;CERMINE output&quot;&gt;&lt;/p&gt;

&lt;p&gt;(Please note that the red arrows denote line wraps.)&lt;/p&gt;

&lt;p&gt;At the beginning of the text extracted by PDFMiner and PDFBox, you can see meta data (title, journal name, authors) and article abstract, all combined into one stream of text. Moreover, paragraphs are most often broken into many separate lines in the output stream. 
CERMINE, on the other hand, can properly concatenate lines that belong to the same paragraph. It also detects the type of each block and starts extraction directly with the main body of the article. When necessary, CERMINE can also extract meta data fields as separate items in the output XML file.&lt;/p&gt;

&lt;p&gt;All the three tools did a good job eliminating the download link written vertically on the right hand side of the pages.&lt;/p&gt;

&lt;h2&gt;Paragraph Structure and Formatting Comparison&lt;/h2&gt;

&lt;p&gt;Below is a more detailed example of how paragraphs are processed by the evaluated tools.&lt;/p&gt;

&lt;p&gt;Original:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test2-pdf.png&quot; alt=&quot;Original&quot;&gt;&lt;/p&gt;

&lt;p&gt;PDFMiner:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test2-pdfminer.png&quot; alt=&quot;PDFMiner output&quot;&gt;&lt;/p&gt;

&lt;p&gt;PDFBox:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test2-pdfbox.png&quot; alt=&quot;PDFBox output&quot;&gt;&lt;/p&gt;

&lt;p&gt;CERMINE:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/paperity/test2-cermine.png&quot; alt=&quot;CERMINE output&quot;&gt;&lt;/p&gt;

&lt;p&gt;We can see that both PDFMiner and PDFBox produce line breaks wherever the original PDF has one, while CERMINE successfully joins lines into paragraphs, retaining the document structure. In other experiments, we have also found that CERMINE can actually represent the paragraph structure with high accuracy.&lt;/p&gt;

&lt;p&gt;Moreover, only CERMINE was able to successfully merge split words: like “com-pacted” in the example above, merged to “compacted”. This is a very important feature, especially in documents with multi-column layout, where split words are very common.
While PDFMiner was unable to parse typographical shorthands (like joined f and i), both PDFBox and CERMINE were able to interpret them correctly.&lt;/p&gt;

&lt;h2&gt;Conclusions&lt;/h2&gt;

&lt;p&gt;All in all, we found CERMINE to be a very sophisticated and reliable tool for analysis of scholarly PDFs. It does an excellent job in detecting different types of blocks, preserving the structure of paragraphs and decoding characters correctly. What is also important, CERMINE is open source, which enables unconstrained use and guarantees that the tool will be easy to customize when necessary and will have a growing community of users and contributors. That is why we decided to use it in Paperity. &lt;/p&gt;

&lt;p&gt;We hope that CERMINE will be further developed in the future and one of possible directions that we might suggest is the recognition of national characters – a difficult task, given the peculiar encoding used in many PDFs, but very important for scholarly community and surely the one that can be successfully solved by CERMINE team.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Summer internship at ADA Lab</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2014/10/06/summer-internship.html"/>
		<updated>2014-10-06T09:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2014/10/06/summer-internship</id>
		<content type="html">&lt;p&gt;My name is Jan Lasek and I was an intern at ICM ADA Lab team in the summer time. And I need to say that it was a great experience to work here!&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;I cooperated with Dominika Tkaczyk on implementing a new functionality to &lt;a href=&quot;http://cermine.ceon.pl/&quot;&gt;CERMINE&lt;/a&gt; project. Our goal was to extract table of contents from scholarly publications. This is, like many other problems in PDF processing, a challenging task. It is quite simple for a human, or even straightforward, however, the machines are still struggling with tasks of such type.&lt;/p&gt;

&lt;p&gt;To be more precise: a given PDF is a sequence of consecutive lines of text. The goal is to extract the header lines into structured table of content. We divided the main task into two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;extracting outlying lines in a document that are presumably a header line and&lt;/li&gt;
&lt;li&gt;grouping the lines according to similar formatting to arrive with sections, subsections and possible subsubsection headers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our initial approach to the first task was to perform clustering on lines according to their different properties. We wanted to identify outliers, i.e. the lines that did not fit into main group of lines. This solution resulted in retrieving most of the headers, however, also many false positives, which were other lines looking &amp;quot;suspicious&amp;quot; (e.g. equations, part of the tables, the last line in a column). We decided to give a supervised classifier a try, which learns to select header lines. To this end, we labeled all lines in 150 documents as regular or header lines. For the task of classification we employed Random Forest algorithm as &amp;quot;the best off-the-shelf classifier&amp;quot;. This gave us promising results with about 0.95 of F-score statistic. &lt;/p&gt;

&lt;p&gt;As far as second task is concerned, we used clustering algorithm to choose the best division of the lines (previously identified as &amp;quot;headers&amp;quot; in the first step) into one, two or three groups. In initial experiments, when we applied the clustering algorithm to the &amp;quot;clear data&amp;quot; (that is, manually labeled lines) we were able to extract 3 out of 4 table of contents without any mistake. When we merged both steps of the project we obtained a solution that retrieves every second table of content without an error. There is still some work to be done to arrive at 9 out of 10 accuracy!&lt;/p&gt;

&lt;p&gt;Summing up, my internship at ICM UW was time well spent and I really appreciate that experience. I had an opportunity to work on an interesting and challenging task and cooperate with people passionate about their work. See you soon!&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Impressions from PolTAL 2014</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2014/09/30/impressions-from-poltal.html"/>
		<updated>2014-09-30T20:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2014/09/30/impressions-from-poltal</id>
		<content type="html">&lt;p&gt;A couple of days ago, members of our lab participated in
&lt;a href=&quot;http://poltal.ipipan.waw.pl/&quot;&gt;PolTAL 2014&lt;/a&gt;, a conference bringing together
linguists, computer scientists, and other researchers involved 
in computational linguistics and natural language processing.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;After &lt;a href=&quot;http://icetal.ru.is/&quot;&gt;Island&lt;/a&gt;, 
&lt;a href=&quot;http://lang.cs.tut.ac.jp/japtal2012/&quot;&gt;Japan&lt;/a&gt; 
and numerous other distant places, TAL conference made it to Warsaw this year.
Therefore, the two of the ADALabers 
(Michał Jungiewicz and &lt;a href=&quot;/people/lopuszynski&quot;&gt;Michał Łopuszyński&lt;/a&gt;)
used this opportunity to present a poster on 
&lt;a href=&quot;http://poltal.ipipan.waw.pl/files/2614/1111/5047/P3.9_-_Unsupervised_keyword_extraction_from_Polish_legal_texts.pdf&quot;&gt;Unsupervised Keyword Extraction from Polish Legal Texts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The conference was full of interesting and informative research reports.
All the &lt;a href=&quot;http://poltal.ipipan.waw.pl/index.php/programme&quot;&gt;materials&lt;/a&gt; were generously made
available by the participants with the encouragement and help from the
organisers. Springer published the LNCS volume with &lt;a href=&quot;http://link.springer.com/book/10.1007/978-3-319-10888-9&quot;&gt;PolTAL
Proceedings&lt;/a&gt;.
They promise to keep it available for free within a few  weeks 
after the closing of the conference. So do not hesitate to grab your copy!&lt;/p&gt;

&lt;p&gt;Just to wet your appetite before browsing the above materials, let us
mention some of our personal highlights.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.rug.nl/staff/johan.bos/&quot;&gt;Johan Bos&lt;/a&gt; presented an excellent
keynote on 
&lt;a href=&quot;http://poltal.ipipan.waw.pl/files/3514/1098/5369/I1_-_Adventures_in_Meaning_Banking.pdf&quot;&gt;Adventures in Meaning Banking&lt;/a&gt;, 
where he gave an overview of the experiences from building 
&lt;a href=&quot;http://gmb.let.rug.nl/&quot;&gt;Groningen Meaning Bank (GMB)&lt;/a&gt;.
GMB is free! Interestingly, not only you can 
&lt;a href=&quot;http://gmb.let.rug.nl/explorer/explore.php&quot;&gt;browse it&lt;/a&gt;,
&lt;a href=&quot;http://gmb.let.rug.nl/data.php&quot;&gt;download it&lt;/a&gt;, 
but you may also &lt;strong&gt;improve the GMB&lt;/strong&gt;. This last thing you do by
playing a game called &lt;a href=&quot;http://www.wordrobe.org&quot;&gt;wordrobe&lt;/a&gt; (sic!).
This is an excellent application example of
&lt;a href=&quot;http://en.wikipedia.org/wiki/Human-based_computation_game&quot;&gt;game with a purpose&lt;/a&gt;
– a recently popular strategy to attract volunteers to a project. &lt;/p&gt;

&lt;p&gt;Melanie Reiplinger presented a very tasty talk on &lt;a href=&quot;http://poltal.ipipan.waw.pl/files/1214/1112/0026/O6.1_-_Relation_Extraction_for_the_Food_Domain_without_Labeled_Training_Data_-_Is_Distant_Supervision_the_Best_Solution.pdf&quot;&gt;Relation Extraction for the
Food Domain&lt;/a&gt;.
This was mostly focused on relations &lt;em&gt;substitutedBy&lt;/em&gt; and &lt;em&gt;suitsTo&lt;/em&gt;. The
analysis was carried out on unlabelled data from the
&lt;a href=&quot;http://www.chefkoch.de/&quot;&gt;chefkoch.de&lt;/a&gt; community forum.  Melanie and her
colleagues even put up a 
&lt;a href=&quot;http://www.lsv.uni-saarland.de/personalPages/michael/relFood.html&quot;&gt;web page with data&lt;/a&gt;
together with a little 
&lt;a href=&quot;http://ws45lx.lsv.uni-saarland.de/startForm.html&quot;&gt;demo in German&lt;/a&gt; 
to let you play with their results...&lt;/p&gt;

&lt;p&gt;There were also many interesting posters, e.g., 
&lt;a href=&quot;http://poltal.ipipan.waw.pl/files/6414/1103/6933/P3.10__Evaluation_of_IR_Strategies_for_Polish.pdf&quot;&gt;Evaluation of IR Strategies for Polish&lt;/a&gt; (this is always interesting, if you work with search
engines for documents in Polish, like we do),
&lt;a href=&quot;http://poltal.ipipan.waw.pl/files/8114/1104/6749/P3.1_-_NER_in_tweets_using_a_small_crowdsourced_dataset.PDF&quot;&gt;Named Entity Recognition in Tweets&lt;/a&gt; 
(the form of micropost renders many traditional linguistic tools useless, 
so you have to develop new), or 
&lt;a href=&quot;http://poltal.ipipan.waw.pl/files/5814/1111/6909/P3.6_-_Slovak_Web_Discussion_Corpus.pdf&quot;&gt;Slovak Web Discussion Corpus and accompanying NLP tools&lt;/a&gt;
(in terms of the NLP resources, Slavic languages are unpopular and difficult to 
work with, so we appreciate the efforts of our colleagues from Košice).&lt;/p&gt;

&lt;p&gt;The above highlights are by no means exhaustive, we definitely 
encourage you to fish for your own favourites 
&lt;a href=&quot;http://poltal.ipipan.waw.pl/index.php/programme&quot;&gt;here&lt;/a&gt;
and 
&lt;a href=&quot;http://link.springer.com/book/10.1007/978-3-319-10888-9&quot;&gt;there&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;In the meanwhile, we countdown to xTAL 2016, wherever x turns out to be ... &lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Mind the gap! – DL2014</title>
		<link href="http://adalab.icm.edu.pl/blog/news/2014/09/23/ada-lab-at-dl2014.html"/>
		<updated>2014-09-23T09:30:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/news/2014/09/23/ada-lab-at-dl2014</id>
		<content type="html">&lt;p&gt;Recently a few people from our lab visited London to participate in the &lt;a href=&quot;http://www.dl2014.org/&quot;&gt;Digital Libraries 2014&lt;/a&gt; which was a conjunction of TPDL and JCDL – two best-known conferences on digital libraries. &lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Łukasz was co-chairing the &lt;a href=&quot;http://lcpd2014.research-infrastructures.eu&quot;&gt;2nd Workshop on Linking and Contextualizing Publications and Datasets&lt;/a&gt; while Dominika and Mateusz were presenting their results on the &lt;a href=&quot;http://core-project.kmi.open.ac.uk/dl2014/&quot;&gt;3rd International Workshop on Mining Scientific Publications&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;LCPD2014 had a number of great presentations and — even more importantly — lively discussions about managing, sharing, peer-reviewing and citing research data sets.  There was a good mix of theory and practice, including an excellent case study of the CRAWDAD repository presented by Tristan Henderson, and a comprehensive list of &amp;quot;dos&amp;quot; and &amp;quot;don&amp;#39;ts&amp;quot; for data repositories by Sarah Callaghan, based on her peer review of Earth sciences data sets.&lt;/p&gt;

&lt;p&gt;WOSP2014 was an amazing opportunity to meet people from all over the world interested in scholarly communication, including the gurus like C. Lee Giles. Having discovered several very promising possible cooperation areas, we can&amp;#39;t wait to unveil more details soon. Meanwhile, here are our presentation slides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dominika Tkaczyk, Pawel Szostek and Łukasz Bolikowski: &lt;a href=&quot;http://www.slideshare.net/dtkaczyk/tkaczyk-grotoap2slides&quot;&gt;GROTOAP2 - The methodology of creating a large ground truth dataset of scientific articles&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Mateusz Fedoryszak and Łukasz Bolikowski: &lt;a href=&quot;http://www.slideshare.net/mfedoryszak/wosp-2014-39398147&quot;&gt;Efficient blocking method for a large scale citation matching&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Proceedings from both events will soon appear as special issues in the &lt;a href=&quot;http://www.dlib.org/&quot;&gt;D-Lib Magazine&lt;/a&gt;.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Want to remember Spark API or learn Scala? Use our courses on memrise.com</title>
		<link href="http://adalab.icm.edu.pl/blog/technology/2014/09/15/memrise.html"/>
		<updated>2014-09-15T15:30:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/technology/2014/09/15/memrise</id>
		<content type="html">&lt;p&gt;You need &lt;a href=&quot;https://www.youtube.com/watch?v=5MgBikgcWnY&quot;&gt;20 hours to be initially good at something&lt;/a&gt; and &lt;a href=&quot;http://www.bbc.com/news/magazine-26384712&quot;&gt;10000 hours to be an expert in any domain&lt;/a&gt;. Be an expert easier and faster!&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;So how do you do it? First of all, you do the same thing for a long time. In fact, this is everything you need. The longer version is that you are good at something because you are refreshing your knowledge repeatedly. In order to do it effectively, you should make &lt;a href=&quot;http://en.wikipedia.org/wiki/Learning_curve&quot;&gt;Learning Curve&lt;/a&gt; work for you and not against you.&lt;/p&gt;

&lt;p&gt;Now, how to be an expert in everything you want and at the same time use the Learning Curve? To do so, you need to be exposed to the knowledge at appropriate time intervals. Doing it by yourself is tedious, but what if there was an app that could do it for you? And what if its name was &lt;a href=&quot;http://www.memrise.com/&quot;&gt;Memrise&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;Eventually, the most important question: how would this blog post go if no more freaky question were asked?!&lt;/p&gt;

&lt;p&gt;So we have this great tool and we can use it. In IT there are myriads of APIs and other stuff.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, learning Google Guava is as easy as growing and watering when following the course &lt;a href=&quot;http://www.memrise.com/course/388287/google-guava-library/&quot;&gt;&amp;quot;Google Guava Library&amp;quot;&lt;/a&gt; (when you follow the link you will know why I have suddenly switched to gardening vocabulary). &lt;/li&gt;
&lt;li&gt;Description of your stuff in Linux OS is in the course &lt;a href=&quot;http://www.memrise.com/course/388195/linux-file-system-hierarchy/&quot;&gt;&amp;quot;Linux file system hierarchy&amp;quot;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fancy Vim shortcuts are in &lt;a href=&quot;http://www.memrise.com/course/376522/vi-keyboard/&quot;&gt;&amp;quot;Vi Keyboard&amp;quot;&lt;/a&gt; and &lt;a href=&quot;http://www.memrise.com/course/52903/vim-2/&quot;&gt;&amp;quot;Vim&amp;quot;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is good time to state that I am not an employee of Memrise and I have no shares of it in my pocket. Also, although above courses are mainly created by me, they are free and you can use them to boost your own skills.&lt;/p&gt;

&lt;p&gt;As I have much more courses to mention, I grouped them into tracks which allow building one skill set at a time.&lt;/p&gt;

&lt;h3&gt;Perfect UNIX Administrator&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/50252/shell-fu/&quot;&gt;Shell-fu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/195200/ubuntu-keyboard-shortcuts/&quot;&gt;Ubuntu Keyboard Shortcuts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/52903/vim-2/&quot;&gt;VIM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/376522/vi-keyboard/&quot;&gt;Vi Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/18097/an-introduction-to-regular-expressions/&quot;&gt;An introduction to regular expressions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/388195/linux-file-system-hierarchy/&quot;&gt;Linux fies system hierarchy&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Programming Polyglot&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/http://www.memrise.com/course/311897/frequently-used-r-commands/&quot;&gt;Frequently Used R Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/58531/r-reference-card/&quot;&gt;R Reference Card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/368089/scala-cheat-sheet/&quot;&gt;Scala Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/373527/scala-unauthorised-twitter-school/&quot;&gt;Scala [unauthorized] Twitter School&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/388355/apache-pig-built-in-udfs/&quot;&gt;Apache Pig Built-in UDFs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/375026/apache-spark-api-basics/&quot;&gt;Apache Spark API Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/388287/google-guava-library/&quot;&gt;Google Guava Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/378101/githubs-git-cheat-sheet/&quot;&gt;Github Git Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Google Cloud Engine Specialist&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/379024/unauthorised-gcloud-usage/&quot;&gt;[unauthorized] GCloud Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/379048/unauthorised-bdutil-usage/&quot;&gt;[unauthorized] BDUtil Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/375026/apache-spark-api-basics/&quot;&gt;Apache Spark API Basics&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Connoisseur of Poland :-)&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/80288/poczet-wadcow-polski/&quot;&gt;Poczet władców Polski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/84282/podzia-administracyjny-polski/&quot;&gt;Podział administracyjny Polski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/107235/cities-of-poland/&quot;&gt;Miasta Polski&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/197593/dzielnice-warszawy/&quot;&gt;Dzielnice Warszawy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/68562/prawo-jazdy/&quot;&gt;Prawo jazdy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.memrise.com/course/171583/polskie-sowka-ktore-zwieksza-obwod-twojego-bicka/&quot;&gt;Polskie słówka, które zwiększą obwód twojego bicka&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content>
	</entry>
	
	<entry>
		<title>datadr: split-apply-combine package for R backed by Hadoop</title>
		<link href="http://adalab.icm.edu.pl/blog/technology/2014/09/04/R-datadr.html"/>
		<updated>2014-09-04T17:40:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/technology/2014/09/04/R-datadr</id>
		<content type="html">&lt;p&gt;&lt;code&gt;datadr&lt;/code&gt; is a package for the &lt;a href=&quot;http://www.r-project.org&quot;&gt;R&lt;/a&gt; programming language that provides a functionality of split-apply-combine for data transformation. See the &lt;a href=&quot;http://tesseradata.org/docs-datadr/#quickstart&quot;&gt;Quickstart section&lt;/a&gt; in project&amp;#39;s documentation for a nice overview of package&amp;#39;s capabilities.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;The package has three back-ends: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one to process small data on a single processor core, &lt;/li&gt;
&lt;li&gt;second one to process medium data on many cores, &lt;/li&gt;
&lt;li&gt;and the third one, called &lt;a href=&quot;http://www.datadr.org&quot;&gt;RHIPE&lt;/a&gt;, to process big data on a Hadoop cluster using MapReduce programming model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The split-apply-combine functionality allows the user to &lt;strong&gt;split&lt;/strong&gt; data into subsets, &lt;strong&gt;apply&lt;/strong&gt; certain transformation to each of the subsets, and &lt;strong&gt;combine&lt;/strong&gt; the results; its counterpart in SQL is the &lt;code&gt;GROUP BY&lt;/code&gt; functionality. This functionality is analogous to the functionality provided by two other popular R libraries: &lt;code&gt;plyr&lt;/code&gt; and &lt;code&gt;dplyr&lt;/code&gt;. The main difference is that &lt;code&gt;datadr&lt;/code&gt; can use the Hadoop cluster and thus process really large amounts of data (see project&amp;#39;s &lt;a href=&quot;http://tesseradata.org/docs-datadr/#faq&quot;&gt;FAQ&lt;/a&gt; for more details).&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/tesseradata/datadr&quot;&gt;github page of &lt;code&gt;datadr&lt;/code&gt;&lt;/a&gt; project shows that the first commit was made in March 2013 and the project has one developer. On the other hand, the &lt;a href=&quot;https://github.com/tesseradata/RHIPE&quot;&gt;github page of Hadoop&amp;#39;s backend RHIPE&lt;/a&gt; shows that the first commit was made in August 2009 and it has 5 developers.&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>CockroachDB: an open source version of Google Spanner</title>
		<link href="http://adalab.icm.edu.pl/blog/technology/2014/07/25/cocroachdb.html"/>
		<updated>2014-07-25T10:20:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/technology/2014/07/25/cocroachdb</id>
		<content type="html">&lt;p&gt;A team of ex-Googlers is building an open source version of Google Spanner, i.e., a transactional database that spans across many data centers.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Spanner_%28database%29&quot;&gt;GoogleSpanner&lt;/a&gt; is a globally-scalable database system used internally by Google; it is the successor of the &lt;a href=&quot;http://en.wikipedia.org/wiki/BigTable&quot;&gt;BigTable&lt;/a&gt; database. The database supports SQL-like queries, implements transactions, is distributable among many data centers, and is fast. The &lt;a href=&quot;http://research.google.com/archive/spanner.html&quot;&gt;paper describing the technology&lt;/a&gt; published by a team of Googlers in 2012 caused quite a stir in the community since it managed to marry features that were thought to not be possible to combine together (e.g., see &lt;a href=&quot;http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html&quot;&gt;Hight Scalability blog&lt;/a&gt; or Doug Cutting&amp;#39;s statement that Spanner-like technology should be the next step in Hadoop&amp;#39;s evolution (see &lt;a href=&quot;http://www.cloudera.com/content/cloudera/en/resources/library/aboutcloudera/beyond-batch-the-evolution-of-the-hadoop-ecosystem-doug-cutting-video.html&quot;&gt;the clip with him where he talks about Hadoop&amp;#39;s evolution&lt;/a&gt; - the interesting part starts at 5:50)).&lt;/p&gt;

&lt;p&gt;Now, as reported in a &lt;a href=&quot;http://www.wired.com/2014/07/cockroachdb/&quot;&gt;recent article at Wired&lt;/a&gt;, a team of ex-Googlers is developing an open source version of the Google Spanner called &lt;a href=&quot;http://cockroachdb.org/&quot;&gt;CockroachDB&lt;/a&gt;. However, the team does not plan to implement all the features of the original solution in the first version of the project. Currently, their focus is on automatic replication of data between data centers and assuring lack of dependency of the solution on any particular distributed file system or system manager. According to the article, the project is in &amp;quot;alpha&amp;quot; development phase and is &amp;quot;nowhere near ready for use with production services.&amp;quot;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Building Apache Spark App with Maven</title>
		<link href="http://adalab.icm.edu.pl/blog/technology/2014/07/15/building-apache-spark-app.html"/>
		<updated>2014-07-15T12:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/technology/2014/07/15/building-apache-spark-app</id>
		<content type="html">&lt;p&gt;Recently we&amp;#39;ve been working on building Spark apps with Maven.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;We&amp;#39;ve found these two texts very valuable: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://spark.apache.org/docs/0.9.1/quick-start.html&quot;&gt;http://spark.apache.org/docs/0.9.1/quick-start.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.cloudera.com/blog/2014/04/how-to-run-a-simple-apache-spark-app-in-cdh-5/&quot;&gt;http://blog.cloudera.com/blog/2014/04/how-to-run-a-simple-apache-spark-app-in-cdh-5/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, we wanted something more: deployment of Spark app dependant
on additional libraries. In this note we&amp;#39;ll show you how to do that. 
Complete code is available on &lt;a href=&quot;https://github.com/CeON/spark-intro&quot;&gt;GitHub&lt;/a&gt;, 
here we&amp;#39;ll just highlight some snippets.&lt;/p&gt;

&lt;p&gt;Two elements are needed. First, appropriate settings in dependencies 
section of POM file. Note that Spark and Scala library are marked provided.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.scala-lang&lt;span class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;scala-library&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;2.10.3&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;provided&lt;span class=&quot;nt&quot;&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.spark&lt;span class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;spark-core_2.10&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;0.9.1&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;provided&lt;span class=&quot;nt&quot;&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;c&quot;&gt;&amp;lt;!-- that&amp;#39;s our additional dependency --&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.google.guava&lt;span class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;guava&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;14.0&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Second, the submit.sh script to make building the classpath easier.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# Example usage:&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# ./submit.sh target/spark-intro-1.0-SNAPSHOT-jar-with-dependencies.jar -Dspark.master=local SimpleApp&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;JAR_FILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;REMINDER&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;@:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# If needed, alter these paths to confirm with your config&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; /etc/spark/conf/spark-env.sh

&lt;span class=&quot;nv&quot;&gt;SPARK_HOME&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/usr/lib/spark&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;SPARK_HOME
&lt;span class=&quot;nv&quot;&gt;HADOOP_HOME&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/usr/lib/hadoop&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;HADOOP_HOME

&lt;span class=&quot;c&quot;&gt;# system jars:&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;CLASSPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/etc/hadoop/conf
&lt;span class=&quot;nv&quot;&gt;CLASSPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$CLASSPATH&lt;/span&gt;:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/*:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/lib/*
&lt;span class=&quot;nv&quot;&gt;CLASSPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$CLASSPATH&lt;/span&gt;:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/../hadoop-mapreduce/*:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/../hadoop-mapreduce/lib/*
&lt;span class=&quot;nv&quot;&gt;CLASSPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$CLASSPATH&lt;/span&gt;:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/../hadoop-yarn/*:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/../hadoop-yarn/lib/*
&lt;span class=&quot;nv&quot;&gt;CLASSPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$CLASSPATH&lt;/span&gt;:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/../hadoop-hdfs/*:&lt;span class=&quot;nv&quot;&gt;$HADOOP_HOME&lt;/span&gt;/../hadoop-hdfs/lib/*
&lt;span class=&quot;nv&quot;&gt;CLASSPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$CLASSPATH&lt;/span&gt;:&lt;span class=&quot;nv&quot;&gt;$SPARK_HOME&lt;/span&gt;/assembly/lib/*

&lt;span class=&quot;c&quot;&gt;# app jar:&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;CLASSPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$CLASSPATH&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&amp;quot;$JAR_FILE&amp;quot;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;CONFIG_OPTS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;-Dspark.jars=$JAR_FILE&amp;quot;&lt;/span&gt;
java -cp &lt;span class=&quot;nv&quot;&gt;$CLASSPATH&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$CONFIG_OPTS&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$REMINDER&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To run everything just type:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;git clone https://github.com/CeON/spark-intro.git
&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;spark-intro  
mvn clean compile assembly:single
./submit.sh target/spark-intro-1.0-SNAPSHOT-jar-with-dependencies.jar -Dspark.master&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;SimpleApp&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Happy coding!&lt;/em&gt;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>Data science workflow</title>
		<link href="http://adalab.icm.edu.pl/blog/technology/2014/06/13/data-science-workflow.html"/>
		<updated>2014-06-13T16:30:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/technology/2014/06/13/data-science-workflow</id>
		<content type="html">&lt;p&gt;Description of a workflow of a data scientists published on &lt;a href=&quot;http://cacm.acm.org/blogs/blog-cacm/169199-data-science-workflow-overview-and-challenges/fulltext&quot;&gt;CACM blog&lt;/a&gt;.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Generally, the workflow consists of &lt;strong&gt;4 interconnected phases&lt;/strong&gt; with some sub-steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preparation:

&lt;ul&gt;
&lt;li&gt;Acquire data&lt;/li&gt;
&lt;li&gt;Reformat and clean data&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Analysis:

&lt;ul&gt;
&lt;li&gt;Edit analysis scripts&lt;/li&gt;
&lt;li&gt;Execute scripts&lt;/li&gt;
&lt;li&gt;Inspect outputs&lt;/li&gt;
&lt;li&gt;Debug&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Reflection&lt;/li&gt;
&lt;li&gt;Dissemination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these phases is related to its own challenges. The author developed prototype tools that are supposed to address them.&lt;/p&gt;

&lt;p&gt;One interesting insight given in the blog entry is that the &lt;strong&gt;manual data cleaning&lt;/strong&gt; is reported by data scientists as the most tedious and time-consuming part of their workflows. However, the author stresses that this step is also a very important one since &amp;quot;the chore of data reformatting and cleaning can lend insights into what assumptions are safe to make about the data, what idiosyncrasies exist in the collection process, and what models and analyses are appropriate to apply.&amp;quot;&lt;/p&gt;
</content>
	</entry>
	
	<entry>
		<title>FUSE: project for mining game-changing technologies from scientific publications and patents</title>
		<link href="http://adalab.icm.edu.pl/blog/technology/2014/06/12/FUSE_scientific_publications_mining.html"/>
		<updated>2014-06-12T12:00:00+00:00</updated>
		<id>http://adalab.icm.edu.pl/blog/technology/2014/06/12/FUSE_scientific_publications_mining</id>
		<content type="html">&lt;p&gt;In &lt;a href=&quot;http://www.nature.com/news/text-mining-offers-clues-to-success-1.15263&quot;&gt;May&amp;#39;s Nature&lt;/a&gt;, there is a column about an interesting text mining project called FUSE. The project is backed by US intelligence agency; its goal is to predict game-changing technologies based on mining of scientific publications and patent applications.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;FUSE is one of the first projects to mine the full texts instead of only abstracts.&lt;/p&gt;

&lt;p&gt;There are 3 teams that take part in the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One that &amp;quot;mines text for keywords, citations and phrases that indicate authors&amp;#39; outlooks in scholarly papers.&amp;quot;&lt;/li&gt;
&lt;li&gt;Another one that extracts &amp;quot;sentiment&amp;quot; in the natural language of papers.&lt;/li&gt;
&lt;li&gt;The third team analyses connections between different topics, keywords and authors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This four-year project started in 2011.&lt;/p&gt;
</content>
	</entry>
	
</feed>
