如何通过比较Pandas中的另一列来删除一列中的单词

x0fgdtte  于 2023-10-14  发布在  其他
关注(0)|答案(2)|浏览(121)

我试图通过使用一些机器学习算法自动生成关键字。在这个过程中,在结果中,我还看到一些不需要的关键字也生成了,现在我需要从算法上从输出列中删除不需要的/冗余的单词。[不需要的关键字是什么,但不存在于输入列中,但仍然在输出列中生成的单词]下面是一个例子,我试图通过引用“query_text”列来生成关键字。结果存储在“自动生成的关键字”列中。但是你可以看到,有几个关键字是不必要的提取(“钻石”和“戒指”),我用红色突出显示了相同的(分别在第1行和第3行)。现在在最后一列(更正的关键词)中,我只给出了必要的单词。
我如何通过比较结果(自动生成的关键字)和输入(query_text)在算法上做到这一点。

  1. S.No query_text auto generated keywords corrected keywords
  2. 1 I want ring diamond|ring ring
  3. 2 I want wedding band band|wedding band|wedding
  4. 3 I look for sapphire collection ring|sapphire sapphire
  5. 4 I want diamond earring diamond|earring diamond|earring
  6. 5 I am looking for stackable ring ring|stackable ring|stackable
  7. 6 I need gold bracelet bracelet|gold bracelet|gold
  8. 7 I look for gold ring gold|ring gold|ring
  9. 8 I need sapphire ring ring|sapphire ring|sapphire

带有突出显示的额外单词的数据:

6tr1vspr

6tr1vspr1#

你需要在query/auto generated wordszip)对上使用列表解析,并使用set来进行有效的成员测试:

  1. df['corrected keywords'] = ['|'.join(w for w in l if w in S)
  2. for S, l in zip(df['query_text'].apply(lambda x: set(x.split())),
  3. df['auto generated keywords'].str.split('|'))]

输出量:

  1. S.No query_text auto generated keywords corrected keywords
  2. 0 1 I want ring diamond|ring ring
  3. 1 2 I want wedding band band|wedding band|wedding
  4. 2 3 I look for sapphire collection ring|sapphire sapphire
  5. 3 4 I want diamond earring diamond|earring diamond|earring
  6. 4 5 I am looking for stackable ring ring|stackable ring|stackable
  7. 5 6 I need gold bracelet bracelet|gold bracelet|gold
  8. 6 7 I look for gold ring gold|ring gold|ring
  9. 7 8 I need sapphire ring ring|sapphire ring|sapphire
mm5n2pyu

mm5n2pyu2#

我用了一个不那么优雅的方法来解决这个问题。
我首先清理了每行自动生成的关键字,|和中间的空格,并使用函数将它们转换为列表。

  1. def stripdown(column):
  2. for index in range(1,len(column)+1):
  3. return_list = []
  4. raw_string = column[index]
  5. split_string = raw_string.split('|')
  6. for text in split_string:
  7. return_list.append(text.strip())
  8. column[index] = return_list

然后检查自动生成的关键字中的每个单词是否在query_text中。

  1. for index in range(1,len(new_df['auto generated keywords'])+1):
  2. for item in new_df['auto generated keywords'][index]:
  3. if item not in new_df['query_text'][index]:
  4. new_df['auto generated keywords'][index].remove(item)
  5. else:
  6. continue

这是Result

展开查看全部

相关问题