2014-11-17 4 views
1

Я только начал изучать питон. Я пытался убрать предложение, взломав слова и присоединившись к предложению. в документе big.txt есть несколько слов, например, молодежь, смотритель и т. д. Проблема заключается в окончательной процедуре: looper. Это производит вывод по каждой строке.Python Преобразование вывода в предложение

Правильно это другая процедура, определенная перед этим кодом, который корректирует каждое слово

здесь код:

zebra = 'Yout caretak taking care of something' 

count = len(re.findall(r'\w+', zebra)) 

def looper(a,count): 
words = nltk.word_tokenize(zebra) 
for i in range(len(words)): 
    X = correct(words[i]) 
    print (X) 

final = looper(zebra) 

Выход производит:

youth 
caretaker 
walking 
car 
in 
something 

Как следует принять все отдельные выходы и сделать предложение:

Ожидаемое Resu lt:

youth caretaker walking car in something 

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Заранее спасибо

ответ

1

список использования понимание:

print " ".join([ correct(words[i]) for i in range(len(words)) ]) 

это должно быть так:

zebra = 'Yout caretak taking care of something' 

count = len(re.findall(r'\w+', zebra)) 
words = nltk.word_tokenize(zebra) 
def looper(a,count): 
    print " ".join([ correct(words[i]) for i in range(len(words)) ]) 

слово должно быть из этой функции, вам не нужен получать слова каждый раз во время цикла.

вы можете использовать это тоже:

print " ".join([ correct(i) for i in words ]) 

здесь правильный способ сделать это:

zebra = 'Yout caretak taking care of something' 
words = nltk.word_tokenize(zebra) 
print " ".join([ correct(i) for i in words ]) 

вам не нужна функция здесь, как слова в список слов, вы можете перебирать и присоединиться.

в вашем коде:

zebra = 'Yout caretak taking care of something' 
words = nltk.word_tokenize(zebra) 
for x in words: 
    print correct(x), 

демо:

>>> zebra = 'Yout caretak taking care of something' 
>>> words = nltk.word_tokenize(zebra) 
>>> words 
['Yout', 'caretak', 'taking', 'care', 'of', 'something'] 

Как вы можете видеть nltk.word_tokenize дать вам список слов, так что вы можете перемещаться по ним легко,

+0

обеспечить причину для downvoting – Hackaholic

+0

желаемый результат является 'молодежь смотритель пешеходного автомобиля в чем-то не только символизировал ds – alvas

+0

правильно (i) заботится об этом. – Hackaholic

0
zebra = 'Yout caretak taking care of something' 

count = len(re.findall(r'\w+', zebra)) 

def looper(a,count): 
words = nltk.word_tokenize(zebra) 
for i in range(len(words)): 
    X = correct(words[i]) 
    print X,  
final = looper(zebra) 

просто добавьте после X --->print X,

+0

Спасибо, Алекс, но этот метод не сработал, он не дает мне никакого результата – Sanjeev

1
>>> import nltk 
>>> zebra = 'Yout caretak taking care of something' 
>>> for word in nltk.word_tokenize(zebra): 
...  print word 
... 
Yout 
caretak 
taking 
care 
of 
something 

Тогда $ sudo pip install pyenchant (см https://pythonhosted.org/pyenchant/api/enchant.html) и:

>>> import nltk 
>>> import enchant 
>>> zebra = 'Yout caretak taking care of something' 
>>> dictionary = enchant.Dict('en_US') 
>>> for word in nltk.word_tokenize(zebra): 
...  dictionary.suggest(word) 
... 
['Out', 'Yost', 'Rout', 'Tout', 'Lout', 'Gout', 'Pout', 'Bout', 'Y out', 'Your', 'You', 'Youth', 'Yous', 'You t'] 
['caretaker', 'caret', 'Clareta', 'cabaret', 'curettage', 'critical'] 
['raking', 'takings', 'tasking', 'staking', 'tanking', 'talking', 'tacking', 'taring', 'toking', 'laking', 'caking', 'taming', 'making', 'taping', 'baking'] 
['CARE', 'acre', 'acer', 'race', 'Care', 'car', 'are', 'cares', 'scare', 'carer', 'caret', 'carte', 'cared', 'cadre', 'carve'] 
['if', 'pf', 'o', 'f', 'oaf', 'oft', 'off', 'sf', 'on', 'or', 'cf', 'om', 'op', 'oh', 'hf'] 
['somethings', 'some thing', 'some-thing', 'something', 'locksmithing', 'smoothness'] 

Тогда попробуйте:

>>> for word in nltk.word_tokenize(zebra): 
...  print [i for i in dictionary.suggest(word) if word in i] 
... 
['Youth'] 
['caretaker'] 
['takings', 'staking'] 
['cares', 'scare', 'carer', 'caret', 'cared'] 
['oft', 'off'] 
['somethings', 'something'] 

Итак:

>>> " ".join([[word if dictionary.check(word) else i for i in dictionary.suggest(word) if word in i][0] for word in nltk.word_tokenize(zebra)]) 
'Youth caretaker taking care of something' 
Смежные вопросы