【问题标题】:Remove SPECIAL stopwords for NLP删除 NLP 的特殊停用词
【发布时间】:2022-01-15 21:54:27
【问题描述】:

我有一个文本分类任务。我想将一组文档分为 4 个类别(商业、娱乐、健康、技术)。我为每个类别创建 wordcloud(我删除了停用词),每个 wordcloud 仍然包含停用词,例如(四月,星期二,昨天,一百)。我将 SpaCy、NLTK、gensim 中的停用词集合并为一组完整的停用词。我执行了“remove_stopwords”功能,但我意识到文本中保留了许多特殊的停用词。

问题1 我想删除以下内容:

位置停用词 - 国家名称、城市名称等

时间停用词 - 月份和日期的名称(一月、二月、星期一、星期二、今天、明天……)等

数字停用词 - 描述数字术语(百、千等)的词

手动执行此操作是一项耗时的任务。有没有更好的解决方案?

问题2

在另一个有 4 个类别(商业、科学、体育、世界)的文本分类问题中。以 worlds 列为例。使用“星期一,昨天”之类的词对“世界”类别中的文本进行分类是一种好习惯吗?

【问题讨论】:

  • 您在这里想要达到的目标是什么?你知道有一个叫做 king 的国家和一个叫做 monday 的公司,你确定要删除它们吗?请描述您试图解决的问题
  • @NaorTedgi 我编辑了问题并简要总结了问题
  • 好的,所以我假设您有每个类别的文档样本,您能否仅使用 unigram 和按 gram 显示基线结果而不删除此停用词?对于一个简单的算法,例如朴素的基础

标签: python nlp text-classification stop-words


【解决方案1】:

在 NLP 中,“停用词”没有明确的定义,更不用说“特殊”停用词了。该概念通常是指对文本语义没有贡献的常用词(通常是语法词),因此可以将其过滤掉。由于没有定义,因此可以随意定义停用词。

在频谱的另一端,稀有词可能会导致更严重的问题,因为分类器可能会错误地将它们与类相关联,即使它们大多是偶然发生的(这是过度拟合)。稀有词通常不称为“停用词”,但您提到的大多数示例可能都属于这一类,例如城市名称、月份、数字。通常需要过滤掉稀有词以避免过度拟合,通常通过指定最小频率(例如,在CountVectorizer 中使用参数min_df)。

因此,一般而言,该方法不是预先定义一个包含所有可能“停用词”的列表:这将是昂贵的、容易出错的,并且它违背了机器学习的目的,因为分类器的大部分工作都是事先手动完成的.分类器可以完美地处理出现频率足够高的词:如果这些词与类无关,它会忽略它们。但是,由于稀有词可能会出错,因此应该注意这一点……这比准备大量停用词列表要容易得多。

【讨论】:

    猜你喜欢
    • 2018-04-02
    • 2020-06-24
    • 2022-12-29
    • 2022-07-22
    • 2012-05-30
    • 2018-11-29
    • 1970-01-01
    • 2013-02-02
    • 2021-11-30
    相关资源
    最近更新 更多