使用关键词对列中的文本进行分类

我有一个表格列,包含了解决问题的处理描述,这些文本中包含关键词。

在另一个列表中,我有一系列的分类,每个分类都有不同的关键词来帮助识别它。

例如:


分类 | 关键词

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))

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注