// Path: src/main/java/com/asher_stern/crf/postagging/data/LimitedSizePosTagCorpusReader.java
// public class LimitedSizePosTagCorpusReader<K,G> implements Iterator<List<TaggedToken<K, G>>>
// {
// 	public LimitedSizePosTagCorpusReader(Iterator<List<TaggedToken<K, G>>> realCorpus, int size)
// 	{
// 		super();
// 		this.realCorpus = realCorpus;
// 		this.size = size;
// 	}
// 
// 	@Override
// 	public boolean hasNext()
// 	{
// 		return (realCorpus.hasNext()&&(index<size));
// 	}
// 
// 	@Override
// 	public List<TaggedToken<K, G> > next()
// 	{
// 		if (index<size)
// 		{
// 			++index;
// 			return realCorpus.next();
// 		}
// 		else throw new NoSuchElementException();
// 	}
// 
// 	
// 	private final Iterator<List<TaggedToken<K, G>>> realCorpus;
// 	private final int size;
// 	
// 	private int index=0;
// }
// 
// Path: src/main/java/com/asher_stern/crf/postagging/data/penn/PennCorpus.java
// public class PennCorpus implements Iterable<List<TaggedToken<String, String>>>
// {
// 	
// 	// note for myself Size of corpus = 49208 sentences
// 	
// 	
// 	/**
// 	 * Constructs the Iterable with the Penn TreeBank directory, as specified in the main comment.
// 	 * @param directory A directory in the file-system, which contains the files of the Penn TreeBank
// 	 */
// 	public PennCorpus(File directory)
// 	{
// 		super();
// 		this.directory = directory;
// 	}
// 
// 	@Override
// 	public PennCorpusReader iterator()
// 	{
// 		return new PennCorpusReader(directory);
// 	}
// 	
// 	private final File directory;
// }
// 
// Path: src/main/java/com/asher_stern/crf/utilities/TaggedToken.java
// public class TaggedToken<K,G>
// {
// 	public TaggedToken(K token, G tag)
// 	{
// 		super();
// 		this.token = token;
// 		this.tag = tag;
// 	}
// 	
// 	
// 	
// 	public K getToken()
// 	{
// 		return token;
// 	}
// 	public G getTag()
// 	{
// 		return tag;
// 	}
// 
// 	
// 
// 
// 	@Override
// 	public String toString()
// 	{
// 		return "CrfTaggedToken [getToken()=" + getToken() + ", getTag()="
// 				+ getTag() + "]";
// 	}
// 	
// 	
// 
// 
// 
// 
// 	@Override
// 	public int hashCode()
// 	{
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((tag == null) ? 0 : tag.hashCode());
// 		result = prime * result + ((token == null) ? 0 : token.hashCode());
// 		return result;
// 	}
// 
// 
// 
// 	@Override
// 	public boolean equals(Object obj)
// 	{
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		TaggedToken<?,?> other = (TaggedToken<?,?>) obj;
// 		if (tag == null)
// 		{
// 			if (other.tag != null)
// 				return false;
// 		} else if (!tag.equals(other.tag))
// 			return false;
// 		if (token == null)
// 		{
// 			if (other.token != null)
// 				return false;
// 		} else if (!token.equals(other.token))
// 			return false;
// 		return true;
// 	}
// 
// 
// 
// 
// 
// 
// 	private final K token;
// 	private final G tag;
// }
// 
// Path: src/main/java/com/asher_stern/crf/utilities/log4j/Log4jInit.java
// public class Log4jInit
// {
// 	
// 	public static void init()
// 	{
// 		init(Level.INFO);
// 	}
// 	
// 	public static void init(Level level)
// 	{
// 		if (!alreadyInitialized)
// 		{
// 			synchronized(Log4jInit.class)
// 			{
// 				if (!alreadyInitialized)
// 				{
// 					final Layout layout = new VerySimpleLayout(); // new PatternLayout("%p [%t] %m%n");
// 					BasicConfigurator.configure();
// 					Logger.getRootLogger().setLevel(level);
// 					
// 					Enumeration<?> enumAppenders = Logger.getRootLogger().getAllAppenders();
// 					while (enumAppenders.hasMoreElements())
// 					{
// 						Appender appender = (Appender) enumAppenders.nextElement();
// 						appender.setLayout(layout);
// 					}
// 					
// 					alreadyInitialized = true;
// 				}
// 			}
// 		}
// 
// 	}
// 	
// 	private static boolean alreadyInitialized = false;
// }


import java.io.File;
import java.util.List;
import org.apache.log4j.Level;
import com.asher_stern.crf.postagging.data.LimitedSizePosTagCorpusReader;
import com.asher_stern.crf.postagging.data.penn.PennCorpus;
import com.asher_stern.crf.utilities.TaggedToken;
import com.asher_stern.crf.utilities.log4j.Log4jInit;
package com.asher_stern.crf.smalltests;




public class DemoPennCorpus
{

	public static void main(String[] args)
	{
		try
		{
			Log4jInit.init(Level.DEBUG);
			new DemoPennCorpus().go(new File(args[0]));
		}
		catch(Throwable t)
		{
			t.printStackTrace(System.out);
		}

	}

