自然语言处理实验——使用jieba进行高频词汇提取

本文介绍了如何使用Python的jieba库对1000篇新闻文本进行分词,去除停用词,并计算出现频率最高的前10个高频词,展示了TF的使用方法。

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

一、实验目的:

通过jieba工具进行高频词提取的过程理解理解TF的使用方法,理解语料库的含义,熟悉jieba工具的使用。

  • 实验要求:

从1000篇真实的新闻文本中随机选择一篇,使用jieba工具进行分词,并找出出现次数排名前十的高频词。

注:数据由1000个文本文件组成,存储在data文件夹下。另外,实例中用到的停用词表stop_words.utf8也存储在data文件夹下。

实验代码:

import glob
import random
import jieba

def getContent(path):
    with open(path, encoding='utf-8', errors='ignore') as f:
        content = ''
        for line in f:
            # 去除空行
            line = line.strip()
            if line:  # 确保行不为空再添加到内容中
                content += line
        return content

def get_TF(words, topK=10):
    tf_dic = {}
    # 遍历words中的每个词,如果这个词在tf_dic中出现过,则令其加一
    for w in words:
        tf_dic[w] = tf_dic.get(w, 0) + 1
    # 将字典tf_dic排序后取出前topK
    return sorted(tf_dic.items(), key=lambda x: x[1], reverse=True)[:topK]

def stop_words(path):
    with open(path, encoding='utf-8') as f:
        return [l.strip() for l in f]

# 修改cut函数,path_to_corpus和path_to_stop_words是你的文件和停用词表所放的位置
def cut(content, path_to_stop_words):
    split_words = [x for x in jieba.cut(content) if x not in stop_words(path_to_stop_words)]
    return split_words

def main():
    # 指定corpus.txt文件的路径
    path_to_corpus = 'corpus.txt'
    # 指定stop_words.utf8文件的路径
    path_to_stop_words = 'stop_words.utf8'

    # 获取文件内容
    corpus_content = getContent(path_to_corpus)

    # 分词并去除停用词
    split_words = cut(corpus_content, path_to_stop_words)

    # 打印结果
    print('原始文本内容:')
    print(corpus_content)
    print('分词效果:')
    print('/'.join(split_words))
    print('TF(词频)前10的词为:')
    print(get_TF(split_words))

if __name__ == '__main__':
    main()

实验结果截图:

### 使用 Python 的 jieba 库进行文本分析 #### 导入库并初始化 为了使用 `jieba` 进行中文分词,首先需要安装并导入该库。可以通过 pip 安装最新版本的 `jieba`。 ```bash pip install jieba ``` 接着,在脚本中引入 `jieba`: ```python import jieba ``` #### 基础分词操作 对于简单的文本处理任务,可以直接调用 `jieba.lcut()` 函数来进行分词。此方法支持两种主要模式——默认的精确模式和全模式。 - **精确模式**:适合用于搜索引擎中的索引构建等场景,能够提供较为精准的词语切分[^2]。 ```python sentence = '当我开始爱自己的时候,不会在为别人的眼光而怯懦' words_list = jieba.lcut(sentence) print(words_list) # 输出: ['当', '我', '开始', '爱', '自己', '的', '时候', ... ] ``` - **全模式**:会尝试尽可能多地匹配可能存在的词汇组合,适用于获取更多的候选短语。 ```python sentence = '我家里有个人很酷' all_words_list = jieba.lcut(sentence, cut_all=True) print(all_words_list) # 输出: ['我家', '家里', '有', '个人', '很酷'] ``` #### 自定义字典与停用词表 除了基本功能外,还可以通过加载自定义字典来提高特定领域内的分词准确性;同时利用停用词表去除无意义的高频虚词,从而优化后续的数据挖掘过程。 ##### 加载自定义字典 如果希望增加某些专有名词或特殊表达式的识别能力,则可以在程序启动前先加载对应的扩展词典文件。 ```python jieba.load_userdict('path/to/user_dict.txt') ``` ##### 设置停用词过滤器 创建一个包含常见无关紧要词汇(如“的”,“了”等)的集合,并将其应用于最终的结果筛选阶段。 ```python stopwords_set = set() with open('path/to/stopwords_file.txt', encoding='utf8') as f: stopwords_set.update(line.strip() for line in f) filtered_words = [word for word in words_list if word not in stopwords_set] print(filtered_words) ``` #### 高级应用案例 基于上述基础技能,可以进一步探索更多高级特性,比如关键词提取、TF-IDF 权重计算以及主题模型训练等方面的应用实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值