使用Counter构建词汇表

本文介绍了如何使用Python的Counter类来构建词汇表。在处理文本数据时,无论是连续的文本还是二维列表形式的词汇,Counter都能有效地统计元素频率。通过most_common()方法,可以获取最常出现的词汇。此外,还讨论了如何在词汇表中添加'unk'和'pad'特殊标记,并确保它们的特定索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里只记录两种情况:

1

数据集是一段连续的文本,所有词汇放在一个list中(一维的)
text:
在这里插入图片描述
此时Counter(text),text可以是一个list,统计该list中所有元素出现的次数并返回一个dict
在这里插入图片描述
结合most_common()方法,就可构建词汇表:print(Counter(text).most_common(5))

在这里插入图片描述
(5)表示选取频率最高的5个元素,返回由(key,value)元组组成的list
再由二元组列表组成dictprint(dict(Counter(text).most_common(5)))
在这里插入图片描述

2

当所有的词汇不是放在一个一维的list中,而是一个二维list:
在这里插入图片描述
我们可以通过二层循环访问到其中的每一个元素,然后要把这些元素的值累计计数
先通过Counter()构建一个空字典(Couner对象):

sentences = [['BOS', '任', '何', '人', '都', '可', '以', '做', '到', '。', 'EOS'], 
### 关于清华大学文本分类数据集词汇表的获取 对于清华大学提供的文本分类数据集(如THUCNews),官方并未直接提供现成的词汇表文件。然而,可以通过以下方式自行构建词汇表: #### 构建词汇表的方法 1. **加载数据集** 首先需要下载并解压THUCNews数据子集[^1]。该数据集中包含了多个类别的新闻文章。 2. **分词处理** 使用中文分词工具(如`jieba`)对每篇文章进行分词操作。这一步骤可以有效提取出语料库中的词语集合[^2]。 3. **统计词频** 对所有文档中的词语进行频率统计,从而得到一个按出现次数排序的词汇列表。此过程有助于筛选高频词汇作为最终词汇表的一部分。 4. **保存为词汇表文件** 将上述获得的高频词汇存储到单独的文件中形成词汇表。通常采用纯文本格式(.txt),其中每一行代表一个独立词条及其对应的ID编号或者仅列出词条名称即可满足大多数应用场景需求。 以下是利用Python实现这一流程的一个简单示例代码片段: ```python import jieba from collections import Counter def build_vocab(data_path, vocab_file): word_counts = Counter() with open(vocab_file, 'w', encoding='utf-8') as vf: for category in os.listdir(data_path): cat_dir = os.path.join(data_path, category) if not os.path.isdir(cat_dir): continue for file_name in os.listdir(cat_dir): file_path = os.path.join(cat_dir, file_name) try: with open(file_path, 'r', encoding='utf-8') as f: content = f.read().strip() words = list(jieba.cut(content)) word_counts.update(words) except Exception as e: print(f"Error processing {file_path}: {e}") sorted_words = word_counts.most_common() # 获取按照频率排序后的单词 for idx,(word,freq) in enumerate(sorted_words,start=1): vf.write(f"{idx}\t{word}\n") build_vocab('path_to_thucnews_data','vocab.txt') ``` 以上脚本定义了一个函数 `build_vocab()` ,它接收两个参数:一个是包含原始新闻文本的数据路径;另一个是指定输出位置的词汇表文件名。执行完毕后会在指定目录下生成名为`vocab.txt` 的词汇表文件[^4]。 #### 注意事项 在实际操作过程中需要注意一些细节问题: - 确保安装好所需的第三方库(`jieba`)。 - 考虑去除停用词(stopwords),这样可以使模型更加专注于有意义的信息而不是常见的无意义词汇比如“的”,“了”等等。 - 如果内存资源有限,则可能需要调整批量读取策略以适应大规模数据集的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值