用相同的soundex替换单词

时间:2014-02-08 09:57:57

标签: python regex soundex

我有一个错误拼写介词的句子列表。我有一个拼写正确的preps列表:

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

我需要从我的数据中计算单词的soundex,如果soundex匹配则用我的引用词替换它。继承我的代码:

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包含的句子像['他是喷泉',......还有更多]。请帮忙..我的语法错了..

1 个答案:

答案 0 :(得分: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值),该值是原始单词。这使我们可以轻松查找给定soundex的参考单词。

dict.get()可让您在字典中查找密钥,如果存在,则返回默认值。 soundex_to_ref.get(jellyfish.soundex(w), w)为当前单词w创建soundex,查找参考单词,如果词典中不存在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]