我在Coursera上经历了旧的哥伦比亚NLP课程,而且我目前正在尝试做第一次任务。该类使用Python,但由于我对Java / Groovy更加熟悉,因此我决定重写Groovy中第一个赋值中给出的所有帮助程序。
我注意到原作者做了一些看起来像乘法的东西。我正在谈论的具体功能如下:
def get_ngrams(sent_iterator, n):
"""
Get a generator that returns n-grams over the entire corpus,
respecting sentence boundaries and inserting boundary tokens.
Sent_iterator is a generator object whose elements are lists
of tokens.
"""
for sent in sent_iterator:
#Add boundary symbols to the sentence
w_boundary = (n-1) * [(None, "*")]
w_boundary.extend(sent)
w_boundary.append((None, "STOP"))
#Then extract n-grams
ngrams = (tuple(w_boundary[i:i+n]) for i in xrange(len(w_boundary)-n+1))
for n_gram in ngrams: #Return one n-gram at a time
yield n_gram
具体来说,我不明白这一行
w_boundary = (n-1) * [(None, "*")]
我看到n在函数定义中声明,但我不知道它是什么。正在搜索"字符串乘法python"并没有给我任何帮助。有人可以解释这个python功能还是让我更好地了解我至少应该尝试搜索什么?
答案 0 :(得分:1)
>>> n = 3
>>> w = n * [(None, "*")]
>>> print w
[(None, '*'), (None, '*'), (None, '*')]