0

我有一个带有错误拼写介词的句子列表。我有一个拼写正确的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 包含诸如['he was nr the喷泉',...更多]之类的句子。请帮助..我的语法是错误的..

4

1 回答 1

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)为当前单词创建 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]
于 2014-02-08T10:08:08.073 回答