自然语言处理NLP 02统计语言模型

news2025/3/28 7:29:18

目录

jieba中文分词

TF-IDF

TF(词频,Term Frequency)

IDF(逆文档频率,Inverse Document Frequency)

总结

案例:从文本数据中提取并分析关键词的重要性


jieba中文分词

jieba 是一个强大的中文分词工具,支持自定义词汇和多种分词模式。通过 jieba.add_word()jieba.load_userdict() 可以灵活地处理新词汇。

举例:对"饺子导演的作品哪吒2要冲到全球动画票房榜首啦"这句话进行分词

import jieba
​
# 输入文本
str = '饺子导演的作品哪吒2要冲到全球动画票房榜首啦'
​
# 添加自定义词汇
jieba.add_word('全球动画票房')
jieba.add_word('哪吒2')
​
# 对文本进行分词
a = jieba.lcut(sentence=str)
​
# 输出分词结果
print(a)

运行结果 :

未导入分词库的效果

import jieba
str='饺子导演的作品哪吒2要冲到全球动画票房榜首啦'
a=jieba.lcut(sentence=str)
print(a)

运行结果: 

TF-IDF

TF-IDF 是自然语言处理(NLP)和信息检索中常用的统计方法,用于衡量一个词在文档中的重要性,广泛应用于文本分析和信息检索任务中。以下是它们的详细介绍:


TF(词频,Term Frequency)

  • 定义:词频是指一个词在文档中出现的频率。

  • 计算公式

  • 作用:衡量一个词在文档中的重要性。词频越高,说明该词在文档中越重要。

  • 局限性:一些常见词(如“的”、“是”)在所有文档中出现的频率都很高,但它们并不一定具有实际意义。


IDF(逆文档频率,Inverse Document Frequency)

  • 定义:逆文档频率衡量一个词在整个语料库中的普遍性。如果一个词在很多文档中都出现,它的 IDF 值会较低;反之,如果它只在少数文档中出现,它的 IDF 值会较高。

  • 计算公式

    • 其中,D 是语料库,t 是词。

  • 作用:降低常见词的重要性,提高罕见词的重要性。

  • 局限性:如果一个词在语料库中从未出现过,IDF 值会变得非常大,因此通常会对分母加 1 进行平滑处理。


TF-IDF(词频-逆文档频率)

  • 定义:TF-IDF 是 TF 和 IDF 的结合,用于衡量一个词在文档中的重要性。它既考虑了词在文档中的频率,也考虑了词在整个语料库中的普遍性。

  • 计算公式

        

  • 作用

    • 如果一个词在文档中出现的频率高(TF 值高),但在整个语料库中出现的频率低(IDF 值高),那么它的 TF-IDF 值会很高,说明这个词在文档中非常重要。

    • 如果一个词在文档中出现的频率高,但在整个语料库中出现的频率也很高(如“的”、“是”),那么它的 TF-IDF 值会较低,说明这个词并不重要。

  • 应用场景

    • 文本分类

    • 信息检索

    • 关键词提取

    • 文档相似度计算


总结

  • TF:衡量词在文档中的频率。

  • IDF:衡量词在整个语料库中的普遍性。

  • TF-IDF:结合 TF 和 IDF,衡量词在文档中的重要性。

案例:从文本数据中提取并分析关键词的重要性

具体来说,它通过计算 TF-IDF(词频-逆文档频率) 来评估每个词在文档中的重要性,并找出最相关的关键词。

从文本数据task.txt中提取并分析关键词的重要性,具体要求如下

读取文本数据

  • 代码从 task.txt 文件中读取文本内容,并将其存储为 corpus(语料库)。

  • 目的:准备待分析的文本数据。

计算 TF-IDF

  • 使用 TfidfVectorizer 将文本数据转换为 TF-IDF 矩阵并打印出来。

  • 目的:量化每个词在文档中的重要性。

提取特征词

  • 通过 get_feature_names() 方法获取所有特征词(即词汇表中的单词)并打印出来。

  • 目的:获取所有被分析的词。

转换为 DataFrame

  • 将 TF-IDF 矩阵转换为 DataFrame,行索引为特征词,列索引为文档,并打印出来。

  • 目的:方便后续对 TF-IDF 值进行操作和分析。

提取特定文档的特征值

  • 提取第 6 列(索引为 5)的特征值,并转换为列表。

  • 目的:分析某一特定文档中每个词的重要性。

创建字典并排序

  • 将特征词与对应的 TF-IDF 值存入字典,并按 TF-IDF 值进行降序排序。

  • 目的:找出该文档中最重要的关键词。

测试输出

  • 打印排序后的第 3 个元素(即第 3 个最重要的关键词及其 TF-IDF 值)。

  • 目的:展示该文档中第 3 个最相关的关键词。

