Я пытаюсь построить n-грамм, которые не пересекают символ периода.Split () работает только для функций, а list [index] работает только с индексом.Есть ли способ получить / разделить / разделить список, дав ему строку / элемент?Вот фрагмент моей текущей функции:
text = ["split","this","stuff",".","my","dear"]
def generate_ngram(rawlist, ngram_order):
"""
Input: List of words or characters, ngram-order ["this", "is", "an", "example"], 2
Output: Set of tuples or words or characters {("this", "is"),("is","an"),...}
"""
list_of_tuples = []
for i in range(0, len(rawlist) - ngram_order + 1):
ngram_order_index = i + ngram_order
generated_ngram = rawlist[i : ngram_order_index]
#if "." in generated_ngram:
#generated_ngram . . .
generated_tuple = tuple(generated_ngram)
list_of_tuples.append(generated_tuple)
return set(list_of_tuples)
generate_ngram(text,3)
в настоящее время возвращает:
{('.', 'my', 'dear'),
('stuff', '.', 'my'),
('split', 'this', 'stuff'),
('this', 'stuff', '.')}
, но в идеале должно возвращаться:
{('split', 'this', 'stuff'),
('this', 'stuff', '.')}
Любая идея о том, какдостичь этого?Спасибо за вашу помощь!