2014-02-08 6 views
0

У меня есть список предложений с неправильно написанными предлогами. У меня есть список правильно прописано Preps:Замена слова тем же самым звуком

ref_data = ['near','opposite','off','towards','behind','ahead','below','above','under','over','in','inside','outside'] 

мне нужно вычислить Soundex слов из моих данных и заменить его с моим опорным словом, если Саундэкс соответствует .. Heres мой код:

for line in text1: 
for word in line.split(): 
    if jellyfish.soundex(word)==jellyfish.soundex([words,int in enumerate(ref_data)]) 
     word = #replace code here 

Я действительно смущен. Text1 содержит предложения, такие как ['он был nr фонтан', ... еще много]. пожалуйста, помогите .. мой синтаксис неправильно ..

+1

Theres ошибку в 3-й линии тоже .. –

ответ

1

Я хотел бы использовать:

# mapping from soundex to correct word 
soundex_to_ref = {jellyfish.soundex(w): w for w in ref_data} 

for line in text1: 
    words = [soundex_to_ref.get(jellyfish.soundex(w), w) for w in line.split()] 

Это создает список слов для каждой строки, со всеми словами, которые соответствуют правильно написанное слово от Soundex заменяется на правильно написанное слово.

Синтаксис [... for .. in ...] - это список, он создает новое значение для каждого элемента в цикле for. Итак, для каждого слова в line.split() мы производим вывод выражения soundex_to_ref.get(jellyfish.soundex(w), w) в выходном списке.

Объект soundex_to_ref - словарь, созданный в списке ref_data; для каждого слова в этом списке словарь имеет ключ (значение soundex для этого слова), а значение - это исходное слово. Это позволяет легко искать ссылки для заданного звука.

dict.get() позволяет вам искать ключ в словаре, а если это не настоящее время, возвращается значение по умолчанию. soundex_to_ref.get(jellyfish.soundex(w), w) создает soundex для текущего слова w, ищет справочное слово, и если soundex нет в словаре, исходное слово заменяется.

Вы можете присоединиться к words список обратно в предложение с помощью:

line = ' '.join(words) 

Вы можете восстановить text1 в одном выражении с:

text1 = [' '.join([soundex_to_ref.get(jellyfish.soundex(w), w) for w in line.split()]) 
     for line in text1] 
+0

привет , спасибо .. но я не могу увидеть какие-либо изменения в тексте1 после выполнения вышеуказанного кода .. :(любая идея? –

+0

@Sword: читайте дальше, ответ на это в конце. В вашем вопросе никогда ничего не говорилось об изменении ' текст1' сам, кстати. –

+0

ohh извините, мой плохой ... спасибо martijn, я действительно помог мне .. –

 Смежные вопросы

  • Нет связанных вопросов^_^