基于大型字符串字典的Python文本分类

我有一个数据集,相当于一个包含500万个键值对的字典,键和值都是字符串。
每个键都是唯一的,但只有几百种不同的值。

键不是自然语言的词汇,而是技术参考。值是“家族”,用于分组相似的技术参考。这里的“相似”是指“具有相似的正则表达式”、“包含相似的字符”或某种模式。

键值对的示例:

ADSF33344 : G1112AWDX45603 : G1112D99991111222 : X3334E98881188393 : X3334A30-00005-01 : B0007B45-00234-07A : B0007F50-01120-06 : B0007

最终目标是向算法提供一组新的参考(之前从未见过),算法将为每个参考返回一个建议的家族,理想情况下,还会附带一个基于数据集学习结果的置信度百分比。
建议的家族只能来自数据集中已有的家族,不需要“发明”新的家族名称。

我不熟悉机器学习,所以不知道从哪里开始。我看到了一些通过Sklearn或TextBlob的解决方案,我明白我需要的是一个分类算法,但每个教程都倾向于分析大型文本。
不知何故,我找不到如何处理我的问题,尽管它似乎比分析自然语言的新闻文章要“简单”…

你能为我推荐一些来源或教程吗?


回答:

制作一个训练数据集,并训练一个分类器。大多数分类器基于你自己定义的一组特征的值来工作。(特征的类型取决于分类器;在某些情况下它们是数值量,在其他情况下是真/假,还有一些可以取几个离散值。)你提供特征,分类器决定每个特征的重要性,以及如何解释它们的组合。

作为教程,你可以查看NLTK书的第6章。示例任务,将名字分类为男性和女性,在结构上与你的非常接近:基于短字符串(名字)的形式,将它们分类到类别(性别)中。

你将每个零件号转换成一个特征字典。由于你没有向我们展示真实数据,没有人能给你具体的建议,但你绝对应该像书中那样制作通用特征,此外,你还应该将你知道的每一个线索,无论强弱,都转化为特征。如果供应商ID的长度不同,就制作一个长度特征。如果连字符的存在(或数量或位置)是一个线索,就将其转化为特征。如果某些供应商的零件使用了大量的零,也同样处理。然后为其他任何可能有用的东西制作额外的特征,例如“前三个字母”。一旦你有一个工作系统,就可以尝试不同的特征集和不同的分类器引擎和算法,直到获得可接受的性能。

为了在新数据上获得良好的结果,别忘了将你的训练数据分成训练、测试和评估子集。你可以将所有这些与任何分类器一起使用,但NLTK的Naive Bayes分类器训练速度相当快,所以你可以从那里开始。(注意,特征可以是离散值,例如first_letter可以是实际的字母;你不需要坚持使用布尔特征。)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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