Python 参数';字符串';具有不正确的类型(应为str、get list)Spacy NLP

Python 参数';字符串';具有不正确的类型(应为str、get list)Spacy NLP,python,list,nlp,Python,List,Nlp,我想计算余弦相似性,但在将dataframe列转换为其列表后收到一条错误消息:参数“string”的类型不正确(应为str,Get list) 非常感谢有人帮我修复它,谢谢。让函数在整个pd.Series中运行的方法是使用.apply()。您可以链接.apply()调用 例如: # changing to strings instead of nested list l = ['24, Single, Consultant, Canada, I am interested in visiting

我想计算余弦相似性,但在将dataframe列转换为其列表后收到一条错误消息:参数“string”的类型不正确(应为str,Get list)


非常感谢有人帮我修复它,谢谢。

让函数在整个
pd.Series
中运行的方法是使用
.apply()
。您可以链接
.apply()
调用

例如:

# changing to strings instead of nested list
l = ['24, Single, Consultant, Canada, I am interested in visiting Isreal again', 
     '18, Single, Student, I want to go back Costa Rica again', 
     '45,Married, Unemployed, I want to take my family to Florida for the summer vacation']

# remove stop words and punctuation for later similarity calculations
df_spacy = df['Free Text'].apply(nlp)\
                          .apply(lambda doc: nlp(' '.join(str(t) 
                                                 for t in doc 
                                                 if not t.is_stop 
                                                 and not t.is_punct)))
编辑:根据您的评论,以下是每行与所有其他行之间的相似度计算:

df_spacy.apply(lambda row: df_spacy\
        .apply(lambda doc: row.similarity(doc) if row != doc else None))
结果相似性矩阵:

          0         1         2
0       NaN  0.776098  0.716560
1  0.776098       NaN  0.705024
2  0.716560  0.705024       NaN

谢谢你的回答。我想得到一份包含三个要素的清单:['24,单身,顾问,加拿大,我有兴趣再次访问以色列,'18,单身,学生,我想再次回到哥斯达黎加,'45,已婚,失业,我想带家人去佛罗里达度暑假'],然后我可以应用相似性()来比较这三个要素。我能做吗?谢谢你看到更新的答案。我相信您希望将每一行的
相似性()
计算应用于所有其他行。非常好。我还有一个问题。如果我有第二列,但我想应用相同的功能:1)删除停止字和标点符号,2)每个列的相似性(比较自己列中的行),然后将它们保存在相同的位置。谢谢,我很抱歉,我不能完全理解你在这个额外的问题中提出的问题。不用担心,最好打开另一个论坛进行讨论。非常感谢。它对我非常有效。
          0         1         2
0       NaN  0.776098  0.716560
1  0.776098       NaN  0.705024
2  0.716560  0.705024       NaN