我如何以编程方式衡量文本的模糊度?

How can I programatically measure the vagueness of text?

我想提供一种服务,可以在其他网站上查找招聘信息并让用户轻松申请这些工作。

我想提供的是一种自动筛选帖子的形式;具体来说,我想添加一个选项来过滤掉含糊语言的帖子,以防用户不想要来自第 3 方招聘人员的招聘信息(因为含糊语言是此类帖子的明显标志)。

是否有一种算法可以用来衡量某些文本的模糊度或清晰度?

我在我的 Careers Stack Overflow 网站上写了类似的东西,尽管与您的要求不完全相同。

有一些短语通常表示招聘广告含糊不清:企业行话。虽然很难确定一个单词或短语是否 实际上 以行话方式使用,但很明显,许多不良帖子有很多匹配 - 他们使用了很多这样的词。

您可以在网站上测试 tool here and there's more explanations

关于代码,它只是一系列静态编译的正则表达式。简单且适合我的需要。

void Main()
{

    string test = "developer-centric vision of insourcing";
    var matches = BadChecks.SelectMany(bad => 
        bad.Matches(test)
           .Cast<Match>()
           .Select(m => m.Value.ToLowerInvariant())
        ).ToList();

    foreach (var res in matches)
        Console.WriteLine(res);

}

private static readonly List<Regex> BadChecks = SetupBadChecks();

private static List < Regex > SetupBadChecks() {
    return new List < string > {
        "(#1|number (one|1))",
        "([a-z]+)-free",
        "(Out|in)sourcing",
        "-centric",
        "a wider net",
        "Aggregator",
        "Alignment",
        "all hands on deck",
        //  more
        "Wellness",
        "Win(-| )win",
        "World(-| )class"
    }.Select(s => new Regex(s, RegexOptions.IgnoreCase |
                               RegexOptions.CultureInvariant |
                               RegexOptions.Compiled))
     .ToList();
}

哪个returns

insourcing
-centric

据我所知,您需要一个分类器将职位描述分为 2 类:“第 3 方”和 "employers themselves"。很经典text classification task, very similar to spam filtering.

与垃圾邮件过滤的主要区别如下:

  1. 类之间的模糊界限:即使是人类也不能经常确定职位描述的来源。
  2. 职位描述的作者几乎没有反对意见。

因此,我建议您使用有监督的机器学习方法来完成您的任务。创建一系列工作描述 - 收集每种类型的 100-200 个并不难,我想这就足够了。然后尝试 ML 分类器,如随机森林、逻辑回归或具有词袋等简单特征的朴素贝叶斯;上传职位描述的人的姓名;文本的长度;也尝试一些二进制特征,例如存在像@Sklivvz 推荐的特殊词。

例如看Naive Bayes spam filtering

您的 类("vague text" 和 "clear text")似乎对于创建有效的分类器而言过于模糊。另外,你认为这个分类等同于我上面制定的分类(这是你真正需要的)的假设看起来并不可靠。