1

Я использовал материал от here и на предыдущей странице форума, чтобы написать код для программы, который будет автоматически вычислять семантическое сходство между последовательными предложениями по всему тексту. Вот;Семантическое сходство между предложениями в тексте

Код для первой части - это копия, вставленная с первой ссылки, после чего у меня есть этот материал, ниже которого я вставляю после строки 245. Я удалил весь избыток после строки 245.

with open ("File_Name", "r") as sentence_file: 
    while x and y: 
     x = sentence_file.readline() 
     y = sentence_file.readline() 
     similarity(x, y, true)   
#boolean set to false or true 
     x = y 
     y = sentence_file.readline() 

Мой текстовый файл отформатирован следующим образом;

Красный алкогольный напиток. Свежий апельсиновый сок. Английский словарь. Желтые обои .

В конце концов, я хочу показать все пары последовательных предложений с похожим рядом с ним сходством;

["Red alcoholic drink.", "Fresh orange juice.", 0.611], 

["Fresh orange juice.", "An English dictionary.", 0.0] 

["An English dictionary.", "The Yellow Wallpaper.", 0.5] 

if norm(vec_1) > 0 and if norm(vec_2) > 0: 
    return np.dot(vec_1, vec_2.T)/(np.linalg.norm(vec_1)* np.linalg.norm(vec_2)) 
elif norm(vec_1) < 0 and if norm(vec_2) < 0: 
    ???Move On??? 
+0

'dict.has_key' устарел почти на десять лет, сейчас: https://docs.python.org/3.0/whatsnew/3.0.html#builtins –

+0

Извините, это единственная проблема, и если да, то как можно Я чиню это? Наверное, глупо. но я действительно новичок в Python. –

+0

В моем предыдущем комментарии содержалась ссылка. Нажмите на ссылку. Посмотрите на страницу, содержащуюся в ней. Прочтите маркер о 'dict.has_key()'. –

ответ

0

Это должно сработать. В комментариях есть несколько замечаний. В принципе, вы можете прокручивать строки в файле и сохранять результаты по мере их поступления. Один из способов обработки двух строк за раз - это создать «бесконечный цикл» и проверить последнюю прочитанную строку, чтобы увидеть, удалили ли мы ее в конец (readline() вернет None в конце файла).

# You'll probably need the file extention (.txt or whatever) in open as well 
with open ("File_Name.txt", "r") as sentence_file: 
    # Initialize a list to hold the results 
    results = [] 

    # Loop until we hit the end of the file 
    while True: 
     # Read two lines 
     x = sentence_file.readline() 
     y = sentence_file.readline() 

     # Check if we've reached the end of the file, if so, we're done 
     if not y: 
      # Break out of the infinite loop 
      break 
     else: 
      # The .rstrip('\n') removes the newline character from each line 
      x = x.rstrip('\n') 
      y = y.rstrip('\n') 

      try: 
       # Calculate your similarity value 
       similarity_value = similarity(x, y, True) 

       # Add the two lines and similarity value to the results list 
       results.append([x, y, similarity_value]) 
      except: 
       print("Error when parsing lines:\n{}\n{}\n".format(x, y)) 

# Loop through the pairs in the results list and print them 
for pair in results: 
    print(pair) 

Edit: В отношении вопросов, вы получаете от similarity(), если вы хотите, чтобы просто игнорировать пары строк, которые вызывают эти ошибки (не глядя на источник в глубине, я действительно не имеют ни малейшего представления о том, что происходит), вы можете добавить try, catch вокруг звонка similarity().

+0

Здравствуйте, я добавил код, но я получил эти ошибки (написано в вопросе) –