CoreNLP TrueCaseAnnotator returns 在某些情况下大写文本
CoreNLP TrueCaseAnnotator returns uppercased text in some cases
我经常得到大写的结果。在某些情况下,模型效果很好,但在某些情况下效果更差。有机会解决这个问题吗?
一些不良案例的例子:
世界上最小的花瓶! -> 世界上最小的花瓶!
Swarna Chaturvedy 喜欢。植物和点击几下即可赢得他的免费露台花园! -> SWARNA chaturvedy 喜欢。只需点击几下即可赢得他的免费露台花园!
灭霸!赢得 Infinity Gauntlet Fortnite:Battle Royale LIVE -> Thanos!赢得 Infinity Gauntlet FORTNITE : Battle Royale Live
带硬盘的 DIY 静态轨道砂光机 -> 带硬盘的 DIY 静态轨道砂光机
酷圣诞贺卡 -> 酷圣诞贺卡
这款未来派的 3D 打印机使用光进行打印 -> 这款未来派的 3D 打印机使用光进行打印
Maia 晚餐放大 -> MAIA 晚餐放大
整容外科医生使用激光去除痣 -> 整容外科医生使用激光去除痣
@anelkasam
我尝试调整偏差参数,但问题仍然存在
最好的办法是训练自己的模型。我们可能会考虑训练一个新模型并在某个时候分发它。
您可以通过从主要模型 jar 中提取此文件来查看我们用于训练模型的道具文件:
edu/stanford/nlp/models/truecase/truecasing.fast.caseless.prop
训练数据只是 space 个分隔的标记,每行一个句子,大小写正确。我们无法分发用于我们分发的模型的训练数据。无论文本是您的典型领域,您都可以将其中的数百万个句子输入训练过程,并训练一个可能在您的数据集上表现更好的新模型。
我们使用的训练数据有 1,301,730 个句子。
这里有一个 GitHub 讨论帖:https://github.com/stanfordnlp/CoreNLP/issues/336
训练命令应该是:
java -Xmx100g edu.stanford.nlp.ie.crf.CRFClassifier -prop custom.prop
作为参考,提取的属性文件如下所示:
serializeTo=truecasing.fast.caseless.qn.ser.gz
trainFileList=/scr/nlp/data/gale/NIST09/truecaser/crf/noUN.input
testFile=/scr/nlp/data/gale/AE-MT-eval-data/mt06/cased/ref0
map=word=0,answer=1
wordFunction = edu.stanford.nlp.process.LowercaseFunction
useClassFeature=true
useWord=true
useNGrams=true
noMidNGrams=true
maxNGramLeng=6
usePrev=true
useNext=true
useLongSequences=true
useSequences=true
usePrevSequences=true
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
useOccurrencePatterns=true
useLastRealWord=true
useNextRealWord=true
useDisjunctive=true
disjunctionWidth=5
wordShape=chris2useLC
usePosition=true
useBeginSent=true
useTitle=true
useObservedSequencesOnly=true
saveFeatureIndexToDisk=true
normalize=true
useQN=false
QNSize=25
maxLeft=1
l1reg=1.0
readerAndWriter=edu.stanford.nlp.sequences.TrueCasingForNISTDocumentReaderAndWriter
featureFactory=edu.stanford.nlp.ie.NERFeatureFactory
featureDiffThresh=0.02
我经常得到大写的结果。在某些情况下,模型效果很好,但在某些情况下效果更差。有机会解决这个问题吗?
一些不良案例的例子:
世界上最小的花瓶! -> 世界上最小的花瓶!
Swarna Chaturvedy 喜欢。植物和点击几下即可赢得他的免费露台花园! -> SWARNA chaturvedy 喜欢。只需点击几下即可赢得他的免费露台花园!
灭霸!赢得 Infinity Gauntlet Fortnite:Battle Royale LIVE -> Thanos!赢得 Infinity Gauntlet FORTNITE : Battle Royale Live
带硬盘的 DIY 静态轨道砂光机 -> 带硬盘的 DIY 静态轨道砂光机
酷圣诞贺卡 -> 酷圣诞贺卡
这款未来派的 3D 打印机使用光进行打印 -> 这款未来派的 3D 打印机使用光进行打印
Maia 晚餐放大 -> MAIA 晚餐放大
整容外科医生使用激光去除痣 -> 整容外科医生使用激光去除痣
@anelkasam
我尝试调整偏差参数,但问题仍然存在
最好的办法是训练自己的模型。我们可能会考虑训练一个新模型并在某个时候分发它。
您可以通过从主要模型 jar 中提取此文件来查看我们用于训练模型的道具文件:
edu/stanford/nlp/models/truecase/truecasing.fast.caseless.prop
训练数据只是 space 个分隔的标记,每行一个句子,大小写正确。我们无法分发用于我们分发的模型的训练数据。无论文本是您的典型领域,您都可以将其中的数百万个句子输入训练过程,并训练一个可能在您的数据集上表现更好的新模型。
我们使用的训练数据有 1,301,730 个句子。
这里有一个 GitHub 讨论帖:https://github.com/stanfordnlp/CoreNLP/issues/336
训练命令应该是:
java -Xmx100g edu.stanford.nlp.ie.crf.CRFClassifier -prop custom.prop
作为参考,提取的属性文件如下所示:
serializeTo=truecasing.fast.caseless.qn.ser.gz
trainFileList=/scr/nlp/data/gale/NIST09/truecaser/crf/noUN.input
testFile=/scr/nlp/data/gale/AE-MT-eval-data/mt06/cased/ref0
map=word=0,answer=1
wordFunction = edu.stanford.nlp.process.LowercaseFunction
useClassFeature=true
useWord=true
useNGrams=true
noMidNGrams=true
maxNGramLeng=6
usePrev=true
useNext=true
useLongSequences=true
useSequences=true
usePrevSequences=true
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
useOccurrencePatterns=true
useLastRealWord=true
useNextRealWord=true
useDisjunctive=true
disjunctionWidth=5
wordShape=chris2useLC
usePosition=true
useBeginSent=true
useTitle=true
useObservedSequencesOnly=true
saveFeatureIndexToDisk=true
normalize=true
useQN=false
QNSize=25
maxLeft=1
l1reg=1.0
readerAndWriter=edu.stanford.nlp.sequences.TrueCasingForNISTDocumentReaderAndWriter
featureFactory=edu.stanford.nlp.ie.NERFeatureFactory
featureDiffThresh=0.02