从大型语料库中提取词频列表

Extracting Word Frequency List from a Large Corpus

我有一个名为 SubIMDB 的大型英语语料库,我想列出所有单词及其频率。意思是他们在整个语料库中出现了多少。这个频率列表应该有一些特点:

  1. boy 和 boys 之类的词或 get 和 getting 等其他语法特征,相同的词或词条,如果有 3 个 boy 和 2 个 boy,则应将它们列为 Boy 5。但是,不适用于像有不规则形状(或脚和脚)的 Go 和 Went
  2. 我想将这个频率列表用作一种字典,所以每当我在程序的另一部分看到一个词时,我想检查它在这个列表中的频率。所以,如果它可以在不查找所有内容的情况下进行搜索就更好了。

我的问题是:

  1. 第一个问题,我该怎么办?词形还原?还是词干?或者我怎样才能得到它?
  2. 其次,我应该将它设置成什么样的变量类型?比如字典或列表之类的?
  3. 保存在 csv 中最好吗?
  4. 是否有任何准备好的工具包可以python完成这一切?

非常感谢。

如上所述,问题是基于意见且含糊不清,但这里有一些方向:

  1. 两者都适用于您的情况。词干提取通常更简单、更快。我建议从 nltk's PorterStemmer. If you need sophisticated lemmatization, take a look at spaCy 开始,IMO 这是行业标准。
  2. 您需要字典,一旦您有了 stem/lemma,它就会为您提供分摊的 O(1) 查找。另外 counter 可能会有用。
  3. 取决于您的用例。 CSV比较"portable",pickle可能比较好用
  4. nltk 和 spaCy 中有很多 "building blocks",构建您的 pipeline/models 由您决定