提出了用于文本标记的nlp算法

时间:2014-06-19 19:29:16

标签: php algorithm nlp data-mining stanford-nlp

我一直在寻找开源工具,它可以帮助识别社交媒体上任何用户帖子的tags,并识别该帖子上的主题/偏离主题或垃圾评论。即使在寻找一整天之后,我也找不到合适的工具/库。

在这里,我提出了自己的算法,用于标记属于7个类别(工作,讨论,事件,文章,服务,买/卖,人才)的用户帖子。

最初,当用户发帖时,他会标记他的帖子。标签可以像marketing, suggestion, entrepreneurship, MNC etc。所以考虑一些帖子我有标签以及它们属于哪个类别。

步骤:

  1. 在用户帖子上执行POS(词性)标记。 这里可以做两件事。

    • 仅考虑名词。名词可能代表更多的帖子 直觉上我猜

    • 考虑名词和形容词。在这里我们可以收集大量 名词和形容词的数量。可以使用这些单词的频率 识别该帖子的标签。

  2. 对于每个用户定义的标签,我们将为属于特定标签的帖子收集POS。例。考虑用户指定的代码marketing,此代码的帖子包含POS字SEOadwords。假设marketing标签的10个帖子分别包含SEO and adwords 5次和7次。因此,下次用户发帖时没有任何标签但包含POS字SEOSEO在营销代码中的最长时间7,因此我们会预测此帖子的marketing代码

  3. NExt步骤用于识别POST的垃圾邮件或非主题评论。 考虑Job类别的一个用户帖子。此帖子包含标记marketing。现在我将在数据库中检查TOP最常见的10-15个词性标签(即名词和形容词)进行营销。

    并行我有该评论的POS标记。我将检查这篇文章的POS(名词& adj)是否包含属于marketing的最频繁的标签(我们可以考虑15-20个这样的POS标签)。

  4. 如果评论中的POS与任何最常见的顶级POS营销不匹配,那么该评论可以说是主题/跨度

    您是否有任何建议让这个更加直观?

    我猜SVM可以帮助分类,对此有何建议?

    除了这种WhIch机器学习技术可以帮助在这里学习系统来预测标签和垃圾邮件(非主题)评论

3 个答案:

答案 0 :(得分:1)

任何线性分类器都适用于文本分类。根据我的经验,Logistic回归或SVM适用于文本分类。

您也可以尝试Naive Bayes Multinomial分类器。这与几个垃圾邮件分类器上的垃圾邮件分类一起使用。

答案 1 :(得分:1)

我看到的主要问题是您的功能建模。虽然只挑选名词有助于减少特征空间,但这是一个额外的步骤,可能会有很大的错误率。你真的关心你是在看market/N而不是market/V吗?

使用朴素贝叶斯分类器的大多数主线文本分类实现只是忽略POS,并简单地将每个不同的单词形式计为一个独立的特征。 (你也可以进行暴力破解,将marketmarketsmarketing缩减为单一的词干形式,从而形成一个单一的特征。这往往适用于英语,但可能不会如果你实际上使用不同的语言,那就非常充足。)

妥协可能是在训练分类器时进行POS过滤。然后,没有名词阅读的单词形式在分类器中以零分数结束,因此当您使用结果分类器时,您不必做任何事情来过滤它们。

根据经验,SVM倾向于实现高精度,但它在实现和行为方面都以复杂性为代价。一个天真的贝叶斯分类器具有明显的优势,你可以准确地理解它是如何得出一个特定的结论。 (好吧,我们大多数人都不能声称对SVM背后的数学有同样的把握。)也许一个好的方法是用贝叶斯原型,并在学习整个系统的行为时解决任何问题,然后也许以后考虑在其他部分稳定后切换到SVM?

“垃圾邮件”类别将比任何明确定义的内容类别更难。建议任何不符合您的任何内容类别的内容都是偏离主题的,但如果您打算使用该判决进行自动垃圾邮件过滤,这很可能会导致一些误报,至少在早期阶段。一种可能的替代方案可能是为特定的垃圾邮件类别训练分类器 - 一种用于药物,另一种用于跑鞋等。

答案 2 :(得分:1)

看看这个有关POS标记的信息。 http://nlp.stanford.edu/software/tagger.shtml

更多地关注数据收集(标记数据),然后使用它来构建符合您要求的任何分类器,线性,贝叶斯,SVM(表现最佳)

另外,看看你是否可以进行多类预测(即创建两个或更多类的组合的新类),或者尝试找出每个类中字符串序列的概率。

希望这有帮助