我有這張表,我在其中Article_body使用余弦相似度將文章串列 ( ) 與 4 篇基線文章進行比較:
| 文章正文 | 文章分數1 | 文章分數2 | 文章分數3 | 文章分數4 | 文章分數5 |
|---|---|---|---|---|---|
| 一個***** | 0.6 | 0.2 | 0.7 | 0.9 | 0.2 |
| 一個***** | 0.3 | 0.8 | 0.1 | 0.5 | 0.1 |
我想添加一列,給出哪一列在 5 中具有最大的余弦相似度,條件它應該至少為 0.5。如果沒有 CosineSim( i)
| 文章正文 | 文章分數1 | 文章分數2 | 文章分數3 | 文章分數4 | Most_similar_to |
|---|---|---|---|---|---|
| 一個***** | 0.6 | 0.2 | 0.7 | 0.9 | 余弦模擬4 |
| 一個***** | 0.3 | 0.8 | 0.1 | 0.5 | 余弦模擬2 |
| 一個****** | 0.1 | 0.2 | 0.3 | 0.4 | 錯誤的 |
我正在使用這段代碼來實作這一點:
cos_cols = [f"articleScores{i}" for i in range(1, 6)]
def n_lar(text):
if (df[cos_cols].idxmax(axis=1)) <0.5:
return False
else:
df['Max'] = (df[cos_cols].idxmax(axis=1))
df['Most_similar_to'] = df.apply(n_lar)
但是,我收到此錯誤:
TypeError: '<' not supported between instances of 'str' and 'float'
我該如何解決這個問題?
編輯:
我有這張表,我在其中使用余弦相似度將文章串列(Article_body)與 4 篇基線文章進行比較:
我想添加一列,給出哪一列在 5 中具有最大的余弦相似度,條件它應該至少為 0.5。如果沒有一個 CosineSim(i) 至少為 0.5,則回傳 False,如表 2 所示
uj5u.com熱心網友回復:
(df.iloc[:, 1:-1]
.astype('float')
.apply(
lambda x: ('CosineSim' x.idxmax()[-1]) if x.max() >= 0.5 else False
, axis=1)
)
輸出:
0 CosineSim4
1 CosineSim2
2 False
使結果Most_similar_to列
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/528268.html
上一篇:為什么我在代碼末尾不斷出現錯誤?
