- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经下载了 UPDT波斯语树库( Uppsala Persian Dependency Treebank ),我正在尝试使用斯坦福 NLP 从中构建依赖解析器模型。我尝试使用命令行和 Java 代码来训练模型,但在这两种情况下都出现异常。
1- 使用命令行训练模型:
java -mx1500m edu.stanford.nlp.parser.lexparser.LexicalizedParser -train UPDT\train.conll 0 -saveToSerializedFile UPDT\updt.model.ser.gz
当我运行上面的命令时,我会得到这个异常:
done [read 26 trees]. Time elapsed: 0 ms
Options parameters:
useUnknownWordSignatures 0
smoothInUnknownsThreshold 100
smartMutation false
useUnicodeType false
unknownSuffixSize 1
unknownPrefixSize 1
flexiTag false
useSignatureForKnownSmoothing false
wordClassesFile null
parserParams edu.stanford.nlp.parser.lexparser.EnglishTreebankParserParams
forceCNF false
doPCFG true
doDep true
freeDependencies false
directional true
genStop true
distance true
coarseDistance false
dcTags true
nPrune false
Train parameters:
smooth=false
PA=true
GPA=false
selSplit=false
(0.0)
mUnary=0
mUnaryTags=false
sPPT=false
tagPA=false
tagSelSplit=false (0.0)
rightRec=false
leftRec=false
collinsPunc=false
markov=false
mOrd=1
hSelSplit=false (10)
compactGrammar=0
postPA=false
postGPA=false
selPSplit=false (0.0)
tagSelPSplit=false (0.0)
postSplitWithBase=false
fractionBeforeUnseenCounting=0.5
openClassTypesThreshold=50
preTransformer=null
taggedFiles=null
predictSplits=false
splitCount=1
splitRecombineRate=0.0
simpleBinarizedLabels=false
noRebinarization=false
trainingThreads=1
dvKBest=100
trainingIterations=40
batchSize=25
regCost=1.0E-4
qnIterationsPerBatch=1
qnEstimates=15
qnTolerance=15.0
debugOutputFrequency=0
randomSeed=0
learningRate=0.1
deltaMargin=0.1
unknownNumberVector=true
unknownDashedWordVectors=true
unknownCapsVector=true
unknownChineseYearVector=true
unknownChineseNumberVector=true
unknownChinesePercentVector=true
dvSimplifiedModel=false
scalingForInit=0.5
maxTrainTimeSeconds=0
unkWord=*UNK*
lowercaseWordVectors=false
transformMatrixType=DIAGONAL
useContextWords=false
trainWordVectors=true
stalledIterationLimit=12
markStrahler=false
Using EnglishTreebankParserParams splitIN=0 sPercent=false sNNP=0 sQuotes=false
sSFP=false rbGPA=false j#=false jJJ=false jNounTags=false sPPJJ=false sTRJJ=fals
e sJJCOMP=false sMoreLess=false unaryDT=false unaryRB=false unaryPRP=false reflP
RP=false unaryIN=false sCC=0 sNT=false sRB=false sAux=0 vpSubCat=false mDTV=0 sV
P=0 sVPNPAgr=false sSTag=0 mVP=false sNP%=0 sNPPRP=false dominatesV=0 dominatesI
=false dominatesC=false mCC=0 sSGapped=0 numNP=false sPoss=0 baseNP=0 sNPNNP=0 s
TMP=0 sNPADV=0 cTags=false rightPhrasal=false gpaRootVP=false splitSbar=0 mPPTOi
IN=0 cWh=0
Binarizing trees...done. Time elapsed: 12 ms
Extracting PCFG...PennTreeReader: warning: file has extra non-matching right par
enthesis [ignored]
Exception in thread "main" java.lang.IllegalArgumentException: No head rule defi
ned for _ using class edu.stanford.nlp.trees.ModCollinsHeadFinder in (_
DELM
DELM
DELM
13
punct
_
_
15
??????
_
N
N_SING
SING
13
appos
_
_
16
???????
_
ADJ
ADJ
ADJ
15
amod
_
_
17
??
_
P
P
P
15
prep
_
_
18
???
_
N
N_SING
SING
17
pobj
_
_
19
?
_
CON
CON
CON
18
cc
_
_
20
????
_
N
N_SING
SING
18
conj
_
_
21
????
_
N
N_SING
SING
20
poss/pc
_
_
22)
at edu.stanford.nlp.trees.AbstractCollinsHeadFinder.determineNonTrivialH
ead(AbstractCollinsHeadFinder.java:242)
at edu.stanford.nlp.trees.AbstractCollinsHeadFinder.determineHead(Abstra
ctCollinsHeadFinder.java:189)
at edu.stanford.nlp.trees.AbstractCollinsHeadFinder.determineHead(Abstra
ctCollinsHeadFinder.java:140)
at edu.stanford.nlp.parser.lexparser.TreeAnnotator.transformTreeHelper(T
reeAnnotator.java:145)
at edu.stanford.nlp.parser.lexparser.TreeAnnotator.transformTree(TreeAnn
otator.java:51)
at edu.stanford.nlp.parser.lexparser.TreeAnnotatorAndBinarizer.transform
Tree(TreeAnnotatorAndBinarizer.java:104)
at edu.stanford.nlp.trees.CompositeTreeTransformer.transformTree(Composi
teTreeTransformer.java:30)
at edu.stanford.nlp.trees.TransformingTreebank$TransformingTreebankItera
tor.next(TransformingTreebank.java:195)
at edu.stanford.nlp.trees.TransformingTreebank$TransformingTreebankItera
tor.next(TransformingTreebank.java:176)
at edu.stanford.nlp.trees.FilteringTreebank$FilteringTreebankIterator.pr
imeNext(FilteringTreebank.java:100)
at edu.stanford.nlp.trees.FilteringTreebank$FilteringTreebankIterator.<i
nit>(FilteringTreebank.java:85)
at edu.stanford.nlp.trees.FilteringTreebank.iterator(FilteringTreebank.j
ava:72)
at edu.stanford.nlp.parser.lexparser.AbstractTreeExtractor.tallyTrees(Ab
stractTreeExtractor.java:64)
at edu.stanford.nlp.parser.lexparser.AbstractTreeExtractor.extract(Abstr
actTreeExtractor.java:89)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromTree
bank(LexicalizedParser.java:881)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.main(LexicalizedP
arser.java:1394)
2- 使用 Java 代码训练模型:
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import edu.stanford.nlp.ling.HasWord;
import edu.stanford.nlp.parser.lexparser.LexicalizedParser;
import edu.stanford.nlp.parser.lexparser.Options;
import edu.stanford.nlp.process.DocumentPreprocessor;
import edu.stanford.nlp.trees.GrammaticalStructure;
import edu.stanford.nlp.trees.GrammaticalStructureFactory;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.trees.Treebank;
import edu.stanford.nlp.trees.TreebankLanguagePack;
public class FromTreeBank {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String treebankPathUPDT = "src/model/UPDT.1.2/train.conll";
String persianFilePath = "src/txt/persianSentences.txt";
File file = new File(treebankPathUPDT);
Options op = new Options();
Treebank tr = op.tlpParams.diskTreebank();
tr.loadPath(file);
LexicalizedParser lpc = LexicalizedParser.trainFromTreebank(tr,op);
//Once the lpc is trained, use it to parse a file which contains Persian text
//demoDP(lpc, persianFilePath);
}
public static void demoDP(LexicalizedParser lp, String filename) {
// This option shows loading, sentence-segmenting and tokenizing
// a file using DocumentPreprocessor.
TreebankLanguagePack tlp = lp.treebankLanguagePack(); // a PennTreebankLanguagePack for English
GrammaticalStructureFactory gsf = null;
if (tlp.supportsGrammaticalStructures()) {
gsf = tlp.grammaticalStructureFactory();
}
// You could also create a tokenizer here (as below) and pass it
// to DocumentPreprocessor
for (List<HasWord> sentence : new DocumentPreprocessor(filename)) {
Tree parse = lp.apply(sentence);
parse.pennPrint();
System.out.println();
if (gsf != null) {
GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
Collection tdl = gs.typedDependenciesCCprocessed();
System.out.println(tdl);
System.out.println();
}
}
}
}
上面的Java程序也出现了这个异常:
Options parameters:
useUnknownWordSignatures 0
smoothInUnknownsThreshold 100
smartMutation false
useUnicodeType false
unknownSuffixSize 1
unknownPrefixSize 1
flexiTag false
useSignatureForKnownSmoothing false
wordClassesFile null
parserParams edu.stanford.nlp.parser.lexparser.EnglishTreebankParserParams
forceCNF false
doPCFG true
doDep true
freeDependencies false
directional true
genStop true
distance true
coarseDistance false
dcTags true
nPrune false
Train parameters:
smooth=false
PA=true
GPA=false
selSplit=false
(0.0)
mUnary=0
mUnaryTags=false
sPPT=false
tagPA=false
tagSelSplit=false (0.0)
rightRec=false
leftRec=false
collinsPunc=false
markov=false
mOrd=1
hSelSplit=false (10)
compactGrammar=0
postPA=false
postGPA=false
selPSplit=false (0.0)
tagSelPSplit=false (0.0)
postSplitWithBase=false
fractionBeforeUnseenCounting=0.5
openClassTypesThreshold=50
preTransformer=null
taggedFiles=null
predictSplits=false
splitCount=1
splitRecombineRate=0.0
simpleBinarizedLabels=false
noRebinarization=false
trainingThreads=1
dvKBest=100
trainingIterations=40
batchSize=25
regCost=1.0E-4
qnIterationsPerBatch=1
qnEstimates=15
qnTolerance=15.0
debugOutputFrequency=0
randomSeed=0
learningRate=0.1
deltaMargin=0.1
unknownNumberVector=true
unknownDashedWordVectors=true
unknownCapsVector=true
unknownChineseYearVector=true
unknownChineseNumberVector=true
unknownChinesePercentVector=true
dvSimplifiedModel=false
scalingForInit=0.5
maxTrainTimeSeconds=0
unkWord=*UNK*
lowercaseWordVectors=false
transformMatrixType=DIAGONAL
useContextWords=false
trainWordVectors=true
stalledIterationLimit=12
markStrahler=false
Using EnglishTreebankParserParams splitIN=0 sPercent=false sNNP=0 sQuotes=false sSFP=false rbGPA=false j#=false jJJ=false jNounTags=false sPPJJ=false sTRJJ=false sJJCOMP=false sMoreLess=false unaryDT=false unaryRB=false unaryPRP=false reflPRP=false unaryIN=false sCC=0 sNT=false sRB=false sAux=0 vpSubCat=false mDTV=0 sVP=0 sVPNPAgr=false sSTag=0 mVP=false sNP%=0 sNPPRP=false dominatesV=0 dominatesI=false dominatesC=false mCC=0 sSGapped=0 numNP=false sPoss=0 baseNP=0 sNPNNP=0 sTMP=0 sNPADV=0 cTags=false rightPhrasal=false gpaRootVP=false splitSbar=0 mPPTOiIN=0 cWh=0
Binarizing trees...done. Time elapsed: 122 ms
Extracting PCFG...PennTreeReader: warning: file has extra non-matching right parenthesis [ignored]
java.lang.IllegalArgumentException: No head rule defined for _ using class edu.stanford.nlp.trees.ModCollinsHeadFinder in (_
DELM
DELM
DELM
13
punct
_
_
15
تلفیقی
_
N
N_SING
SING
13
appos
_
_
16
طنزآمیز
_
ADJ
ADJ
ADJ
15
amod
_
_
17
از
_
P
P
P
15
prep
_
_
18
اسم
_
N
N_SING
SING
17
pobj
_
_
19
و
_
CON
CON
CON
18
cc
_
_
20
شیوه
_
N
N_SING
SING
18
conj
_
_
21
کارش
_
N
N_SING
SING
20
poss/pc
_
_
22)
at edu.stanford.nlp.trees.AbstractCollinsHeadFinder.determineNonTrivialHead(AbstractCollinsHeadFinder.java:242)
at edu.stanford.nlp.trees.AbstractCollinsHeadFinder.determineHead(AbstractCollinsHeadFinder.java:189)
at edu.stanford.nlp.trees.AbstractCollinsHeadFinder.determineHead(AbstractCollinsHeadFinder.java:140)
at edu.stanford.nlp.parser.lexparser.TreeAnnotator.transformTreeHelper(TreeAnnotator.java:145)
at edu.stanford.nlp.parser.lexparser.TreeAnnotator.transformTree(TreeAnnotator.java:51)
at edu.stanford.nlp.parser.lexparser.TreeAnnotatorAndBinarizer.transformTree(TreeAnnotatorAndBinarizer.java:104)
at edu.stanford.nlp.trees.CompositeTreeTransformer.transformTree(CompositeTreeTransformer.java:30)
at edu.stanford.nlp.trees.TransformingTreebank$TransformingTreebankIterator.next(TransformingTreebank.java:195)
at edu.stanford.nlp.trees.TransformingTreebank$TransformingTreebankIterator.next(TransformingTreebank.java:176)
at edu.stanford.nlp.trees.FilteringTreebank$FilteringTreebankIterator.primeNext(FilteringTreebank.java:100)
at edu.stanford.nlp.trees.FilteringTreebank$FilteringTreebankIterator.<init>(FilteringTreebank.java:85)
at edu.stanford.nlp.trees.FilteringTreebank.iterator(FilteringTreebank.java:72)
at edu.stanford.nlp.parser.lexparser.AbstractTreeExtractor.tallyTrees(AbstractTreeExtractor.java:64)
at edu.stanford.nlp.parser.lexparser.AbstractTreeExtractor.extract(AbstractTreeExtractor.java:89)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromTreebank(LexicalizedParser.java:881)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.trainFromTreebank(LexicalizedParser.java:267)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.trainFromTreebank(LexicalizedParser.java:278)
at FromTreeBank.main(FromTreeBank.java:46)
实际上,我不确定命令行或Java代码是否正确。我无法弄清楚命令行或 Java 代码中缺少什么,如果有人告诉我为什么会出现这些异常以及出了什么问题,我将不胜感激。或者建议任何更好的方法来从树库中训练模型。
谢谢
最佳答案
这里最大的问题是你试图用依赖树库训练选区树解析器(又名短语结构树解析器),这是行不通的。
CoreNLP 还附带了一个基于神经网络的依赖解析器,您可以使用 UPDT 数据对其进行训练。看看project page有关如何训练模型的说明的解析器。
关于java - 如何从 Treebank 训练斯坦福 NLP 的新解析器模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761744/
我想知道有没有可能做 new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true))) 在 Java 中,s
我正在尝试使用 ConcurrentHashMap 初始化 ConcurrentHashMap private final ConcurrentHashMap > myMulitiConcurrent
我只是想知道两个不同的新对象初始化器之间是否有任何区别,还是仅仅是语法糖。 因此: Dim _StreamReader as New Streamreader(mystream) 与以下内容不同: D
在 C++ 中,以下两种动态对象创建之间的确切区别是什么: A* pA = new A; A* pA = new A(); 我做了一些测试,但似乎在这两种情况下,都调用了默认构造函数,并且只调用了它。
我已经阅读了其他帖子,但它们没有解决我的问题。环境为VB 2008(2.0 Framework)下面的代码在 xslt.Load 行导致 XSLT 编译错误下面是错误的输出。我将 XSLT 作为字符串
我想知道为什么alert(new Boolean(false))打印 false 而不是打印对象,因为 new Boolean 应该返回对象。如果我使用 console.log(new Boolean
本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下: 写装饰器 装饰器只不过是一种函数,接收被装饰的可调用对象作为它的唯一参数,然后返回一个可调用对象(就像前面的简单例子) 注
我可以编写 YAML header 来使用 knit 为 R Markdown 文件生成多种输出格式吗?我无法重现 the original question with this title 的答案中
我可以编写一个YAML标头以使用knitr为R Markdown文件生成多种输出格式吗?我无法重现the original question with this title答案中描述的功能。 这个降价
我正在使用vars package可视化脉冲响应。示例: library(vars) Canada % names ir % `$`(irf) %>% `[[`(variables[e])) %>%
我有一个容器类,它有一个通用参数,该参数被限制到某个基类。提供给泛型的类型是基类约束的子类。子类使用方法隐藏(新)来更改基类方法的行为(不,我不能将其设为虚拟,因为它不是我的代码)。我的问题是"new
Java 在提示! cannot find symbol symbol : constructor Bar() location: class Bar JPanel panel =
在我的应用程序中,一个新的 Activity 从触摸按钮(而不是点击)开始,而且我没有抬起手指并希望在新的 Activity 中跟踪触摸的 Action 。第二个 Activity 中的触摸监听器不响
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,
和我的last question ,我的程序无法检测到一个短语并将其与第一行以外的任何行匹配。但是,我已经解决并回答了。但现在我需要一个新的 def函数,它删除某个(给定 refName )联系人及其
这个问题在这里已经有了答案: Horizontal list items (7 个答案) 关闭 9 年前。
我想创建一个新的 float 类型,大小为 128 位,指数为 4 字节(32 位),小数为 12 字节(96 位),我该怎么做输入 C++,我将能够在其中进行输入、输出、+、-、*、/操作。 [我正
我在放置引用计数指针的实例时遇到问题 类到我的数组类中。使用调试器,似乎永远不会调用构造函数(这会扰乱引用计数并导致行中出现段错误)! 我的 push_back 函数是: void push_back
我在我们的代码库中发现了经典的新建/删除不匹配错误,如下所示: char *foo = new char[10]; // do something delete foo; // instead of
A *a = new A(); 这是创建一个指针还是一个对象? 我是一个 c++ 初学者,所以我想了解这个区别。 最佳答案 两者:您创建了一个新的 A 实例(一个对象),并创建了一个指向它的名为 a
我是一名优秀的程序员,十分优秀!