TypeError пытается сравнить тексты, используя цикл for - PullRequest
2 голосов
/ 03 мая 2020

Я пытаюсь сравнить тексты с разных сайтов друг с другом. У меня есть список текста, полученный из столбца в кадре данных. Чтобы сравнить тексты в этом списке, я попытался использовать сходство (я не знаю, есть ли другой способ сделать то же самое). Это код:

from difflib import SequenceMatcher

titles = filtered_dataset['Titles'].tolist()

def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()

def get_jaccard_sim(str1, str2): 
    a = set(str1.split()) 
    b = set(str2.split())
    c = a.intersection(b)
    return float(len(c)) / (len(a) + len(b) - len(c))

similarities=[]
j_similarities=[]
for title in titles:
    similarity=similar(title, title+1)
    jacc_similarity=get_jaccard_sim(title,  title+1) # I would like to compare the first text to the others; then the second one, and so on... 

Я получил следующую ошибку:

TypeError: can only concatenate str (not "int") to str

из-за

similarity=similar(title, title+1)
jacc_similarity=get_jaccard_sim(title,  title+1)

Не могли бы вы помочь мне исправить ошибку сравнить тексты?

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Вы добавляете title ( String ) и 1 ( int ), но в python вы не можете добавить строку и integer , если вы хотите добавить строку к целому числу, измените это число на строку. например: "sampleString" + str (1) = "sampleString1", str () меняет значение 1 на '1' . поэтому здесь type ("sampleString") - это строка, а type (str (1)) - это строка. так что вы можете добавить обе строки вместе.

используйте этот код

similarity=similar(title, title+str(1))
jacc_similarity=get_jaccard_sim(title,  title+str(1))

спасибо.

1 голос
/ 03 мая 2020

хорошо, вы объединяете строку и целое число, поэтому ошибка Здесь заголовок - String, а 1 - целое число, которое вы можете использовать под кодом, чтобы избежать ошибки

similarity=similar(title, title+str(1))
jacc_similarity=get_jaccard_sim(title,  title+str(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...