Stanford nlp 如何在MaxEntTagger中保留不可修改的字符?

Stanford nlp 如何在MaxEntTagger中保留不可修改的字符?,stanford-nlp,Stanford Nlp,我使用MaxEntTagger进行词性标注和句子拆分,代码如下: MaxentTagger-tagger=新的MaxentTagger(“models/left3words-wsj-0-18.tagger”); @抑制警告(“未选中”) List斯坦福标记器接受各种选项来控制标记化,包括如何处理它不知道的字符。但是,要设置它们,您当前必须实例化您自己的标记器。但这并不比你上面提到的困难多少。下面的完整程序生成一个带有选项的标记器,然后使用它进行标记 “noneKeep”选项意味着它不记录关于未知

我使用MaxEntTagger进行词性标注和句子拆分,代码如下:

MaxentTagger-tagger=新的MaxentTagger(“models/left3words-wsj-0-18.tagger”);
@抑制警告(“未选中”)

List斯坦福标记器接受各种选项来控制标记化,包括如何处理它不知道的字符。但是,要设置它们,您当前必须实例化您自己的标记器。但这并不比你上面提到的困难多少。下面的完整程序生成一个带有选项的标记器,然后使用它进行标记

“noneKeep”选项意味着它不记录关于未知字符的消息,但保留它们并将每个字符转换为单个字符标记。您可以了解PTBTokenizer类javadoc中的其他选项

注意:您似乎使用了一个相当旧的tagger版本。(大约2年前,我们去掉了句子类,开始使用标记列表,可能是在这些选项添加到标记器的同时。)因此,您可能需要升级到最新版本。无论如何,下面的代码只能针对tagger的最新版本正确编译

import java.io.*;
导入java.util.*;
导入edu.stanford.nlp.ling.*;
导入edu.stanford.nlp.process.*;
导入edu.stanford.nlp.objectbank.TokenizerFactory;
导入edu.stanford.nlp.tagger.maxent.MaxentTagger;
/**这个演示展示了用户提供的句子(例如,{@code List})
*被贴标签的人贴上标签。这些句子是通过直接使用生成的
*文档预处理器类的。
*/
类TaggerDemo2{
公共静态void main(字符串[]args)引发异常{
如果(参数长度!=2){
System.err.println(“用法:javataggerdemo模型文件fileToTag”);
回来
}
MaxentTagger tagger=新的MaxentTagger(args[0]);
TokenizerFactory ptbTokenizerFactory=
工厂(新的CorelableTokenFactory(),“unnotkenizable=noneKeep”);
BufferedReader r=
新的BufferedReader(新的InputStreamReader(新的文件InputStream(args[1]),“utf-8”);
PrintWriter pw=新的PrintWriter(新的OutputStreamWriter(System.out,“utf-8”));
DocumentPreprocess DocumentPreprocessor=新的DocumentPreprocessor(r);
documentPreprocessor.setTokenizerFactory(ptbTokenizerFactory);
for(列表语句:documentPreprocessor){
List TSENTE=tagger.tag句子(句子);
println(句子列表字符串(t内容,false));
}
}
}

斯坦福标记器接受多种选项来控制标记化,包括如何处理它不知道的字符。但是,要设置它们,您当前必须实例化您自己的标记器。但这并不比你上面提到的困难多少。下面的完整程序生成一个带有选项的标记器,然后使用它进行标记

“noneKeep”选项意味着它不记录关于未知字符的消息,但保留它们并将每个字符转换为单个字符标记。您可以了解PTBTokenizer类javadoc中的其他选项

注意:您似乎使用了一个相当旧的tagger版本。(大约2年前,我们去掉了句子类,开始使用标记列表,可能是在这些选项添加到标记器的同时。)因此,您可能需要升级到最新版本。无论如何,下面的代码只能针对tagger的最新版本正确编译

import java.io.*;
导入java.util.*;
导入edu.stanford.nlp.ling.*;
导入edu.stanford.nlp.process.*;
导入edu.stanford.nlp.objectbank.TokenizerFactory;
导入edu.stanford.nlp.tagger.maxent.MaxentTagger;
/**这个演示展示了用户提供的句子(例如,{@code List})
*被贴标签的人贴上标签。这些句子是通过直接使用生成的
*文档预处理器类的。
*/
类TaggerDemo2{
公共静态void main(字符串[]args)引发异常{
如果(参数长度!=2){
System.err.println(“用法:javataggerdemo模型文件fileToTag”);
回来
}
MaxentTagger tagger=新的MaxentTagger(args[0]);
TokenizerFactory ptbTokenizerFactory=
工厂(新的CorelableTokenFactory(),“unnotkenizable=noneKeep”);
BufferedReader r=
新的BufferedReader(新的InputStreamReader(新的文件InputStream(args[1]),“utf-8”);
PrintWriter pw=新的PrintWriter(新的OutputStreamWriter(System.out,“utf-8”));
DocumentPreprocess DocumentPreprocessor=新的DocumentPreprocessor(r);
documentPreprocessor.setTokenizerFactory(ptbTokenizerFactory);
for(列表语句:documentPreprocessor){
List TSENTE=tagger.tag句子(句子);
println(句子列表字符串(t内容,false));
}
}
}

谢谢你的例子,它对我帮助很大!谢谢你的例子,这对我很有帮助! tagger training invoked at Sun Sep 21 23:03:26 PDT 2008 with arguments: model = left3words-wsj-0-18.tagger arch = left3words,naacl2003unknowns,wordshapes(3) trainFile = /u/nlp/data/pos-tagger/train-wsj-0-18 ... encoding = Big5 initFromTrees = false