我有以下项目,我需要在这些项目中标记与这些新闻项目相关的公司名称的新闻项目(公司名称在新闻项目中提及,在很多情况下,在新闻项目的标题中)。
例如:我有大约2000个新闻项目(XML格式),标有公司名称及其与故事的相关程度(高/低)[这是手动完成的]。对于每个新闻项目,我都有以下字段:
story_ID,标题; story_Text;公司名; relevance_level(H / L)
最后两个字段是手动输入的。
我需要自动执行此标记程序,我需要使用公司名称及其与High(H)/ Low(L)的相关性标记传入的新闻项目。
注意:
某些新闻项目与任何公司无关,因此未标记。
部分新闻项目与多家公司相关,因此这些新闻项目标有多个公司名称及相应的相关级别。
我想知道我们可以使用哪种机器学习算法。我是自然语言处理的新手。所以我无法掌握如何解决问题。我知道我需要使用多标签/多类别分类,但我从来没有使用过多标签分类。
非常感谢任何帮助。
谢谢。
答案 0 :(得分:2)
<强> 1。单词矢量
对您而言,最好的方法可能是矢量空间技术。基本上,这是:
- 建立文档中25,000个最常用单词的列表;把它们放在一个固定的顺序(例如0 =&#34;&#34;,1 =&#34; cat&#34;,......)
- 为每个文档制作一个长度为25,000的向量。每个条目都是该单词出现在文档中的次数。 (使用稀疏矢量表示来提高效率)
- 获取文档向量之间的余弦距离。如果距离很小,他们会讨论相同的领域。如果新文档在标记的训练示例的某个阈值内,请将其标记为。
这里有一个简短的讨论: http://en.wikipedia.org/wiki/Vector_space_model
这里有一个演示文稿(幻灯片上的#34;分布式单词表示&#34;): http://web.stanford.edu/class/cs224u/
<强> 2。命名实体识别
最细粒度的自然语言处理方法称为命名实体识别;这里有一个版本:
http://nlp.stanford.edu/software/CRF-NER.shtml
该算法将单词标记为特定实体(即Apple计算机)。您可以运行这样的算法并检查您的公司是否被提及。 NER算法将在一篇关于一个完全不同的主题的文章中擅长识别苹果计算机的提及(这对于上面的向量空间技术来说很难,它将文档作为一个整体来看)。但听起来你并不需要这种级别的粒度,所以第一种方法可能是最好的。
答案 1 :(得分:-1)
我写了一篇博客来分享Best Key Phrase Extraction APIs in the Market的列表。您可以找到商业API,开源API和现场演示。