我有一个从平行语料库中提取的候选双语词汇的列表,以这种格式。
Difensori dei diritti umani, libertà di espressione >>> Human rights defenders, freedom of expression我想要的是用两种语言把这个项目联系在一起。因此,源语言(意大利语)中的每一个多词词都会与目标语言(英语)中的每一个多词词联系在一起。因此,举个例子,大图将如下所示:
('Difensori dei diritti umani','Human rights defenders')
('Difensori dei diritti umani','freedom of expression')
('libertà di espressione','Human rights defenders')
('libertà di espressione','freedom of expression')有人能帮忙吗?
发布于 2015-10-14 11:06:15
你需要一点争吵才能得到你想要的。如果您只想要基于翻译的元组,根据您的示例,可以使用以下函数:
# -*- coding: utf-8 -*-
def zipping(string):
string = string.replace(', ', ',') # to take away parasite spaces
string = string.split(" >>> ")
trans_tuples = zip(string[0].split(','), string[1].split(','))
return trans_tuples
str = "Difensori dei diritti umani, libertà di espressione >>> Human rights defenders, freedom of expression"
for bigram in zipping(str):
print bigram产出将是:
('Difensori dei diritti umani', 'Human rights defenders')
('libertà di espressione', 'freedom of expression')如果您需要将两个术语在一边与另一端的两个术语相关联(为了上下文目的,我想),只需按如下方式调整压缩函数:
# -*- coding: utf-8 -*-
def zipping(string):
string = string.replace(', ', ',')
string = string.split(" >>> ")
trans_tuples = zip(string[0].split(','), string[1].split(','))
trans_tuples.append((trans_tuples[0][0], trans_tuples[1][1])) # new line 1
trans_tuples.append((trans_tuples[1][0], trans_tuples[0][1])) # new line 2
return trans_tuples
str = "Difensori dei diritti umani, libertà di espressione >>> Human rights defenders, freedom of expression"
for bigram in zipping(str):
print bigram在这种情况下,输出如下:
('Difensori dei diritti umani', 'Human rights defenders')
('libertà di espressione', 'freedom of expression')
('Difensori dei diritti umani', 'freedom of expression')
('libertà di espressione', 'Human rights defenders')发布于 2015-10-14 10:40:44
这就是你要找的吗?
s = "Difensori dei diritti umani, liberta di espressione >>> Human rights defenders, freedom of expression"
bigrams = []
trans = s.split(' >>> ')
for it in trans[0].split(', '):
for en in trans[1].split(', '):
bigrams.append((it, en))
print((it, en))它产生这样的输出:
('Difensori dei diritti umani', 'Human rights defenders')
('Difensori dei diritti umani', 'freedom of expression')
('liberta di espressione', 'Human rights defenders')
('liberta di espressione','freedom of expression') 发布于 2015-10-14 10:19:37
我的解决方案:
str = "Difensori dei diritti umani, libertà di espressione >>> Human rights defenders, freedom of expression"
b = [elem.split(", ") for elem in str.split(" >>> ")]
bigrams = list(zip(b[0], b[1]))
bigrams_ = list((zip(reversed(b[0]), b[1])))
bigrams = bigrams + bigrams_
for bigram in bigrams:
print(bigram)输出:
('Difensori dei diritti umani', 'Human rights defenders')
('libertà di espressione', 'freedom of expression')
('libertà di espressione', 'Human rights defenders')
('Difensori dei diritti umani', 'freedom of expression')https://stackoverflow.com/questions/33122671
复制相似问题