machine-learning - 自然语言处理中的文本标记

标签 machine-learning nlp tagging

我有以下项目,我需要用与这些新闻项目相关的公司名称来标记新闻项目(新闻项目中提到了公司名称,在许多情况下,新闻项目的标题中提到了公司名称)。

例如:我有大约 2000 条新闻条目(XML 格式),标有公司名称及其与故事的相关级别(高/低)[这是手动完成的]。对于每个新闻项目,我都有以下字段:

story_ID,标题;故事文本;公司名称;相关性级别(H/L)

最后两个字段是手动输入的。

我需要自动化此标记过程,即我需要使用公司名称及其与高(H)/低(L)的相关性来标记传入的新闻项目。

注意:

  1. 一些新闻项目与任何公司都无关,因此没有被标记。

  2. 一些新闻项目与多个公司相关,因此这些新闻项目被标记为多个公司名称及其相应的相关级别。

我想知道我们可以使用什么机器学习算法。我对自然语言处理非常陌生。所以我无法掌握如何解决问题。我知道我需要使用多标签/多类分类,但我从来没有使用过多标签分类。

任何帮助将不胜感激。

谢谢。

最佳答案

<强>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/

相关文章:

python - 属性错误: 'list' object has no attribute 'lower' with CountVectorizer

machine-learning - 如何证明EM的收敛性?

java - 将英语句子变成一阶逻辑

language-agnostic - 在标签云中缩放标签

php - 在 PHP/Redis 上缓存标记有好的解决方案吗?

python - 使用二元、非二元变量的多元线性回归

java - OpenNLP 中术语 "Feature"是什么意思?或者在一般的 NLP 中。外行术语会很好

nlp - trait、freetext 和关键字之间有什么区别,我应该在 wit.ai 中使用哪个

java - Hibernate 中带注释的标记系统

machine-learning - 从 H2OAutoEncoderEstimator 中提取异常原因