Python还原bigrams和trigrams

时间:2016-02-18 12:18:01

标签: python trigram

我有一个双字母组合和三元组列表:

string = 'do not be sad'

a_list: = ['do', 'not', 'do not', 'be', 'not be', 'do not be', 'sad', 'be sad', 'not be sad']

我想知道是否有一个函数来反转a_list中的二元组和三元组?我知道我可以加入所有字符串并删除重复项,但这会丢失句子的结构。我正在寻找是否有人有任何提示,以便a_list可以恢复到原来的字符串。

所需的输出将是:

b_list = ['do not be sad']

2 个答案:

答案 0 :(得分:1)

试试这个

NULL

输出

string = 'do not be sad'
string = string.split()

a_list = ['do', 'not', 'do not', 'be', 'not be', 'do not be', 'sad', 'be sad', 'not be sad']

new = []

for a in string:
    for b in a_list:
        if a == b:
            new.append(b)

print([' '.join(new)])

我们可以把它变成一个漂亮的单行

['do not be sad']
编辑:为了回应zondo的评论,我决定编辑我的答案,而且我发现这个问题非常有趣

print([' '.join([b for a in string for b in a_list if a == b])])

我还创建了几个测试用例来测试我的解决方案,他们都通过了

答案 1 :(得分:0)

使用列表理解:

a_sentence = [" ".join(word for word in a_list if len(word.split()) == 1)]
print(a_sentence)

# Output: ['do not be sad']