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

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

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

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

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

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

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

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


回答:

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

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

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中创建了一个多类分类项目。该项目可以对…

发表回复

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