You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@opennlp.apache.org by Rodrigo Agerri <ra...@apache.org> on 2014/11/12 09:48:27 UTC

NameFinder Perceptron Sequence Trainer

Hi,

Has anyone managed to train NER models with the PerceptronSequenceTrainer?

Whenever I try

bin/opennlp TokenNameFinderTrainer -featuregen
lang/en/namefinder/en-namefinder.xml -params
lang/ml/PerceptronSequenceTrainerParams.txt -lang en -data
~/experiments/nerc/opennlp/data/en/conll2003/opennlp-eng.train -model
test.bin

I get

Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Model not compatible
with name finder!
at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:107)
at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:114)
at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:120)
at opennlp.tools.namefind.NameSampleSequenceStream.updateContext(NameSampleSequenceStream.java:74)
at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.nextIteration(SimplePerceptronSequenceTrainer.java:236)
at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.findParameters(SimplePerceptronSequenceTrainer.java:206)
at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.trainModel(SimplePerceptronSequenceTrainer.java:178)
at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.doTrain(SimplePerceptronSequenceTrainer.java:113)
at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.doTrain(SimplePerceptronSequenceTrainer.java:47)
at opennlp.tools.ml.AbstractEventModelSequenceTrainer.train(AbstractEventModelSequenceTrainer.java:40)
at opennlp.tools.namefind.NameFinderME.train(NameFinderME.java:346)
at opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool.run(TokenNameFinderTrainerTool.java:229)
at opennlp.tools.cmdline.CLI.main(CLI.java:224)
... 6 more

Thanks

Rodrigo

Re: NameFinder Perceptron Sequence Trainer

Posted by Rodrigo Agerri <ra...@apache.org>.
OK, good.

On a slightly related issue, any doc anywhere (or a quick explanation
would do fine too) about how to use the CRF from mallet addon? I have
been reading the issue 641 but not clear where to start.

Thanks,

R

On Wed, Nov 12, 2014 at 11:44 AM, Jörn Kottmann <ko...@gmail.com> wrote:
> Yes, that used to run through, but the model were always performing really
> poorly.
>
> Please open an issue, we should that get fixed up before the release.
>
> Jörn
>
>
> On 11/12/2014 09:48 AM, Rodrigo Agerri wrote:
>>
>> Hi,
>>
>> Has anyone managed to train NER models with the PerceptronSequenceTrainer?
>>
>> Whenever I try
>>
>> bin/opennlp TokenNameFinderTrainer -featuregen
>> lang/en/namefinder/en-namefinder.xml -params
>> lang/ml/PerceptronSequenceTrainerParams.txt -lang en -data
>> ~/experiments/nerc/opennlp/data/en/conll2003/opennlp-eng.train -model
>> test.bin
>>
>> I get
>>
>> Caused by: java.lang.reflect.InvocationTargetException
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: java.lang.IllegalArgumentException: Model not compatible
>> with name finder!
>> at
>> opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:107)
>> at
>> opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:114)
>> at
>> opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:120)
>> at
>> opennlp.tools.namefind.NameSampleSequenceStream.updateContext(NameSampleSequenceStream.java:74)
>> at
>> opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.nextIteration(SimplePerceptronSequenceTrainer.java:236)
>> at
>> opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.findParameters(SimplePerceptronSequenceTrainer.java:206)
>> at
>> opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.trainModel(SimplePerceptronSequenceTrainer.java:178)
>> at
>> opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.doTrain(SimplePerceptronSequenceTrainer.java:113)
>> at
>> opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.doTrain(SimplePerceptronSequenceTrainer.java:47)
>> at
>> opennlp.tools.ml.AbstractEventModelSequenceTrainer.train(AbstractEventModelSequenceTrainer.java:40)
>> at opennlp.tools.namefind.NameFinderME.train(NameFinderME.java:346)
>> at
>> opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool.run(TokenNameFinderTrainerTool.java:229)
>> at opennlp.tools.cmdline.CLI.main(CLI.java:224)
>> ... 6 more
>>
>> Thanks
>>
>> Rodrigo
>
>

Re: NameFinder Perceptron Sequence Trainer

Posted by Jörn Kottmann <ko...@gmail.com>.
Yes, that used to run through, but the model were always performing 
really poorly.

Please open an issue, we should that get fixed up before the release.

Jörn

On 11/12/2014 09:48 AM, Rodrigo Agerri wrote:
> Hi,
>
> Has anyone managed to train NER models with the PerceptronSequenceTrainer?
>
> Whenever I try
>
> bin/opennlp TokenNameFinderTrainer -featuregen
> lang/en/namefinder/en-namefinder.xml -params
> lang/ml/PerceptronSequenceTrainerParams.txt -lang en -data
> ~/experiments/nerc/opennlp/data/en/conll2003/opennlp-eng.train -model
> test.bin
>
> I get
>
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.IllegalArgumentException: Model not compatible
> with name finder!
> at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:107)
> at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:114)
> at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:120)
> at opennlp.tools.namefind.NameSampleSequenceStream.updateContext(NameSampleSequenceStream.java:74)
> at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.nextIteration(SimplePerceptronSequenceTrainer.java:236)
> at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.findParameters(SimplePerceptronSequenceTrainer.java:206)
> at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.trainModel(SimplePerceptronSequenceTrainer.java:178)
> at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.doTrain(SimplePerceptronSequenceTrainer.java:113)
> at opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer.doTrain(SimplePerceptronSequenceTrainer.java:47)
> at opennlp.tools.ml.AbstractEventModelSequenceTrainer.train(AbstractEventModelSequenceTrainer.java:40)
> at opennlp.tools.namefind.NameFinderME.train(NameFinderME.java:346)
> at opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool.run(TokenNameFinderTrainerTool.java:229)
> at opennlp.tools.cmdline.CLI.main(CLI.java:224)
> ... 6 more
>
> Thanks
>
> Rodrigo