【问题标题】:How to use bag of words or tf-idf to classify text如何使用词袋或 tf-idf 对文本进行分类
【发布时间】:2017-05-08 01:45:48
【问题描述】:

我有一个关于使用词袋或类似方法进行分类的一般性问题。

我有要分类的文本。我知道这些类,并且我知道文本的每个句子都属于一种类型的句子。例如句子 1 应该是命令,句子 2 应该是新闻,等等

所以我的想法是使用 n-gram 生成进行特征提取,我的想法是 n-gram 的单词可以帮助机器找到正确的类别。但是使用 Python 实现这个想法并不容易me.I 无法将概念与实施联系起来。例如,我不确定是否必须提供可能属于每个类别的所有可能的 POS 标签块,或者机器可以找到它们。此外,我觉得 n-gram 在这种分析中可能会有所帮助。但我不不知道怎么做。

如果能给我一些想法或告诉我应该采取哪些步骤来进行这种分类,那就太好了。

最好的

【问题讨论】:

  • 查看 NLTK 库。一般来说,在自己尝试之前总是搜索库。
  • 如果文本有某种结构(即标点符号、空格、制表符),那么使用它来解析文本比任何文本挖掘/NLP 方法要好得多,这很可能最好给出一个近似的答案。
  • @JohnD 文本基本上是一个包含多个句子的段落。所以没有制表符或空格。只有句点标记了句子。但这怎么可能呢?
  • scikit-learn 有很多很棒的机器学习算法,它们真的很容易使用,可能是另一个值得一试的东西。

标签: python machine-learning nlp text-classification


【解决方案1】:

要在此类分析中使用 ngram,您可以提取文本中出现的所有 ngram。然后,您可以通过以下方式计算每个句子中每个 ngram 的 TF-IDF:

  • TF:表示ngram在句子中出现的次数。
  • IDF:表示包含该 ngram 的句子的比例。

这将为您提供一个 TF-IDF 指标,用于衡量“给定所有句子的每个 ngram 对每个句子的价值”。一旦你有了 TF-IDF 指标,你就可以用标准的监督方法来输入你的句子。

对于每个类,您还可以基于您的 ngram、POS 标签,甚至依赖解析句子构建语言模型。然后,给定一个新句子,您可以计算从每个语言模型生成该句子的可能性。再说一次,您可以在监督学习方法中利用这些概率值。

我建议你看看以下文章:

1 - 在此处查看第 5.1 节以了解TF-IDF 的使用情况

2-本文档提供了language models的使用示例

祝你好运;)

【讨论】:

  • 谢谢。您是否考虑过使用 python 来使用 pos 标签构建语言模型的实现?
  • 我在 Python 方面的经验非常有限。但是,我已经在 J​​ava 中实现了我指导您使用的两种方法。我使用 OpenNLP 生成 POS 标签,使用 Stanford NLP 获取依赖解析句子,并使用 JGraphT 构建我的语言模型。如果您考虑使用 Java,Apache Lucene 是另一个为 NLP 目的提供有价值工具的库。
猜你喜欢
  • 2017-02-27
  • 2020-03-22
  • 2021-04-14
  • 2019-12-12
  • 2019-05-28
  • 1970-01-01
  • 2020-08-27
  • 2018-02-09
  • 2014-08-24
相关资源
最近更新 更多