Исправить слова и удалить ненужные пробелы между разделенным словом, используя python?

Попробуйте заменить эту строку:

document.cookie = "c_odi" + "=" + $('#orderdetailid').val() + expires + "; path=/";

с этим:

document.cookie = "c_odi" + "=" + escape($('#orderdetailid').val()) + expires + "; path=/";

При попытке прочитать значение вам придется использовать unescape, но вы когда придет время:)

0
задан Akshay 5 March 2019 в 17:04
поделиться

2 ответа

Вам понадобится проверка орфографии, если вы хотите, чтобы слова были написаны и проанализированы правильно. Вот проверка орфографии, используемая для импорта пространства имен re, с полной статьей здесь ...

import re
from collections import Counter

def words(text): return re.findall(r'\w+', text.lower())

WORDS = Counter(words(open('big.txt').read()))

def P(word, N=sum(WORDS.values())): 
    "Probability of `word`."
    return WORDS[word] / N

def correction(word): 
    "Most probable spelling correction for `word`."
    return max(candidates(word), key=P)

def candidates(word): 
    "Generate possible spelling corrections for `word`."
    return (known([word]) or known(edits1(word)) or known(edits2(word)) or [word])

def known(words): 
    "The subset of `words` that appear in the dictionary of WORDS."
    return set(w for w in words if w in WORDS)

def edits1(word):
    "All edits that are one edit away from `word`."
    letters    = 'abcdefghijklmnopqrstuvwxyz'
    splits     = [(word[:i], word[i:])    for i in range(len(word) + 1)]
    deletes    = [L + R[1:]               for L, R in splits if R]
    transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R)>1]
    replaces   = [L + c + R[1:]           for L, R in splits if R for c in letters]
    inserts    = [L + c + R               for L, R in splits for c in letters]
    return set(deletes + transposes + replaces + inserts)

def edits2(word): 
    "All edits that are two edits away from `word`."
    return (e2 for e1 in edits1(word) for e2 in edits1(e1))`

Он не только исправляет разделенные слова, но также удаляет, транспонирует и вставляет неправильные слова, чтобы «исправить» их. Вы можете заменить файл «big.txt» документом, который вы используете в конструкторе Counter, и, надеюсь, все будет работать оттуда.

0
ответ дан Max Voisard 5 March 2019 в 17:04
поделиться

Вот простой скрипт, который работает для вашего примера. Очевидно, вы хотели бы больший корпус правильных слов. Кроме того, вы, вероятно, захотите иметь ветку elif, которая оглянулась бы на предыдущее слово, если присоединение к следующему слову не смогло исправить не-слово.

from string import punctuation

word_list = "big list of words including a programming language is general purpose"
valid_words = set(word_list.split())

bad = "Java is a prog ramming lan guage. C is a gen eral purpose la nguage."
words = bad.split()

out_words = []
i = 0
while i < len(words):
    word = words[i]
    if word not in valid_words and i+1 < len(words):
        next_word = words[i+1]
        joined = word + next_word
        if joined.strip(punctuation) in valid_words:
            word = joined
            i += 1
    out_words.append(word)
    i += 1

good = " ".join(out_words)
print(good)
0
ответ дан Martin Stone 5 March 2019 в 17:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: