用大量的停用词加速文本清理

时间:2017-07-11 05:45:36

标签: python nltk

我有一个文本数据库,并创建了一个小计数器来从整个数据库中获取字数。最常见的词是通常的嫌疑人('是','和'等),最不常见的是各种表情符号,美元价值,拼写错误等等。我想从文本中删除单词,以便我可以仅向量化不是最常见或最不常见的值。但是,非常罕见/异常单词的列表大约有600,000个项目:

   stopwords = []

    for key, value in ctr.items(): #ctr is a Counter() object of words in the entire corpus of text and their counts
        if value < 4:
            words += 1
            stopwords.append(key)

print (len(stopwords))
643392

这意味着,举一个标记一个文本的例子:

    start = time.time()

[word for word in word_tokenize(stemmer.stem(dataframe.text[20])) if word not in stopwords]

end = time.time()

print (end - start)

79.92309927940369

所以,一分钟的文字就过了一分钟。大约有160,000篇文章需要清理和矢量化。

是否有某种矢量化函数用于删除禁用词?我看到处理停用词的唯一方法是迭代地解决问题。按此速度,清理此文本大约需要三个月。

一如既往地感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

Word查找在Python中不应该花那么长时间。您无需向量化删除禁用词,只需修复代码即可。您没有显示您的代码,但stopwords可能是一个巨大的列表。将它转换为一组,你的问题应该消失。

stopwords = set(stopwords)

其次,你没有显示完整的代码,但我真的怀疑你有一个可以阻止多字符串的词干分析器。首先对字符串进行标记,然后对每个单词进行标记。