我正在训练使用 Weka 朴素贝叶斯对文本进行分类。我用这两个短语训练了分类器: en "Hello" it "La casaè"
这个想法是为每个 n-gram 大小 (1<= n <= 5) 创建一个分类器,然后将结果计算为每种语言的每个分类器的概率的加权和。
训练具有特定 n-gram 大小的分类器的代码如下:
public void evaluate(int sizeGrams) throws Exception {
trainData.setClassIndex(0);
filter = new StringToWordVector();
filter.setAttributeIndices("last");
MyNGramTokenizer ngram_tok = new MyNGramTokenizer();
ngram_tok.setNGramMinSize(sizeGrams);
ngram_tok.setNGramMaxSize(sizeGrams);
filter.setTokenizer(ngram_tok);
classifier = new FilteredClassifier();
classifier.setFilter(filter);
classifier.setClassifier(new NaiveBayes());
Evaluation eval = new Evaluation(trainData);
eval.crossValidateModel(classifier, trainData, 2, new Random(1));
}
如果我尝试对文本“casa”进行分类,结果是:
Classifying
casa
Classify ngrams:
Size 1
{it=0.9999999999966434, en=3.356604905116531E-12}
Size 2
{it=0.9999999975201513, en=2.479848603138736E-9}
Size 3
{it=0.49999999999999617, en=0.5000000000000039}
Size 4
{it=1.8321005992748378E-6, en=0.9999981678994008}
Size 5
{it=2.479848603138678E-9, en=0.9999999975201515}
谁知道为什么意大利班的概率随着 n-gram 的大小而缩小,而英语班的概率却在增长?
我的观点恰恰相反。
谢谢