基于每个句子检查dict中是否存在两个列表元素?

2024-09-29 21:39:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个JSON文件。。。你知道吗

  "1": {"address": "1",
          "ctag": "Ne",
          "feats": "_",
          "head": "6",
          "lemma": "Ghani",
          "rel": "SBJ",
          "tag": "Ne",
          "word": "Ghani"},
    "2": {"address": "2",
          "ctag": "AJ",
          "feats": "_",
          "head": "1",
          "lemma": "born",
          "rel": "NPOSTMOD",
          "tag": "AJ",
          "word": "born"},
    "3": {"address": "3",
          "ctag": "P",
          "feats": "_",
          "head": "6",
          "lemma": "in",
          "rel": "ADV",
          "tag": "P",
          "word": "in"},
    "4": {"address": "4",
          "ctag": "N",
          "feats": "_",
          "head": "3",
          "lemma": "Kabul",
          "rel": "POSDEP",
          "tag": "N",
          "word": "Kabul"},
  "5": {"address": "5",
          "ctag": "PUNC",
          "feats": "_",
          "head": "6",
          "lemma": ".",
          "rel": "PUNC",
          "tag": "PUNC",
          "word": "."},

我读取了JSON文件并存储在dict中

import json

# read file
with open('../data/data.txt', 'r') as JSON_file:
     obj = json.load(JSON_file)

d = dict(obj) # stored it in a dict

我从这个dict中提取了两个列表,每个列表包含来自文本的relationentities,如下所示:

 entities(d) = ['Ghani', 'Kabul', 'Afghanistan'....]
 relation(d) = ['president', 'capital', 'located'...]

现在我想检查dict d的每个句子,如果entities(d)relation(d)的任何元素存在,它应该存储到另一个列表中。 我做了什么?你知道吗

to_match = set(relation(d) + entities(d))
entities_and_relation = [[j for j in to_match if j in i] 
                    for i in ''.join(d).split('.')[:-1]]
print(entities_and_relation)

但这给了我一个空名单。你能告诉我这里怎么了吗。你知道吗

输出应如下所示: [阿富汗总统加尼]。。。你知道吗


Tags: injsonaddresstagheaddictwordrel
1条回答
网友
1楼 · 发布于 2024-09-29 21:39:06

在这里,我解决了这个问题,但我不知道如何为每个相关实体提供一个特定的格式。你知道吗

for i in d.values():
if i['word'].split('.')[-1] in to_match:
    print('{: ^10}'.format(i['word']))

输出:

 Ghani
 Kabul
 Born
 Kabul
 Captial
 Afghanistan

我的预期产出:

 (Ghani, born, Kabul), (Kabul, capital, Afghanistan) or ...
 Born_in(Ghani, Kabul), Capital_of(Kabul, Afghanistan)

我不知道如何映射它或者设计它来给我预期的输出。你知道吗

相关问题 更多 >

    热门问题