我正在使用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), ...]