【发布时间】:2020-08-12 09:43:58
【问题描述】:
我有一个包含一对关键字('k1','k2')的列表。这是一个示例:
print (word_pairs)
--->[('salaire', 'dépense'), ('gratuité', 'argent'), ('causesmwedemwelamwemort', 'cadres'), ('caractèresmwedumwedispositif', 'historique'), ('psychomotricienmwediplôme', 'infirmier'), ('impôtmwesurmwelesmweréunionsmwesportives', 'compensation'), ('affichage', 'affichagemweopinion'), ('délaimweprorogation', 'défaillance'), ('créancemwenotion', 'généralités')]
我有一个文本文件 r_isa.txt (205MB),其中包含共享“isa”关系的单词。这是一个示例,其中\t 表示文字制表符:
égalité de Parseval\tformule_0.9333\tégalité_1.0
filiation illégitime\tfiliation_1.0
Loi reconnaissant l'égalité\tloi_1.0
égalité entre les sexes\tégalité_1.0
liberté égalité fraternité\tliberté_1.0
这基本上意味着,“égalité de Parseval”是一个得分为 0.9333 的“公式”,一个得分为 1 的“égalité”。等等。
我想根据r_isa文件知道,如果关键字k1 isa k2,如果k2是-a k1。在输出文件中,我想在每一行中保存具有 is-a 关系的单词对。
这就是我所做的:
#Reading data as list
keywords = [line for line in open('version_final_PMI_espace.txt', encoding='utf8')]
keywords = ast.literal_eval(keywords[0])
word_pairs = []
for k,v in keywords.items():
if v:
word_pairs.append((k,v[0][0]))
len(list(set(word_pairs)))
#####
with open("r_isa.txt",encoding="utf-8") as readfile, open('Hyperonymy_file_pair.txt', 'w') as writefile:
for line in readfile:
firstfield = line.split('\t')[0].lower()
for w in word_pairs:
if w[0]==firstfield:
if w[1] in line:
writefile.write("".join(w[0]) + "\t"+"".join(w[1]) +"\n" )
这会向我返回随机对,例如:
salaire\targent
dépense\tcadres
不是(在现有 isa 关系的情况下)
salaire\tdépense
causesmwedemwelamwemort\tcadres
我哪里做错了?
【问题讨论】:
-
你能添加预期的输出吗?怎么会有人看懂
(k1,k6)(k1,k3) -
有没有可能一行可以包含多对?
-
请包含更多代码,包括 word_pairs 是如何填写的。如需帮助,请参阅 MVE:stackoverflow.com/help/minimal-reproducible-example
-
@deadshot 谢谢你的时间。我编辑了帖子,提供了有关输出的更多详细信息。我检查过,但它返回给我的这对之间绝对没有关系。
-
@NL5025 如果您发布与发布的文本文件数据匹配的预期输出可能会更好
标签: python python-3.x list