基于规则的Pandas串NLP抽取

qxgroojn  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个静坐,我正在执行一个关键字提取,并建立一个类别的顶部,这是工作正常,因为我能够做一个单一的关键字str.contains。但如果我想使用一个关键字字符串,并建立多个子类别的顶部。例如,从列文本我想提取目标子类别的基础上定义的规则如下:

Text                                         Target Sub Category
invoice received payment sent data csv       Invoice & Payment and Data Request

规则

子类别的第一部分,即"Invoice & Payment",是从像"invoice" & "payment"这样的关键字导出的,并且子类别的第二部分,即"Data & Information",是从像"data" and "csv"这样的关键字导出的。
我怎样才能建立这样的东西呢?关键词可以有任何顺序,所以本质上智能搜索必须建立起来,有很多不同的关键词,我想建立这个子类别,我可以在这里建立任何方向感吗?

wooyq4lh

wooyq4lh1#

这个解决方案使用了一个最残酷的循环,并使用一个dict将每个类别名称Map到该类别的一组关键字。

import pandas as pd

df = pd.DataFrame({'Text': ['invoice received payment sent data csv', 'data is portrayed by brent spiner']})

category_keywords = {'Invoice & Payment': {'invoice', 'payment'}, 'Data Request': {'data', 'csv'}}

df['Target Sub Category'] = [{cat for word in text.split()
                                  for cat,keywords in category_keywords.items()
                                  if word.lower() in keywords
                             } for text in df['Text']]

print(df)
#                                      Text                Target Sub Category
# 0  invoice received payment sent data csv  {Data Request, Invoice & Payment}
# 1       data is portrayed by brent spiner                     {Data Request}

相关问题