【发布时间】:2017-05-13 04:57:15
【问题描述】:
我有一个列表列表,其中每个内部列表都是一个被标记为单词的句子:
sentences = [['farmer', 'plants', 'grain'],
['fisher', 'catches', tuna'],
['police', 'officer', 'fights', 'crime']]
目前我正在尝试像这样计算 nGram:
numSentences = len(sentences)
nGrams = []
for i in range(0, numSentences):
nGrams.append(list(ngrams(sentences, 2)))
这会导致找到整个列表的二元组,而不是每个内部列表的单个单词(并且它会重复句子的数量,这在某种程度上是可预测的):
[[(['farmer', 'plants', 'grain'], ['fisher', 'catches', tuna']),
(['fisher', 'catches', tuna'], ['police', 'officer', 'fights', 'crime'])],
[(['farmer', 'plants', 'grain'], ['fisher', 'catches', tuna']),
(['fisher', 'catches', tuna'], ['police', 'officer', 'fights', 'crime'])],
[(['farmer', 'plants', 'grain'], ['fisher', 'catches', tuna']),
(['fisher', 'catches', tuna'], ['police', 'officer', 'fights', 'crime'])]]
如何(按单词)计算每个句子的 nGram?换句话说,如何确保 nGram 不跨越多个列表项?这是我想要的输出:
farmer plants
plants grain
fisher catches
catches tuna
police officer
officer fights
fights crime
【问题讨论】: