寻找将文本组合成块的最佳方式

问题描述 投票:0回答:0

我正在尝试根据某些约束找到生成文本块的最佳方法。

我有一个 JSON 结构,如下所示:

{
  "id": 1,
  "parent_id": null,
  "text": "This is level 1, id 1",
  "blocks": [
    {
      "id": 2,
      "parent_id": 1,
      "text": "This is level 2, id 2",
      "blocks": [
        {
          "id": 3,
          "parent_id": 2,
          "text": "This is level 3, id 3",
        },
        {
          "id": 4,
          "parent_id": 2,
          "text": "This is level 3, id 4",
        }
      ]
    },
    {
      "id": 5,
      "parent_id": 1,
      "text": "This is level 2, id 5",
    }
  ]
}

我正在尝试将多个

text
字段组合成块,同时考虑以下因素:

  1. 仅组合
    text
    字段,如果这导致块少于 X 个字符(即 50)。
  2. 从最深的嵌套元素开始组合块。
  3. 最小化生成的块数。
  4. 应保留秩序。

对于提供的 JSON 示例,这些是预期的块(和顺序):

chunks = [
  ["This is level 1, id 1", "This is level 2, id 2"],
  ["This is level 3, id 3", "This is level 3, id 4"],
  ["This is level 2, id 5"]
]

请注意,带有

id=5
的元素不会与带有
id=2
的元素放在一起,尽管它们处于相同的深度,因为那样会破坏顺序。组合它们的唯一方法是,如果元素 2、3、4 和 5 的字符之和小于 50。

关于如何使用 Python 实现这个的任何想法?

我试图通过从最深的嵌套元素到根遍历 JSON 树来递归生成文本块,但我没能成功。我还没能得到那个输出。

python optimization combinatorics
© www.soinside.com 2019 - 2024. All rights reserved.