	public void go(File directory)
	{
		PennCorpus corpus = new PennCorpus(directory);
// Path: src/main/java/com/asher_stern/crf/postagging/data/LimitedSizePosTagCorpusReader.java
// public class LimitedSizePosTagCorpusReader<K,G> implements Iterator<List<TaggedToken<K, G>>>
// {
// 	public LimitedSizePosTagCorpusReader(Iterator<List<TaggedToken<K, G>>> realCorpus, int size)
// 	{
// 		super();
// 		this.realCorpus = realCorpus;
// 		this.size = size;
// 	}
// 
// 	@Override
// 	public boolean hasNext()
// 	{
// 		return (realCorpus.hasNext()&&(index<size));
// 	}
// 
// 	@Override
// 	public List<TaggedToken<K, G> > next()
// 	{
// 		if (index<size)
// 		{
// 			++index;
// 			return realCorpus.next();
// 		}
// 		else throw new NoSuchElementException();
// 	}
// 
// 	
// 	private final Iterator<List<TaggedToken<K, G>>> realCorpus;
// 	private final int size;
// 	
// 	private int index=0;
// }
// 
// Path: src/main/java/com/asher_stern/crf/postagging/data/penn/PennCorpus.java
// public class PennCorpus implements Iterable<List<TaggedToken<String, String>>>
// {
// 	
// 	// note for myself Size of corpus = 49208 sentences
// 	
// 	
// 	/**
// 	 * Constructs the Iterable with the Penn TreeBank directory, as specified in the main comment.
// 	 * @param directory A directory in the file-system, which contains the files of the Penn TreeBank
// 	 */
// 	public PennCorpus(File directory)
// 	{
// 		super();
// 		this.directory = directory;
// 	}
// 
// 	@Override
// 	public PennCorpusReader iterator()
// 	{
// 		return new PennCorpusReader(directory);
// 	}
// 	
// 	private final File directory;
// }
// 
// Path: src/main/java/com/asher_stern/crf/utilities/TaggedToken.java
// public class TaggedToken<K,G>
// {
// 	public TaggedToken(K token, G tag)
// 	{
// 		super();
// 		this.token = token;
// 		this.tag = tag;
// 	}
// 	
// 	
// 	
// 	public K getToken()
// 	{
// 		return token;
// 	}
// 	public G getTag()
// 	{
// 		return tag;
// 	}
// 
// 	
// 
// 
// 	@Override
// 	public String toString()
// 	{
// 		return "CrfTaggedToken [getToken()=" + getToken() + ", getTag()="
// 				+ getTag() + "]";
// 	}
// 	
// 	
// 
// 
// 
// 
// 	@Override
// 	public int hashCode()
// 	{
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((tag == null) ? 0 : tag.hashCode());
// 		result = prime * result + ((token == null) ? 0 : token.hashCode());
// 		return result;
// 	}
// 
// 
// 
// 	@Override
// 	public boolean equals(Object obj)
// 	{
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		TaggedToken<?,?> other = (TaggedToken<?,?>) obj;
// 		if (tag == null)
// 		{
// 			if (other.tag != null)
// 				return false;
// 		} else if (!tag.equals(other.tag))
// 			return false;
// 		if (token == null)
// 		{
// 			if (other.token != null)
// 				return false;
// 		} else if (!token.equals(other.token))
// 			return false;
// 		return true;
// 	}
// 
// 
// 
// 
// 
// 
// 	private final K token;
// 	private final G tag;
// }
// 
// Path: src/main/java/com/asher_stern/crf/utilities/log4j/Log4jInit.java
// public class Log4jInit
// {
// 	
// 	public static void init()
// 	{
// 		init(Level.INFO);
// 	}
// 	
// 	public static void init(Level level)
// 	{
// 		if (!alreadyInitialized)
// 		{
// 			synchronized(Log4jInit.class)
// 			{
// 				if (!alreadyInitialized)
// 				{
// 					final Layout layout = new VerySimpleLayout(); // new PatternLayout("%p [%t] %m%n");
// 					BasicConfigurator.configure();
// 					Logger.getRootLogger().setLevel(level);
// 					
// 					Enumeration<?> enumAppenders = Logger.getRootLogger().getAllAppenders();
// 					while (enumAppenders.hasMoreElements())
// 					{
// 						Appender appender = (Appender) enumAppenders.nextElement();
// 						appender.setLayout(layout);
// 					}
// 					
// 					alreadyInitialized = true;
// 				}
// 			}
// 		}
// 
// 	}
// 	
// 	private static boolean alreadyInitialized = false;
// }


// Path: src/main/java/com/asher_stern/crf/smalltests/DemoPennCorpus.java
import java.io.File;
import java.util.List;
import org.apache.log4j.Level;
import com.asher_stern.crf.postagging.data.LimitedSizePosTagCorpusReader;
import com.asher_stern.crf.postagging.data.penn.PennCorpus;
import com.asher_stern.crf.utilities.TaggedToken;
import com.asher_stern.crf.utilities.log4j.Log4jInit;

package com.asher_stern.crf.smalltests;




public class DemoPennCorpus
{

	public static void main(String[] args)
	{
		try
		{
			Log4jInit.init(Level.DEBUG);
			new DemoPennCorpus().go(new File(args[0]));
		}
		catch(Throwable t)
		{
			t.printStackTrace(System.out);
		}

	}

	public void go(File directory)
	{
		PennCorpus corpus = new PennCorpus(directory);
		LimitedSizePosTagCorpusReader<String,String> reader = new LimitedSizePosTagCorpusReader<String,String>(corpus.iterator(),10);