我有一个包含电影数据的“.csv”文件,我正在尝试将其重新格式化为 JSON 文件以在 MongoDB 中使用它。所以我将该 csv 文件加载到 pandas DataFrame 中,然后使用 to_json 方法将其写回。DataFrame 中的一行如下所示:
In [43]: result.iloc[0]
Out[43]:
title Avatar
release_date 2009
cast [{"cast_id": 242, "character": "Jake Sully", "...
crew [{"credit_id": "52fe48009251416c750aca23", "de...
Name: 0, dtype: object
Run Code Online (Sandbox Code Playgroud)
但是当 pandas 写回来时,它就变成了这样:
{ "title":"Avatar",
"release_date":"2009",
"cast":"[{\"cast_id\": 242, \"character\": \"Jake Sully\", \"credit_id\": \"5602a8a7c3a3685532001c9a\", \"gender\": 2,...]",
"crew":"[{\"credit_id\": \"52fe48009251416c750aca23\", \"department\": \"Editing\", \"gender\": 0, \"id\": 1721,...]"
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,“cast”和“crew”是列表,它们有大量多余的反斜杠。这些反斜杠出现在 MongoDB 集合中,导致无法从这两个字段中提取数据。
\"
除了替换为之外,如何解决这个问题"
?
PS1:这就是我将 DataFrame 保存为 JSON 的方法:
result.to_json('result.json', orient='records', lines=True)
Run Code Online (Sandbox Code Playgroud)
更新 1:显然 pandas 做得很好,问题是由原始 csv …
我正在研究一个名为DPR的信息检索模型,它基本上是一个神经网络(2 个 BERT),根据给定的查询对文档进行排名。目前,该模型以二进制方式(文档是否相关)进行训练,并使用负对数似然(NLL)损失。我想改变这种二元行为并创建一个可以处理分级相关性的模型(例如 3 个等级:相关、某种程度上相关、不相关)。我必须更改损失函数,因为目前我只能为每个查询分配 1 个正目标(DPR 使用 pytorch NLLLoss),而这不是我需要的。
我想知道是否可以使用像 NDCG(标准化贴现累积增益)这样的评估指标来计算损失。我的意思是,损失函数的全部意义在于告诉我们我们的预测有多偏离,而 NDCG 也在做同样的事情。
那么,我可以使用这样的指标来代替损失函数并进行一些修改吗?对于 NDCG,我认为从 1 (1 - NDCG_score) 中减去结果可能是一个很好的损失函数。真的吗?
致以最诚挚的问候,阿里。
evaluation information-retrieval ranking neural-network loss-function