0

前置詞のスペルが間違っている文のリストがあります。私は正しい綴りの準備のリストを持っています:

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には、[「彼は噴水ではありませんでした」、...その他多数]のような文が含まれています。助けてください..私の構文が間違っています..

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次を使用して、1 つの式で再構築できます。

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 に答える