java - JSON:Python 输出文件到 Java ObjectMapper - 大小错误

标签 java python json jackson

因此,我从 Python 中的 NLTK 获取数据并将其打印到文件(使用 JSON),以便我可以将其加载到 Java 中。这就是我在 Python 中所做的。

wordcounts = nltk.ConditionalFreqDist((w.lower(), t) for w, t in brown.tagged_words())
print wordcounts.N()
with open('test.json', 'w') as outfile:
     json.dump(wordcounts, outfile)

然后,在 Java 中,我加载 json 文件。我正在使用 jackson 。代码是:

 ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
 Map<String,Object> word = mapper.readValue(new File("test.json"), Map.class);
 System.out.println(word.size());

这一切似乎都有效,但是,(Java) word.size() 的输出甚至不接近 python 的 wordcounts.N() 的大小。 Python输出的大小是1161192,而Java的大小只有49815。

有人知道出了什么问题吗?

编辑: 根据要求提供更多信息:

我正在加载的 python 输出文件的片段如下所示

"dronk": {
    "NP": 2
}, 
"dronk's": {
    "NP$": 1
}, 
"droop": {
    "VB": 1
}, 
"drooped": {
    "VBD": 1
}, 
"drooping": {
    "VBG": 1
}, 
"drop": {
    "JJ": 1, 
    "NN": 24, 
    "VB": 34
}, 

澄清。

System.out.println(word.size());

打印出来

56057

还有

 print wordcounts.N()

打印出来

1161192

1161192 是正确的尺寸。

最佳答案

问题不在于 Java。一切都很顺利。如果您在 python 上读取 JSON:

with open('test.json') as data_file:    
    data = json.load(data_file)
print len(data) #49815

或者如果:

print len(wordcounts) #49815

1161192 是包含单词和标签的元组的数量。示例:

# wordcounts['drop'] has 3 tags.
print len(wordcounts['drop']) # 3
test = wordcounts['drop']
print test.N() # 59 ( "JJ": 1, "NN": 24, "VB": 34), 34+24+1

如果你想让Java显示1161192,你必须对所有标签求和:

ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
Map<String,Object> words = mapper.readValue(new File("test.json"), Map.class);
int value = 0;
for (String word : words.keySet()) {
    Map<String, Integer> tags = (Map) words.get(word);
    for (String tag : tags.keySet()) {
        value += tags.get(tag);
    }
}
System.out.println(value); #1161192

关于java - JSON:Python 输出文件到 Java ObjectMapper - 大小错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793500/

相关文章:

java - Android服务和asynctask通信

java - Android 通过 kotlin 返回非空字体

java - 如何判断一个字符串是否是hash

java - 对非 Rails 应用程序使用 activerecord 迁移,步骤是什么?

python - 您的 CPU 支持此 TensorFlow 二进制文件未编译为使用 : AVX2 FMA 的指令

php - 我在 zend framework1 上提交表单时如何传递消息

python - 实现 wxpython 的 html2.WebViewHandler 和 html2.WebViewFSHandler 的问题

python - Theano学习与门

c# - 返回空 Json 对象

javascript - 指令加载时间非常长,检查加载时间的方法