首先,我想指定可用的数据以及需要实现的目标:我有大量的空缺(以百万计)。每个职位的职位名称和职位描述信息都单独存储。我还有一份职业列表(大约 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 中,并将新的职位空缺与整个文件进行匹配(而不仅仅是职位名称)。这将扩大单词权重向量的大小,但会变得不那么稀疏。你觉得这合乎逻辑吗?