- 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/
我在检测以小写字母开头的命名实体时遇到问题。如果我只用小写单词训练模型,那么准确率是合理的;但是,当模型使用完全大写的标记或什至是小写和大写混合训练时,结果非常糟糕。我尝试了斯坦福 NLP 小组提供的
这可能是一个愚蠢的问题,但是如何迭代解析树作为 NLP 解析器(如斯坦福 NLP)的输出?它都是嵌套的括号,既不是 array 也不是 dictionary 或我使用过的任何其他集合类型。 (ROOT
如何使用斯坦福解析器在 java 类中标记字符串? 我只能找到 documentProcessor 和 PTBTokenizer 从外部文件获取文本的示例。 DocumentPreprocessor
我的代码开头有以下内容: import twitter4j.*; import java.util.List; import java.util.Properties; import ja
这是我第一次在这里发帖;因此,如果我表现出任何不好的做法,请告诉我。 所以目前我正在尝试使用斯坦福大学的 OpenIE 从网络挖掘的数据中提取信息。由于我对 Java 很陌生,我只是从他们的页面复制了
我正在尝试使用斯坦福 CoreNLP 关系提取器 ( http://nlp.stanford.edu/software/relationExtractor.shtml )。 我已经安装了 CoreNL
我最近在使用Stanford Lexparser。不幸的是,我遇到了一个问题,因为它需要很长时间,特别是当我传递一个大文件时。多线程有助于提高性能吗?我知道多线程可以在命令行中轻松完成。但是,我想在内
原始推文已保存到以下结构的文件中: tweet language || tweet 以下是我的预处理阶段,用于删除 URL、RT、用户名和任何非字母数字字符。 def cleanTweets() {
在哪里可以找到有关基因、蛋白质、激素、转录因子、神经递质、细胞因子、生物标志物、表观遗传标志物、 enzyme 、RNA、器官、细胞、药物和疾病的斯坦福 NLP 命名实体识别库? 最佳答案 简而言之:
我在使用斯坦福大学的句子注释器时遇到了问题。作为输入,我得到了文本,其中包含句子,但其中某些部分的点后没有空格。像这样: Dog loves cat.Cat loves mouse. Mouse ha
通常,当您使用 corenlp 注释管道进行 NER 时,您将编写以下代码 Properties props = new Properties(); props.put("annotators", "
我正在尝试对推文进行情感分析,但出现奇怪的异常。 我正在使用属性文件初始化管道,并将属性文件放置在 src->main 文件夹内的资源目录中。 但在 init 函数中仍然出现异常: Exception
我正在尝试使用斯坦福库设置我的 NLP 解析器。在我下载的网站上 stanford-corenlp-full-2015-12-09.zip standford-french-corenlp-2016-
我正在尝试使用文件输入运行此代码并将其输出到另一个文件: import java.util.*; import edu.stanford.nlp.pipeline.*; import edu.stan
我正在Windows中做一个NLP项目,问题是每当我从命令提示符运行Stanford CoreNLP时,大约需要14-15秒才能生成给定输入文本文件的XML输出。我认为这个问题是因为库需要相当多的时间
我在 python 中使用斯坦福 NER 标记器。它没有标记日期和时间。相反,每个单词都返回 O。我的句子是: “多少钱才能在 3 年内以年利率 12% 的利率赚取 162 美元的利息” 我标记后得到
Soo... 该程序完全按照应有的方式运行,但我不明白该程序输出的花哨缩写是什么。 如果我输入'I wish today was a school day',程序会输出 I/PRP : wish/VB
我在 http://nlp.stanford.edu/software/stanford-corenlp-full-2015-04-20.zip 下载了 Stanford NLP 3.5.2 然后我解
在斯坦福自然语言处理中,有命名实体识别器功能来识别对话中的实体。有没有一种方法可以配置可以训练以指向特定意图的话语?类似于 LUIS (Microsoft)。 最佳答案 我正在使用 SharpNLP
我正在使用 Stanford CoreNLP 在 Windows 机器上运行 Java 的 NLP 项目。我想从这个注释一篇大文本文章。我写的代码如下; Properties props = new
我是一名优秀的程序员,十分优秀!