从 TFIDF 矩阵 (pandas) 逐句检索每个单词的匹配 TFIDF

Retrieve the matching TFIDF of each words by sentence from a TFIDF matrix (pandas)

我的第一个数据框包含我标记化的句子,第二个是每个句子中每个单词的所有 TFIDF 的矩阵。

我正在尝试创建一个新列,其中仅存储句子中单词的 TFIDF。我该怎么做?

标记句子 table

Index Tokenized_string
1 [word1,word2,word3]
2 [word1,word3,word4]

Tfidf Table

Index Word1 Word2 ...
1 0.03 0.06 ...
2 0.5 0.5 ...

我正在尝试创建的 table

Index Tokenized_string TFIDF of each word
1 [word1,word2,word3] [0.03,0.06,0.1]
2 [word1,word3,word4] [0.5,0.4,0.2]

在我的示例中创建数据帧:

import pandas as pd
df = pd.DataFrame({ 'Tokenized_string': 
                   [['word1','word2','word3'],
                    ['word1','word3','word4']]
                   })
    
df_2 = pd.DataFrame({ 'Tokenized_string': 
                   [['word1','word2','word3'],
                    ['word1','word3','word4']],
                   'TFIDF of each word':
                       [[0.03,0.06,0.1],
                        [0.5,0.4,0.2]]})

您可以通过以下方式做到这一点。

下面以tfidf_df为例

tfidf_df = pd.DataFrame({
    'Word1': [0.03, 0.5],
    'Word2': [0.06, 0.5],
    'Word3': [0.04, 0.5]
                   })

请注意,您可能需要根据您的命名方案更改 tfidf_df 变量

tfidf_df['TFIDF of each word'] = tfidf_df[sorted(tfidf_df.columns)].values.tolist()
df_2 = pd.concat([df, tfidf_df["TFIDF of each word"]], axis=1)

print(df_2)
        Tokenized_string  TFIDF of each word
0  [word1, word2, word3]  [0.03, 0.06, 0.04]
1  [word1, word3, word4]     [0.5, 0.5, 0.5]