Obliczanie N gramów za pomocą Pythona

Musiałem obliczyć Unigramy, BiGramy i Trigramy dla pliku tekstowego zawierającego tekst taki jak:

„Mukowiscydoza dotyka 30 000 dzieci i młodych dorosłych w samych Stanach Zjednoczonych. Wdychanie mgieł słonej wody może zmniejszyć ropę i zakażenia, które wypełniają drogi oddechowe osób cierpiących na mukowiscydozę, chociaż skutki uboczne obejmują nieprzyjemny kaszel i ostry smak. z dwóch badań opublikowanych w tym tygodniu w The New England Journal of Medicine. ”

Zacząłem w Pythonie i użyłem następującego kodu:

#!/usr/bin/env python
# File: n-gram.py
def N_Gram(N,text):
NList = []                      # start with an empty list
if N> 1:
    space = " " * (N-1)         # add N - 1 spaces
    text = space + text + space # add both in front and back
# append the slices [i:i+N] to NList
for i in range( len(text) - (N - 1) ):
    NList.append(text[i:i+N])
return NList                    # return the list
# test code
for i in range(5):
print N_Gram(i+1,"text")
# more test code
nList = N_Gram(7,"Here is a lot of text to print")
for ngram in iter(nList):
print '"' + ngram + '"'

http://www.daniweb.com/software-development/python/threads/39109/generating-n-grams-from-a-word

Ale działa dla wszystkich n-gramów w obrębie słowa, kiedy chcę go między słowami jak w CYSTIC i FIBROSIS lub CYSTIC FIBROSIS. Czy ktoś może mi pomóc, jak mogę to zrobić?

questionAnswers(8)

yourAnswerToTheQuestion