我正在使用以下程序:
public static void main(String[] args) throws Exception
{
String input = args[0];
InputStream is = new BufferedInputStream( new FileInputStream( input ) );
toMultiLabelDataset(is);
is.close();
}
public static MultiLabelDataset<String, String> toMultiLabelDataset(InputStream is) throws IOException
{
List<RelationAndMentions> relations = toRelations(is, true);
MultiLabelDataset<String, String> dataset = toDataset(relations);
return dataset;
}
正如您所看到的,它使用了以下形式的数据结构MultiLabelDataset<String, String>
,我想以人类智能的形式打印那个野兽的内容。根据我之前的搜索,我可能可以使用 apache string utils 或 google guava 库,对吗?我该怎么做呢?
我的猜测是,这些库中有一个等效的数据结构,它需要<String, String>
,我只需要确定那是什么,复制内容MultiLabelDataset<String, String>
然后打印?这合理吗?
EDIT
Multimap<String, String> result = HashMultimap.create();
for (String key : ((MultiLabelDataset) dataset).items)
{
for (String value : dataset.getLabels())
{
result.put(key, value);
}
}
^不是那样的。
假设是这个多标签数据集,那么就和Guava的类似了Multimap你可以轻松转换它。但是,这种转换既不会比直接转换为更简单,也不会更智能。String
。唯一的优点是,此后您可以使用一个健全的 Java 类,该类具有许多有用的方法,并且可以与其他 Java 类很好地协同工作。
整个转换像往常一样进行,但是您需要一些东西来迭代键。假设唯一的实现是 LabeledLDADataset,这很简单:
Multimap<String, String> toMultimap(MultiLabelDataset<String, String> dataset) {
Multimap<String, String> result = HashMultimap.create();
for (Item key : ((LabeledLDADataset) dataset).items()) {
result.putAll(key.toString(), dataset.getLabels(key));
}
return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)