查找文本的相关性,基于词汇/短语的白名单和黑名单

这是我想在网上搜索某些内容但不知道其名称的情况。

我有一组保存在文本文件中的工作描述,有些只有一两句话,大多数是一两段。我想编写一个脚本,根据一套规则,当它找到我想要的工作描述时通知我。

例如,假设我在寻找PHP编程的工作,但不想要全职职位,也不想要设计职位。所以我的“规则手册”可能是这样的:

want: PHPwant: web programmingwant: telecommutingdo not want: designingdo not want: full-time position

我可以使用什么方法将这些文件分类为“通过”(符合我寻找的描述)和“失败”(描述不相关)?我考虑了一些想法:

  • 计算文本文件中与我的“规则手册”中相同的短语的出现次数,并拒绝那些包含我不想要的词的文件。然而,这并不总是有效,因为如果一个描述说“网页设计不被要求”,那么我的算法会说“它包含了designing这个词,所以它不相关”,但实际上它是相关的!
  • 在搜索我想要和不想要的短语时,将Levenshtein距离内的短语视为相同的短语。例如,designingdesign应该被视为相同的方式,还有单词的拼写错误,如programing
  • 我有一大组我已经手动查看过的描述。有什么方法可以“教”程序“这些是好的描述的例子,这些是坏的描述的例子”吗?

有人知道这个“过滤过程”被称为什么吗,和/或有任何建议或方法可以帮助我实现这个吗?


回答:

你基本上有一个文本分类文档分类的问题。这是二元分类的一个具体案例,而二元分类本身是监督学习的一个具体案例。这是一个研究得很透彻的问题,有许多工具可以做到。你给一组好的文档和坏的文档给学习或训练过程,它会找到与正面和负面文档强烈相关的词,并输出一个能够将未见过的文档分类为正面或负面的函数。朴素贝叶斯是这种任务最简单的学习算法,它会做得相当不错。还有更复杂的算法,如逻辑回归和支持向量机,它们可能会做得更好,但它们更复杂。

为了确定哪些变体词实际上是等价的,你需要进行某种词干提取。Porter词干提取器在这里是一个常见的选择。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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