我们使用斯坦福CoreNLP已经有一段时间了,大多数时候它都能提供正确的结果。
但是对于某些句子,依存分析的结果会变得混乱。正如我们所观察到的,其中一些错误是由词性标签问题引起的,例如I really like this restaurant.
中的单词like
或Very affordable and excellent ambient!
中的单词ambient
是的,我们正在处理用户评论,这些评论的措辞可能与斯坦福CoreNLP中的训练语料库略有不同,因此我们正在考虑自己注释一些文本,并与现有模型混合。对于NER,我们已经有了自己的用于特殊no的模型,但对于POS标记和依赖关系解析,我们没有线索。
有没有人能提供一些建议?
发布于 2019-08-10 10:48:09
最好的方法是使用CoNLL-U数据。
这里有英文树库:https://universaldependencies.org/
这里有我们在这里训练过的各种词性模型的属性文件示例(也在模型jars中):
https://github.com/stanfordnlp/CoreNLP/tree/master/scripts/pos-tagger
以下是词性训练命令的示例:
java -Xmx10g edu.stanford.nlp.tagger.maxent.MaxentTagger -props custom.props
请注意,您希望使用此格式指定用于对CoNLL-U文件进行训练和评估的文件:
trainFile = format=TSV,wordColumn=1,tagColumn=3,/path/to/train.conllu
在这里,您指定使用制表符分隔的文件(每行有一个标记,空行用于断句),并说明哪些列分别表示单词和标记。
以下是训练依赖项解析器的示例命令:
java edu.stanford.nlp.parser.nndep.DependencyParser -Xmx10g -trainFile <trainPath> -devFile <devPath> -embedFile <wordEmbeddingFile> -embeddingSize <wordEmbeddingDimensionality> -model nndep.model.txt.gz
需要注意的一件事是UPOS
标记和XPOS
标记的概念。UPOS
标签应该在第3列,而XPOS
在第4列。UPOS
对所有语言都是通用的,XPOS
是细粒度的和特定于语言的。
-cPOS
标志将告诉训练过程使用列索引3中的UPOS
标记。如果您不添加此标志,它将默认使用列索引4,如示例命令中所示。
如果您使用来自GitHub的斯坦福CoreNLP的最新代码,此命令应该可以使用CoNLL-U数据正确地训练模型。如果您使用的是3.9.2中的代码,则需要确保将数据从CoNLL-U转换为CoNLL-X。CoNLL-X是一种较旧的样式,它不包含有关多单词标记的信息。
此外,为了使模型具有最佳性能,您需要确保在整个应用程序中使用与训练数据一致的标记化。
https://stackoverflow.com/questions/57354728
复制相似问题