Вычисление N граммов с использованием Python
Мне нужно было вычислить Unigrams, BiGrams и Trigrams для текстового файла, содержащего текст вроде: "
Кистозный фиброз затрагивает 30 000 детей и молодых людей только в США. Вдыхание туманов соленой воды может уменьшить гной и инфекцию, которая заполняет дыхательные пути страдающих муковисцидозом, хотя побочные эффекты включают неприятный приступ кашля и резкий вкус. Тот's заключение двух исследований, опубликованных на этой неделевыпуск журнала «Новая Англия по медицине».
Я начал в Python и использовал следующий код:
#!/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
Но это работает для всех n-граммов в слове, когда я хочу это между словами, как в ЦИСТИЧЕСКОМ и ФИБРОЗЕ или ЦИСТИЧЕСКОМ ФИБРОЗЕ. Может ли кто-нибудь помочь мне с тем, как я могу это сделать?