在 python 中创建双字母组
Creation of bigrams in python
我有一个从平行语料库中提取的候选双语术语列表,采用这种格式
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')
有人可以帮忙吗?
我的解决方案:
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')
这是您要找的吗?
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')
你需要一些争论才能得到你需要的东西。如果您只想要基于翻译的元组,根据您的示例,您可以使用以下函数:
# -*- 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')
我有一个从平行语料库中提取的候选双语术语列表,采用这种格式
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')
有人可以帮忙吗?
我的解决方案:
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')
这是您要找的吗?
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')
你需要一些争论才能得到你需要的东西。如果您只想要基于翻译的元组,根据您的示例,您可以使用以下函数:
# -*- 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')