“职称分类”是 NLP 还是机器学习的问题?

人工智能 神经网络 机器学习 自然语言处理
2021-11-08 04:35:32

首先,我想指定可用的数据以及需要实现的目标:我有大量的空缺(以百万计)。每个职位的职位名称职位描述信息都单独存储。我还有一份职业列表(大约 3000 个),职位空缺应映射到该列表。

示例java-developer、java web 工程师和java 软件开发人员都应映射到职业java 工程师

现在谈谈我目前的研究和问题:由于存在大量潜在的训练数据,我认为机器学习方法可能很有用。我一直在阅读不同的算法,并想尝试一下神经网络。

我很快就遇到了这个问题,我找不到令人满意的方法将可变长度的文本转换为恒定大小的数值向量(神经网络需要)。正如这里所讨论的,这似乎是一个不平凡的问题。

我深入挖掘并发现了Bag of Words (BOW) 和 Text Frequency - Inverse Document Frequency (TFIDF),乍一看似乎很合适。但在这里我遇到了其他问题:如果我将所有的职位名称都提供给 TFIDF,那么生成的词权向量可能会非常大(以万分之一计)。另一方面,搜索词主要由 1 到 5 个单词组成(我们目前仅匹配职位名称)。因此,神经网络必须能够可靠地将超稀疏输入向量映射到数千个基本工作之一。这对我来说听起来很困难,我怀疑一个好的分类质量。

BOW 和 TFIDF 的另一个问题是,它们无法处理拼写错误和新词(我猜)。它们无法在 TFIDF 的单词列表中找到,这导致向量中填充了零。总结一下:我最初对使用 TFIDF 感到很兴奋,但现在认为它对于我想做的事情并不适用。

仔细想想,我现在怀疑神经网络或其他机器学习方法是否是这项任务的好解决方案。也许在自然语言处理领域有更好的算法。这一刻(在深入 NLP 之前)我决定先收集一些更有经验的 AI 用户的意见,这样我就不会错过最好的解决方案。

那么在您看来,什么是有用的方法(最好是一种能够处理同义词和拼写错误的方法)?提前致谢!

ps:我目前正在考虑将整个职位描述输入到 TFIDF 中,并将新的职位空缺与整个文件进行匹配(而不仅仅是职位名称)。这将扩大单词权重向量的大小,但会变得不那么稀疏。你觉得这合乎逻辑吗?

4个回答

这个问题有很多部分。

首先,您有一个表示问题:将文本数据呈现给您的机器学习算法的正确方法是什么?

在这种情况下,您选择应用 Bag-of-Words,然后应用 TFIDF 分数。对于英语,这可能会产生大约 100,000 个特征,每个实例只有几个非零特征。

如果你想走这条路,你通常也会做一些特征选择来消除不重要的特征。根据您的任务,您可能能够显着减少输入向量的大小,同时仍然获得良好的性能(对于某些任务,只有 100 个左右)。

没错,这可能不是最有希望的方法。

我对这个问题的选择是使用压缩分类器,比如DMC它们的优点是不需要任何特征选择或预处理,并且可以轻松处理新词或错别字。它们在垃圾邮件分类等任务上提供最先进的性能。

这是人工智能对人力资源影响的巨大增长领域——例如,查看我们发现的所有进行候选人匹配的公司(免责声明我为 CognitionX 工作)。在底层,有些技术不依赖词汇,例如 Facebook 的 FastText,但需要更多的训练数据。

这里有一些其他资源 Job matching using unsupervised learning(k-nearest neighbour) 见论文2018 年 10 月论文节选——使用卷积神经网络

它绝对是基于关键字的 NLP 或 mashine 学习更简单的任务。你对此有一点错误的看法。看你的例子:

示例:java-developer、java web 工程师和java 软件开发人员都应映射到职业java 工程师。 一点也不:j​​ava web和java是不同的工作,而java软件开发人员=java-developer和word software没有任何意义,因为java已经代表软件。无法从工作申请等文本中挖掘信息->您没有链接到标题是什么,最好手动创建映射-它不会那么长。然后,只在文本中查找关键词而忽略其他词

我一直在解决一个类似的职位分类问题,并将这篇论文作为我的方法的基础:https ://web.stanford.edu/~gavish/documents/phrase_based.pdf

可能会觉得有用。