Mallet SimpleTagger的谓词数量不同

时间:2017-06-24 08:33:44

标签: java mallet crf

我正在尝试提供$statuses = [ 1 => FacebookHelper::CAMPAIGN_STATUS_ACTIVE, 2 => FacebookHelper::CAMPAIGN_STATUS_ACTIVE, 3 => FacebookHelper::CAMPAIGN_STATUS_ARCHIVED, ]; $helper ->expects($this->exactly(count($statuses)) ->method('getExternalCampaignData') ->willReturnCallback(function(Campaign $campaign) use ($statuses) { $id = $campaign->getFbCampaignId(); if (!array_key_exists($id, $statuses)) { return; } return [ 'campaign' => [ 'status' => $statuses[$id], ], ]; }); 教程here。我运行了与页面上提供的完全相同的命令,即

SimpleTagger

java -cp "class:lib/mallet-deps.jar" cc.mallet.fst.SimpleTagger --train true --model-file nouncrf sample

以下是我的java -cp "class:lib/mallet-deps.jar" cc.mallet.fst.SimpleTagger --model-file nouncrf stestsample个文件。

stest

$ cat sample

Bill CAPITALIZED noun slept non-noun here LOWERCASE STOPWORD non-noun

$ cat stest

但是,我的输出与其页面上的输出不同。这是我得到的输出。

CAPITAL Al  
        slept  
        here

我的问题是

  
      
  1. “谓词数”表示什么?
  2.   
  3. 为什么我得到9个谓词,而官方消息来源声称有5个谓词用于相同的输入文件?
  4.   

如果重要的话,我正在使用Mallet 2.0.8。

1 个答案:

答案 0 :(得分:0)

当您开始训练时,SimpleTagger给您的第一条消息是:

Number of features in training data: x
Number of predicates: y

谓词数y是训练数据包含的不同标记(或行)的数量。

使用上一列火车(具有y谓词)的模型标记文件时,会收到一条消息:

Number of predicates: z

zy与要标记的文件包含的不同标记(或行)数之和。这就是z总是大于(或等于)y的原因。例如,如果您尝试使用具有y谓词的模型标记空的内容文本文件,您将获得许多谓词y,即y + 0 = y,导致您的空文件有0个标签。