从大型语料库中提取词频列表
Extracting Word Frequency List from a Large Corpus
我有一个名为 SubIMDB 的大型英语语料库,我想列出所有单词及其频率。意思是他们在整个语料库中出现了多少。这个频率列表应该有一些特点:
- boy 和 boys 之类的词或 get 和 getting 等其他语法特征,相同的词或词条,如果有 3 个 boy 和 2 个 boy,则应将它们列为 Boy 5。但是,不适用于像有不规则形状(或脚和脚)的 Go 和 Went
- 我想将这个频率列表用作一种字典,所以每当我在程序的另一部分看到一个词时,我想检查它在这个列表中的频率。所以,如果它可以在不查找所有内容的情况下进行搜索就更好了。
我的问题是:
- 第一个问题,我该怎么办?词形还原?还是词干?或者我怎样才能得到它?
- 其次,我应该将它设置成什么样的变量类型?比如字典或列表之类的?
- 保存在 csv 中最好吗?
- 是否有任何准备好的工具包可以python完成这一切?
非常感谢。
如上所述,问题是基于意见且含糊不清,但这里有一些方向:
- 两者都适用于您的情况。词干提取通常更简单、更快。我建议从 nltk's
PorterStemmer
. If you need sophisticated lemmatization, take a look at spaCy
开始,IMO 这是行业标准。
- 您需要字典,一旦您有了 stem/lemma,它就会为您提供分摊的 O(1) 查找。另外
counter
可能会有用。
- 取决于您的用例。 CSV比较"portable",
pickle
可能比较好用
- nltk 和 spaCy 中有很多 "building blocks",构建您的 pipeline/models 由您决定
我有一个名为 SubIMDB 的大型英语语料库,我想列出所有单词及其频率。意思是他们在整个语料库中出现了多少。这个频率列表应该有一些特点:
- boy 和 boys 之类的词或 get 和 getting 等其他语法特征,相同的词或词条,如果有 3 个 boy 和 2 个 boy,则应将它们列为 Boy 5。但是,不适用于像有不规则形状(或脚和脚)的 Go 和 Went
- 我想将这个频率列表用作一种字典,所以每当我在程序的另一部分看到一个词时,我想检查它在这个列表中的频率。所以,如果它可以在不查找所有内容的情况下进行搜索就更好了。
我的问题是:
- 第一个问题,我该怎么办?词形还原?还是词干?或者我怎样才能得到它?
- 其次,我应该将它设置成什么样的变量类型?比如字典或列表之类的?
- 保存在 csv 中最好吗?
- 是否有任何准备好的工具包可以python完成这一切?
非常感谢。
如上所述,问题是基于意见且含糊不清,但这里有一些方向:
- 两者都适用于您的情况。词干提取通常更简单、更快。我建议从 nltk's
PorterStemmer
. If you need sophisticated lemmatization, take a look atspaCy
开始,IMO 这是行业标准。 - 您需要字典,一旦您有了 stem/lemma,它就会为您提供分摊的 O(1) 查找。另外
counter
可能会有用。 - 取决于您的用例。 CSV比较"portable",
pickle
可能比较好用 - nltk 和 spaCy 中有很多 "building blocks",构建您的 pipeline/models 由您决定