我有一个表格列,包含了解决问题的处理描述,这些文本中包含关键词。
在另一个列表中,我有一系列的分类,每个分类都有不同的关键词来帮助识别它。
例如:
分类 | 关键词
AAAA | keyword1
AAAA | keyword2 and keyword3
AAAA | keyword3 and not keyword4
BBBB | keyword4
BBBB | keyword5 and keyword6
BBBB | keyword7
如何使用这些关键词来填充我之前那个包含描述的表格中的分类列呢?
例如:
描述 | 分类
这个自由文本包含keyword1已完成 | AAAA
自由样本2包含keyword4和keyword3 | BBBB
我使用的编程语言是Python,
我找到一个类似的案例,但使用的是Excel:https://exceljet.net/formula/categorize-text-with-keywords
此致敬礼
回答:
我建议首先创建一个元组列表,其中第一个元素是分类,第二个元素是一个字典,包含应包含/排除在描述中的关键词列表。例如
keyword_tuple = [('AAAA', {'in': ['kwrd1'], 'out':[]}), ('AAAA', {'in': ['kwrd2', 'kwrd3'], 'out': []}), ('AAAA', {'in': ['kwrd3'], 'out': ['kwrd4']}), ('BBBB', {'in': ['kwrd4'], 'out': []})]
在正确初始化keyword_tuple
后,您可以遍历描述列表,以确定它们属于哪个分类。让我们将结果存储在一个名为result_tuple
的元组列表中,其中第一个元素是描述,第二个元素是相应的分类。
result_tuple = []for description in description_list: # 查找满足包含条件的分类 categories_in = [cat[0] for cat in keyword_tuple if all([kw in description for kw in cat[1]['in']])] # 查找满足排除条件的分类 categories_out = [cat[0] for cat in keyword_tuple if all([kw not in description for kw in cat[1]['out']])] # 查找同时满足两者的分类 # 如果有多个分类满足条件,您需要制定一个决策规则 categories = list(set(categories_in).intersection(categories_out)) # 追加到结果列表中(取第一个满足的分类) if len(categories) > 0: category = categories[0] else: category = 'NO CATEGORY' result_tuple.append((description, category))