365打卡第N2周: 构建词典

🍨 本文为🔗365天深度学习训练营中的学习记录博客
🍖 原作者:K同学啊

🏡 我的环境:

语言环境:Python3.10
编译器:Jupyter Lab
深度学习环境:torch==2.5.1    torchvision==0.20.1
------------------------------分割线---------------------------------

from torchtext.vocab import build_vocab_from_iterator
from collections import Counter
from torchtext.data.utils import get_tokenizer
import jieba, re, torch
 
data = [
    "我是K同学啊!",
    "我是一个深度学习博主,",
    "这是我的365天深度学习训练营教案,",
    "你可以通过百度、微信搜索关键字【K同学啊】找到我"
]
# 中文分词方法
tokenizer = jieba.lcut

# 加载自定义词典
jieba.load_userdict("C:/Users/scu/pytorch_study/weekn2/mydict.txt")

# 去除标点符号的函数
def remove_punctuation(text):
    return re.sub(r'[^\w\s]', '', text)

# 假设我们有一个停用词表,内容如下:
stopwords = set(["的", "这", "是"])
 
# 去除停用词的函数
def remove_stopwords(words):
    return [word for word in words if word not in stopwords]
# 定义一个迭代器来返回文本数据中的词汇
def yield_tokens(data_iter):
    for text in data_iter:
        # 去除标点符号
        text = remove_punctuation(text)
        # 分词并生成词汇
        text = tokenizer(text)
        # 去除停用词
        text = remove_stopwords(text)
        yield text
# 使用 build_vocab_from_iterator 来构建词汇表
vocab = build_vocab_from_iterator(yield_tokens(data), specials=["<unk>"])
 
# 将未知的词汇索引为 <unk>
vocab.set_default_index(vocab["<unk>"])
iterator = yield_tokens(data)

vocab = build_vocab_from_iterator(
    iterator,          # 必需:可迭代对象(如分词后的文本列表)
    min_freq=1,        # 可选:词汇最小出现频次,默认1
    specials=None,     # 可选:特殊符号列表(如 ['<unk>', '<pad>'])
    special_first=True, # 可选:是否将特殊符号放在词汇表开头
    max_tokens=None    # 可选:词汇表最大长度
)
# 打印词汇表中的内容
print("词典大小:", len(vocab))
print("词典内部映射:", vocab.get_stoi())
 
text = "这是我的365天深度学习训练营教案"
words = remove_stopwords(jieba.lcut(text))
 
print("\n")
print("jieba分词后的文本: ", jieba.lcut(text))
print("去除停用词后的文本: ", remove_stopwords(jieba.lcut(text)))
print("数字化后的文本: ", [vocab[word] for word in words])

最终运行结果:

-----------小结-----------------

在本周深度学习训练营的项目实践中,我掌握了利用自然语言处理相关方法进行文本预处理与词典构建。起初,我学会了从原始文本提取核心词汇,通过去除标点和常见无意义词,显著减少了数据噪声,这样一来模型能更好地聚焦于文本的有效信息。比如剔除“的”、“是”等停用词后,语义内容得以更加凸显,有助于模型捕捉到要点。

随后,我实践了jieba分词工具在中文文本处理中的应用,通过自定义词典,将“K同学啊”与“365天深度学习训练营”这类专有词条纳入词库,避免了分词过程中的误拆分。该方法对于领域文本处理尤为重要,能够提升分词的准确率。

最后,我还学习了如何用torchtext库的build_vocab_from_iterator函数生成词表,并将文本转化为数字序列。通过这一流程,我理解了文本如何转换为模型可接受的数值输入。例如,在将“这是我的365天深度学习训练营教案”分词、去除停用词后,顺利将其编码为数字序列,便于后续模型训练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值