python中相邻句子的二元组

时间:2011-12-06 12:51:56

标签: python

假设我有三句话:

  1. hello world

  2. hello python

  3. today is tuesday

  4. 如果我生成每个字符串的bigrams,它将生成如下内容:

    [('hello', 'world')]
    [('this', 'is'), ('is', 'python')]
    [('today', 'is'), ('is', 'tuesday')]
    

    一个句子的bigrams和连续两个句子的bigrams之间是否存在差异?例如,hello world. hello python是两个连续的句子。这两个连续句子的bigrams会不会像我的输出?

    产生它的代码:

    from itertools import tee, izip
    
    def bigrams(iterable):
        a, b = tee(iterable)
        next(b, None)
        return izip(a, b)
    
    with open("hello.txt", 'r') as f:
        for line in f:
            words = line.strip().split()
            bi = bigrams(words)
            print list(bi)
    

1 个答案:

答案 0 :(得分:1)

  

但如果我想为相邻的句子生成双字母组合,它会得到与上述输出相同的结果。如果不是输出会是什么样的?

这取决于你想要什么。如果你将bigrams的项目定义为整个句子,它将如下所示:

[('hello world', 'this is python'),('this is python', 'today is tuesday')]

如果你想要一个项目类型为单词的双字母组合,对于所有句子,这将是这样的:

[('hello', 'world'), ('world', 'this'), ('this', 'is'),...]