# 导入所需的库
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
​
# 打开文件并读取内容
inFile = open(r'.\task.txt')  # 打开文件
corpus = inFile.readlines()  # 读取文件中的所有行,存储在列表中
​
# 初始化TF-IDF向量化器
vectorizer = TfidfVectorizer()
​
# 对语料库进行TF-IDF向量化
tfidf = vectorizer.fit_transform(corpus)  # 将文本数据转换为TF-IDF矩阵
print('*'*20+'打印TF-IDF矩阵'+'*'*20)
print(tfidf)  # 打印TF-IDF矩阵
​
# 获取特征词列表
wordlist = vectorizer.get_feature_names()  # 获取所有特征词(即词汇表中的单词)
print('*'*20+'打印特征词列表'+'*'*20)
print(wordlist)  # 打印特征词列表
​
# 将TF-IDF矩阵转换为DataFrame
df = pd.DataFrame(tfidf.T.todense(), index=wordlist)  # 将TF-IDF矩阵转置并转换为DataFrame,行索引为特征词
print('*'*20+'打印DataFrame'+'*'*20)
print(df)  # 打印DataFrame
​
# 获取第6列(索引为5)的特征值列表
featurelist = df.iloc[:, 5].to_list()  # 获取第6列的特征值,并转换为列表
​
# 创建一个字典,将特征词与对应的特征值关联起来
resdict = {}
for i in range(0, len(wordlist)):
    resdict[wordlist[i]] = featurelist[i]  # 将特征词与对应的特征值存入字典
​
# 对字典按特征值进行降序排序
resdict = sorted(resdict.items(), key=lambda x: x[1], reverse=True)  # 按特征值从大到小排序
​
# 打印排序后的第3个元素(索引为2)
print('*'*20+'打印排序后的第3个元素'+'*'*20)
print(resdict[2])  # 打印排序后的第3个元素(即第3个最重要的特征词及其TF-IDF值)
运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2301214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt开发④Qt常用控件_上_QWdget属性+按钮类控件

目录 1. 控件概述和发展 2. QWidget 核心属性 2.1 核心属性概览 2.2 enabled 是否可用 2.3 geometry 位置尺寸 2.4 windowTitle 标题 2.5 windowIcon 图标 2.6 windowOpacity 不透明度 2.7 cursor 光标 2.8 font 字体 2.9 toolTip 鼠标悬停提示 2.10 focusPolicy 焦…

Apache Struts RCE (CVE-2024-53677)

前言 对目前的Apache Struts RCE (CVE-2024-53677)的poc进行总结,由于只能单个ip验证,所以自己更改一下代码,实现:多线程读取url验证并保存,更改为中文解释 免责声明 请勿利用文章内的相关技术从事非法测试&#xf…

23. AI-大语言模型-DeepSeek

文章目录 前言一、DeepSeek是什么1. 简介2. 产品版本3. 特征4. 地址链接5. 三种访问方式1. 网页端和APP2. DeepSeek API 二、DeepSeek可以做什么1. 应用场景2. 文本生成1. 文本创作2. 摘要与改写3. 结构化生成 3. 自然语言理解与分析1. 语义分析2. 文本分类3. 知识推理 4. 编程…

成人床垫更新关于 SOR/2016-183 和《纺织品贴标和广告法规》的合规

成人床垫更新关于 SOR/2016-183 和《纺织品贴标和广告法规》的合规性声明 加拿大站成人床垫法规SOR/2016-183是强制性的 。为确保买家安全并遵守相关法规,亚马逊要求所有在加拿大销售的成人床垫必须符合《床垫法规》规定的安全标准,包括SOR/2016-183。此…

11.编写前端内容|vscode链接Linux|html|css|js(C++)

vscode链接服务器 安装VScode插件 Chinese (Simplified) (简体中⽂) Language Pack for Visual Studio CodeOpen in BrowserRemote SSH 在命令行输入 remote-ssh接着输入 打开配置文件,已经配置好主机 点击远程资源管理器可以找到 右键链接 输入密码 …

网工项目实践2.6 广域网需求分析及方案制定

本专栏持续更新,整一个专栏为一个大型复杂网络工程项目。阅读本文章之前务必先看《本专栏必读》。 全网拓扑展示 一.广域网互联方式 1.专线 优点 稳定 独享。绝对安全。可靠性高,带宽高,完全取决于终端接口。 缺点: 费用高。建设时间长。难…

大模型相关学习

知识科普 为什么不直接使用网页版 DeepSeek? 我们的需求:绝对的隐私保护和个性化知识库构建。场景:若希望大模型能根据企业规章制度来回答问题,一般需上传企业规章制度的附件,但仍可能面临问题。 数据隐私问题:联网使…

