如何“调试” StanfordNLP文本分类器

时间:2019-01-07 17:21:10

标签: stanford-nlp

我正在使用StanfordNLP进行文本分类。我有一个带有两个标签的训练集:是和否。两个标签每个标签的基准点大致相同(〜= 120K)。

问题在于StanfordNLP对某些文本进行了错误分类,我无法确定原因。我该如何调试?

我的火车文件如下:

YES guarda-roupa/roupeiro 2 portas de correr
YES guarda-roupa/roupeiro 3 portas
YES guarda roupa , roupeiro 3 portas
YES guarda-roupa 4 portas
YES guarda roupa 6p mdf
YES guardaroupas 3 portas
YES jogo de quarto com guarda-roupa 2 portas + cômoda + berço
YES guarda roupa 4pts
NO  base para guarda-sol
NO  guarda-sol alumínio
NO  guarda chuva transparente
NO  coifa guarda po alavanca cambio
NO  lancheira guarda do leao vermelha
NO  hard boiled: queima roupa
NO  roupa nova do imperador
NO  suporte para passar roupa

“ YES”标签标识“ guarda roupa”(浴袍),“ NO”标识不是“ guarda roupa”但具有一个或多个通用词的事物(例如“ guarda chuva”(伞)或“ roupa”)衣服)。

我不知道为什么,但是我的模型坚持将“ guarda roupa”(及其变体,例如“ guardaroupa”,“ guarda-roupas”等)归类为“否”。

我该如何调试?我已经仔细检查了我的火车文件,以查看我是否对某些东西进行了错误分类,引入了错误,但是我找不到它...

欢迎任何建议。

更新1

我正在使用以下属性来控制特征的创建:

 useClassFeature=false
 featureMinimumSupport=2
 lowercase=true
 1.useNGrams=false
 1.usePrefixSuffixNGrams=false
 1.splitWordsRegexp=\\s+
 1.useSplitWordNGrams=true
 1.minWordNGramLeng=2
 1.maxWordNGramLeng=5
 1.useAllSplitWordPairs=true
 1.useAllSplitWordTriples=true
 goldAnswerColumn=0
 displayedColumn=1
 intern=true
 sigma=1
 useQN=true
 QNsize=10
 tolerance=1e-4

更新2

在搜索API时,我发现ColumnDataClassifier具有方法getClassifier(),该方法可以访问具有LinearClassifier方法的基础dump()。转储会产生类似于波纹管的输出。通过API:“ Print all features in the classifier and the weight that they assign to each class.

                                      YES     NO
1-SW#-guarda-roupa-roupeiro-2portas   0,01    -0,01   
1-ASWT-guarda-roupa-roupeiro          0,19    -0,19
1-SW#-guarda-roupa-roupeiro           0,19    -0,19

如果我对toString()LinearClassifier,它将打印:

[-0.7, -0.7+0.1): 427.0  [(1-SW#-guarda-roupa-roupeiro-2portas,NO), ...]
[0.6, 0.6+0.1): 427.0  [(1-SW#-guarda-roupa-roupeiro-2portas,YES), ...]

0 个答案:

没有答案