Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试使用for循环比较文本时出现TypeError_Python_Scikit Learn_Nlp_Similarity - Fatal编程技术网

Python 尝试使用for循环比较文本时出现TypeError

Python 尝试使用for循环比较文本时出现TypeError,python,scikit-learn,nlp,similarity,Python,Scikit Learn,Nlp,Similarity,我试着比较不同网站上的文字。 我有一个从数据框中的列中获取的文本列表。为了比较这个列表中的文本,我尝试了使用相似性(我不知道是否有其他方法可以做到同样)。 代码如下: from difflib import SequenceMatcher titles = filtered_dataset['Titles'].tolist() def similar(a, b): return SequenceMatcher(None, a, b).ratio() def get_jaccard_

我试着比较不同网站上的文字。 我有一个从数据框中的列中获取的文本列表。为了比较这个列表中的文本,我尝试了使用相似性(我不知道是否有其他方法可以做到同样)。 代码如下:

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)

你能帮我修复错误以比较文本吗?

好吧,你在连接字符串和整数,这就是为什么它会出现错误。这里的标题是字符串,1是一个整数,您可以在代码下面使用它来避免错误

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

您可以添加title(String)和1(int),但在python中,如果要将字符串添加到整数中,则无法添加字符串和整数。请将该整数更改为字符串。例如:“sampleString”+str(1)=“sampleString”,str()函数将1更改为“1”。这里的type(“sampleString”)是string,type(str(1))是string。因此,您可以将两个字符串添加到一起

使用此代码

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

谢谢。

对不起,但不幸的是,我认为比较可能有问题。我想比较的是“标题”列表中的字符串“标题”与该列表中的每个项目。我认为title+str(1)不能做同样的事情,但也许我说的是错的。你能确认一下吗?毫无疑问,使用str(1)修复了错误,但不允许我比较文本。我不知道这是否是另一个问题。如果我需要开一家新的,请告诉我。谢谢@Nuwan Madushanka