基于Java(JSP)+MySQL设计与实现的 MVC 鲜花订购系统

基于MVC的鲜花订购系统的设计与实现 摘 要 摘 要:鲜花订购系统与网络相结合,给用户提供更加周到和人性化的服务。网站模式为MVC模式,基于MySql数据库,采用Jsp,Session绘画跟踪、JavaScript等技术,实现了普通用户可以浏览、查看鲜…

网络原理-

文章目录 协议应用层传输层网络层 数据链路层 协议 在网络通信中,协议是非常重要的概念.协议就是一种约定. 在网络通信过程中,对协议进行了分层 接下来就按照顺序向大家介绍每一种核心的协议. 应用层 应用层是咱们程序员打交道最多的一层协议.应用层里有很多现成的协议,但…

解码 NLP:从萌芽到蓬勃的技术蜕变之旅

内容概况: 主要讲述NLP专栏的内容和NLP的发展及其在现代生活中的广泛应用。课程强调实践为主、理论为辅的学习方法,并通过多个生活场景展示了NLP技术的实际应用,如对话机器人、搜索引擎、翻译软件、电商推荐和智能客服等。 这边我就不多做自我…

Word中的文档信息域

Word中的文档信息域 DocProperty包含文档信息的多个属性, 也可以自定义属性. 查看文档预定义的自定义属性 【文件】→【信息】→【属性】→【高级属性】 参考链接 WORD中文档属性域DocProperty的应用-CSDN博客 第06套 Word_哔哩哔哩_bilibili

java机器学习计算指标动态阈值

java机器学习计算指标动态阈值 最近听到有的人说要做机器学习就一定要学Python,我想他们掌握的知道还不够系统全面。本文作者以动态阈值需求场景给大家介绍几种常用Java实现的机器学习库,包括使用开源库如Weka或Deeplearning4j(DL4J&#xf…

Note25021902_TIA Portal V18 WinCC BCA Ed 需要.NET 3.5 SP1

TIA Portal V18 WinCC BCA Ed 需要.NET 3.5 SP1 在安装TIA Portal V18时,遇到TIA Portal V18 WinCC BCA Ed 需要.NET 3.5 SP1. 请在此PC上中启用.NET 3.5 SP1; 检索: 电脑上如何启用 .NET 3.5 SP1 参考资料1: https://baijiahao.…

CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台

❝ "CHARMM-GUI EnzyDocker for Protein−Ligand Docking of Multiple Reactive States along a Reaction Coordinate in Enzymes"介绍了 CHARMM-GUI EnzyDocker,这是一个基于网络的计算平台,旨在简化和加速 EnzyDock 对接模拟的设置过程&…

阅读论文笔记《Translating Embeddings for Modeling Multi-relational Data》

目录 一、模型核心原理剖析二、实验设计与数据集选择三、实验结果深度解读(一)链接预测实验(二)关系分类实验(三)链接预测示例(四)泛化实验 四、模型优缺点总结(一&#…

​实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”​等荣誉

近日,浙江省经信厅正式公布《2024 年浙江省人工智能应用场景、应用标杆企业、人工智能服务商及 “数智优品” 名单》。 实在智能获评浙江省“人工智能服务商”,核心产品 “实在 Agent 智能体” 入选 “数智优品”。一同获此殊荣的还有宇树科技、云深处科…

跳表(Skip List)详解

一、什么是跳表? 跳表是一种基于有序链表的高效数据结构,通过建立多级索引实现快速查询。它在平均情况下支持O(log n)时间复杂度的搜索、插入和删除操作,性能接近平衡树,但实现更为简单。 二、核心原理 1. 层级结构 底层为完整…

轻松搭建本地大语言模型(一)Ollama安装与使用

Ollama 是一款开源的本地大语言模型运行框架,支持在 Windows、macOS 和 Linux 系统上运行,能够帮助用户轻松下载和使用各种大语言模型(例如deepseek、llama、qwen)。本文将详细介绍 Ollama 的安装步骤,帮助你快速搭建本…

kafka消费能力压测:使用官方工具

背景 在之前的业务场景中,我们发现Kafka的实际消费能力远低于预期。尽管我们使用了kafka-go组件并进行了相关测试,测试情况见《kafka-go:性能测试》这篇文章。但并未能准确找出消费能力低下的原因。 我们曾怀疑这可能是由我的电脑网络带宽问题或Kafka部…

[STM32 - 野火] - - - 固件库学习笔记 - - - 十六.在SRAM中调试代码

一、简介 在RAM中调试代码是一种常见的嵌入式开发技术,尤其适用于STM32等微控制器。它的核心思想是将程序代码和数据加载到微控制器的内部RAM(SRAM)中运行,而不是运行在Flash存储器中。这种方法在开发过程中具有显著的优势&#…