我有以下项目,我需要用与这些新闻项目相关的公司名称来标记新闻项目(新闻项目中提到了公司名称,在许多情况下,新闻项目的标题中提到了公司名称)。
例如:我有大约 2000 条新闻条目(XML 格式),标有公司名称及其与故事的相关级别(高/低)[这是手动完成的]。对于每个新闻项目,我都有以下字段:
story_ID,标题;故事文本;公司名称;相关性级别(H/L)
最后两个字段是手动输入的。
我需要自动化此标记过程,即我需要使用公司名称及其与高(H)/低(L)的相关性来标记传入的新闻项目。
注意:
一些新闻项目与任何公司都无关,因此没有被标记。
一些新闻项目与多个公司相关,因此这些新闻项目被标记为多个公司名称及其相应的相关级别。
我想知道我们可以使用什么机器学习算法。我对自然语言处理非常陌生。所以我无法掌握如何解决问题。我知道我需要使用多标签/多类分类,但我从来没有使用过多标签分类。
任何帮助将不胜感激。
谢谢。
最佳答案
<强>1。单词向量
可能最适合您的方法是向量空间技术。基本上,这是:
-构建文档中 25,000 个最常见单词的列表;将它们按固定顺序排列(例如 0="the"、1="cat"、...)
- 对于每个文档,创建一个长度为 25,000 的向量。每个条目都是该单词在文档中出现的次数的计数。 (使用稀疏向量表示来提高效率)
- 取文档向量之间的余弦距离。如果距离很近,那么他们正在讨论同一领域。如果新文档位于带标签的训练示例的某个阈值内,请为其指定该标签。
这里有一个简短的讨论: http://en.wikipedia.org/wiki/Vector_space_model
这里有一个演示文稿(有关“分布式词表示”的幻灯片): http://web.stanford.edu/class/cs224u/
<强>2。命名实体识别
最细粒度的自然语言处理方法称为命名实体识别;此处提供了一个版本:
http://nlp.stanford.edu/software/CRF-NER.shtml
该算法将单词标记为特定实体(即苹果计算机)。您可以运行这样的算法并检查您选择的公司是否被提及。 NER 算法擅长识别一篇关于完全不同主题的文章中提及 Apple Computer 的内容(这对于上面的向量空间技术来说很难,它将文档视为一个整体)。但听起来您不需要那种粒度级别,因此第一种方法可能是最好的。
关于machine-learning - 自然语言处理中的文本标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685567/