【问题标题】:Extract non-content English language words string - python [duplicate]提取非内容英语单词字符串 - python [重复]
【发布时间】:2014-05-19 05:44:26
【问题描述】:

我正在编写 Python 脚本,我想在其中从字符串中删除常见的英文单词,如“the”、“an”、“and”、“for”等等。目前我所做的是我已经制作了所有此类单词的本地列表,我只需调用remove() 将它们从字符串中删除。但我想要一些pythonish方式来实现这一点。已阅读有关 nltk 和 wordnet 的信息,但完全不知道我应该使用什么以及如何使用它。

编辑

嗯,我不明白为什么我的问题标记为重复并不意味着我知道停用词,现在我只想知道如何使用它.....问题是关于我的可以在我的场景中使用,答案是停用词......但是当我发布这个问题时,我对停用词一无所知。

【问题讨论】:

  • 寻找“去除停用词”...您的基本方法并没有那么错误...
  • 停用词在我的场景中可能有用...现在正在搜索它...thnx...有任何链接到停用词教程。>?
  • 没有教程对不起......但你所做的是正确的。只需获取一长串停用词,然后使用正则表达式模块将停用词替换为空字符串。
  • 好的,知道了……Alfe 的here 完成方式。

标签: python python-2.7 nltk wordnet


【解决方案1】:

我发现我要找的是这个:

from nltk.corpus import stopwords
my_stop_words = stopwords.words('english')

现在我可以从列表/字符串中删除或替换在 my_stop_words 中找到匹配项的单词,这是一个列表。

为此,我必须下载 NLTK for python 并使用它的下载器下载停用词包。

它还包含许多其他包,可用于 NLP 的不同情况,例如words,brown,wordnet etc.

【讨论】:

    【解决方案2】:

    这也可以:

    yourString = "an elevator is made for five people and it's fast"
    wordsToRemove = ["the ", "an ", "and ", "for "]
    
    for word in wordsToRemove:
        yourString = yourString .replace(word, "")
    

    【讨论】:

    • 是的,但这是我想避免的,因为我不想拿我的本地列表,因为它应该包含所有常见的英语单词....如果它是 4-5 个单词那么这种方式似乎是正确的......我将使用它提供的 nltk、语料库和停用词列表来做
    【解决方案3】:

    这样做。

    vocabular = set (english_dictionary)
    unique_words = [word for word in source_text.split() if word not in vocabular]
    

    它尽可能简单高效。如果您不需要独特单词的位置,也可以将它们设为set!操作员in 在集合上非常快(在列表和其他容器上速度很慢)

    【讨论】:

    • 我是否需要导入任何包才能使其工作..?
    • 无。 set 是一个内置容器,通过不存储对象的相对位置来实现快速搜索对象。第二行是一个简单的基本 Python“列表理解”运算符。
    • 什么是英语词典..?那应该是我的忽略词列表吗?
    • 是的。它可以是任何集合——一个列表、一个元组、一个每行一个单词的打开文件……
    • 好的...当我获得单词列表时这将很有用...目前我在我的代码中使用长本地列表...但我想要一些已经存在的东西在 python 中,来自nltk.corpus 模块的stopwords 之类的东西......但你的回答可以帮助我加快速度,就像在许多博客上读到的那样,使用 set 而不是 list 可以加快执行速度......
    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 2019-03-13
    • 2017-02-04
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多