【问题标题】:Test Maximum Entropy classifier测试最大熵分类器
【发布时间】:2018-08-03 11:51:57
【问题描述】:

是否可以在不创建包含所有特征的外部文件的情况下通过斯坦福最大熵分类器对新数据进行分类?

换句话说,我有一个格式如下的测试文件:

token1 \t feature1_1 \t ... \t feature1_N \t goldLabel1

...

tokenM \t featureM_1 \t ... \t featureM_N \t goldLabelM

我想知道是否可以使用数据结构来包含测试数据 无需创建外部文件。

【问题讨论】:

  • 您要使用 MaxentTagger 还是 ColumnDataClassifier ?
  • 你是说你有内存中的数据,你想在 Java API 中运行它而不需要写入文件?
  • 没错。我想创建一个数据结构,包括第一列的标记,然后是不同的列(代表我的功能),最后一列是用户分配的标签(goldAnswer)。通过这种方式,我不需要创建单独的文件,并且可以将数据保存在 RAM 中。最终系统应该更快。你觉得这可能吗?
  • 另外,我正在使用 ColumnDataClassifier 对我的数据执行 NER。我过去使用标准的斯坦福 NER(基于 CRF 的工具)工具,但它在训练阶段停止迭代,我无法获得有效的模型。然后我尝试了最大熵,它为我提供了很好的结果,但我仍然对创建单独的文件有这个限制。当我处理大 PDF(> 2gb)时,我会避免为每个 PDF 创建单独的文件。感谢您的帮助!
  • @StanfordNLPHelp 有什么建议吗?

标签: nlp stanford-nlp text-classification


【解决方案1】:

如果您查看此方法(ColumnDataClassifier 中的第 409 行)

private Pair<GeneralDataset<String,String>, List<String[]>> readDataset(String filename, boolean inTestPhase) {

您可以看到代码如何从文件路径转到Pair&lt;GeneralDataset&lt;String,String&gt;, List&lt;String[]&gt;&gt;

这是评估所需的关键数据对象。

如果您查看此方法(ColumnDataClassifier 中的第 2158 行),您可以看到评估是如何完成的

public Pair&lt;Double, Double&gt; testClassifier(String testFile) {

如果您查看 main() 方法(第 2011 行),您将看到正在构建的 ColumnDataClassifier 示例。

通过查看这三种方法,您可以编写额外的代码来做您想做的事情,并避免写入磁盘。

【讨论】:

    猜你喜欢
    • 2011-09-30
    • 2012-06-11
    • 2012-09-05
    • 2012-04-18
    • 2013-12-25
    • 2016-01-24
    • 2018-09-10
    • 2017-03-16
    • 2016-09-10
    相关资源
    最近更新 更多