org.apache.tika.language
Class LanguageProfilerBuilder

java.lang.Object
  extended by org.apache.tika.language.LanguageProfilerBuilder

public class LanguageProfilerBuilder
extends java.lang.Object

This class runs a ngram analysis over submitted text, results might be used for automatic language identification. The similarity calculation is at experimental level. You have been warned. Methods are provided to build new NGramProfiles profiles.

Author:
Sami Siren, Jerome Charron - http://frutch.free.fr/

Constructor Summary
LanguageProfilerBuilder(java.lang.String name)
          Constructs a new ngram profile where minlen=3, maxlen=3
LanguageProfilerBuilder(java.lang.String name, int minlen, int maxlen)
          Constructs a new ngram profile
 
Method Summary
 void add(java.lang.StringBuffer word)
          Adds ngrams from a single word to this profile
 void analyze(java.lang.StringBuilder text)
          Analyzes a piece of text
static LanguageProfilerBuilder create(java.lang.String name, java.io.InputStream is, java.lang.String encoding)
          Creates a new Language profile from (preferably quite large - 5-10k of lines) text file
 java.lang.String getName()
           
 float getSimilarity(LanguageProfilerBuilder another)
          Calculates a score how well NGramProfiles match each other
 java.util.List<org.apache.tika.language.LanguageProfilerBuilder.NGramEntry> getSorted()
          Returns a sorted list of ngrams (sort done by 1.
 void load(java.io.InputStream is)
          Loads a ngram profile from an InputStream (assumes UTF-8 encoded content)
static void main(java.lang.String[] args)
          main method used for testing only
protected  void normalize()
          Normalizes the profile (calculates the ngrams frequencies)
 void save(java.io.OutputStream os)
          Writes NGramProfile content into OutputStream, content is outputted with UTF-8 encoding
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LanguageProfilerBuilder

public LanguageProfilerBuilder(java.lang.String name,
                               int minlen,
                               int maxlen)
Constructs a new ngram profile

Parameters:
name - is the name of the profile
minlen - is the min length of ngram sequences
maxlen - is the max length of ngram sequences

LanguageProfilerBuilder

public LanguageProfilerBuilder(java.lang.String name)
Constructs a new ngram profile where minlen=3, maxlen=3

Parameters:
name - is a name of profile, usually two length string
Since:
Tika 1.0
Method Detail

getName

public java.lang.String getName()
Returns:
Returns the name.

add

public void add(java.lang.StringBuffer word)
Adds ngrams from a single word to this profile

Parameters:
word - is the word to add

analyze

public void analyze(java.lang.StringBuilder text)
Analyzes a piece of text

Parameters:
text - the text to be analyzed

normalize

protected void normalize()
Normalizes the profile (calculates the ngrams frequencies)


getSorted

public java.util.List<org.apache.tika.language.LanguageProfilerBuilder.NGramEntry> getSorted()
Returns a sorted list of ngrams (sort done by 1. frequency 2. sequence)

Returns:
sorted vector of ngrams

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getSimilarity

public float getSimilarity(LanguageProfilerBuilder another)
                    throws TikaException
Calculates a score how well NGramProfiles match each other

Parameters:
another - ngram profile to compare against
Returns:
similarity 0=exact match
Throws:
TikaException - if could not calculate a score

load

public void load(java.io.InputStream is)
          throws java.io.IOException
Loads a ngram profile from an InputStream (assumes UTF-8 encoded content)

Parameters:
is - the InputStream to read
Throws:
java.io.IOException

create

public static LanguageProfilerBuilder create(java.lang.String name,
                                             java.io.InputStream is,
                                             java.lang.String encoding)
                                      throws TikaException
Creates a new Language profile from (preferably quite large - 5-10k of lines) text file

Parameters:
name - to be given for the profile
is - a stream to be read
encoding - is the encoding of stream
Throws:
TikaException - if could not create a language profile

save

public void save(java.io.OutputStream os)
          throws java.io.IOException
Writes NGramProfile content into OutputStream, content is outputted with UTF-8 encoding

Parameters:
os - the Stream to output to
Throws:
java.io.IOException

main

public static void main(java.lang.String[] args)
main method used for testing only

Parameters:
args -


Copyright © 2007-2011 The Apache Software Foundation. All Rights Reserved.