2016-10-25 2 views
0

Я написал следующий код для проверки орфографии, используя двоичный поиск в python, и он работает правильно, но выход является обратным .. например, я написал «hwllo world», а выход был всемирно приветствующим в то время как это должно быть «привет мир»ошибка python в проверке орфографии с использованием двоичного поиска

мой код выглядит следующим образом:

import difflib 
    #L=[] 
    ch=[] 
    def binarySearch(alist, item): 
      first = 0 
      last = len(alist) - 1 
      while first <= last: 
       midpoint = (first + last) // 2 
       if alist[midpoint] == item: 
        return True 
       else: 
        if item < alist[midpoint]: 
        last = midpoint - 1 
       else: 
        first = midpoint + 1 
      return False 

    f = open('wordlist.txt', 'r').read().splitlines() 
    v=str(input("enter your sentence : ")).split() 


    for i in range(len(v)): 
     if binarySearch(f, v[i]) == True: 
      ch.append(v[i]) 


     elif binarySearch(f, v[i]) == False: 
      sugg = [] 
      for word in f: 
      if difflib.SequenceMatcher(None, v[i], word).ratio() >= 0.8: 
       sugg.append(word) 
      print(sugg) 

    for j in range (len(sugg)): 
      print("if you mean ",(sugg[j]),"press",(j)) 

    x=int(input()) 
    ch.append(sugg[x]) 

    print (' '.join(ch)) 

ответ

0

Это проблематично, потому что вы добавляете все предложения в конце, а не как вы найти слова с орфографическими ошибками.

Вместо:

for i in range(len(v)): 
    if binarySearch(f, v[i]) == True: 
     ch.append(v[i]) 
    elif binarySearch(f, v[i]) == False: 
     sugg = [] 
     for word in f: 
     if difflib.SequenceMatcher(None, v[i], word).ratio() >= 0.8: 
      sugg.append(word) 
     print(sugg) 

for j in range (len(sugg)): 
     print("if you mean ",(sugg[j]),"press",(j)) 

x=int(input()) 
ch.append(sugg[x]) 

Try:

for i in range(len(v)): 
    if binarySearch(f, v[i]): 
     ch.append(v[i]) 
    elif not binarySearch(f, v[i]): 
     sugg = [] 
     for word in f: 
     if difflib.SequenceMatcher(None, v[i], word).ratio() >= 0.8: 
      sugg.append(word) 
     print(sugg) 

     for j in range (len(sugg)): 
      print("if you mean ",(sugg[j]),"press",(j)) 

     x=int(input()) 
     ch.append(sugg[x]) 
Смежные вопросы