假设我有三句话:
hello world
hello python
today is tuesday
如果我生成每个字符串的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)
答案 0 :(得分:1)
但如果我想为相邻的句子生成双字母组合,它会得到与上述输出相同的结果。如果不是输出会是什么样的?
这取决于你想要什么。如果你将bigrams的项目定义为整个句子,它将如下所示:
[('hello world', 'this is python'),('this is python', 'today is tuesday')]
如果你想要一个项目类型为单词的双字母组合,对于所有句子,这将是这样的:
[('hello', 'world'), ('world', 'this'), ('this', 'is'),...]