我想提供一种服务,可以在其他网站上找到工作岗位,让用户可以毫无痛苦地申请这些工作。
我想提供的是一种自动筛选发布信息的方式;具体来说,我想添加一个选项,在用户不希望第三方招聘人员发布招聘信息的情况下,使用模糊语言过滤掉招聘信息(因为模糊语言是这类帖子的明证)。
是否有一种算法,我可以用它来衡量某些文本的模糊性或清晰度?
发布于 2015-03-11 16:12:15
据我所知,你需要一个分类器的职务说明分为两个类别:“第三方”和“雇主自己”。这是一个经典的文本分类任务,非常类似于垃圾邮件过滤。
与垃圾邮件过滤的主要区别如下:
因此,我建议在您的任务中使用监督机器学习方法。创建一套工作描述--收集每种类型的100到200份并不难,我想这就足够了。然后尝试一些ML分类器,如随机森林、Logistic回归或朴素贝叶斯,包括简单的特征,比如单词袋;上传职务描述的人的姓名;文本的长度;还可以尝试一些二进制特征,如@Sklivvz♦推荐的特殊单词的存在。
例如,看看朴素贝叶斯垃圾邮件过滤。
您的类(“模糊文本”和“明文”)似乎过于模糊,无法创建有效的分类器。此外,您的假设是,这个分类相当于我上面所描述的分类(这是您真正需要的),这看起来并不可靠。
发布于 2015-03-11 10:50:33
我在我的职业生涯堆栈溢出网站上写了一些类似的东西,尽管不是你要求的那样。
有一些短语通常表示一个模糊的招聘广告:公司行话。虽然很难确定单个单词或短语是否真的以行话的方式使用,但很明显,许多糟糕的帖子都有许多匹配词--它们使用了许多这样的词。
您可以在这里测试工具,站点上还有更多的解释。
对于代码,它只是一系列静态编译的正则表达式。简单又能满足我的需要。
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();
}
回传
内包 -centric
https://stackoverflow.com/questions/28974849
复制相似问题